aboutsummaryrefslogtreecommitdiffstats
path: root/tools/post-actions-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-09-29 11:18:21 -0700
committerAdam Soltys <[email protected]>2026-09-29 11:18:21 -0700
commit689e21d5e77765661c44d60c10b18134b995162a (patch)
tree2a6e878c9b8e400d3fcd60022d72f7d4bf3030ca /tools/post-actions-test.js
parentc7186db46f6e45969f01709bc4a0a9472a40dff1 (diff)
downloadcoinosv3-689e21d5e77765661c44d60c10b18134b995162a.tar.gz
coinosv3-689e21d5e77765661c44d60c10b18134b995162a.zip
Composers take pictures from the keyboard: the reply, post and chat fields are contenteditable.
Android keyboards (Gboard GIFs, stickers) only offer images to fields that accept them, and Chrome says so for contenteditable, never <textarea> — hence the greyed-out GIF key and "This app does not support images here". <coinos-text> (src/rich-text.js) is a contenteditable that acts like a textarea to the code around it (value, selectionStart/End, setSelection- Range, placeholder), keeps text plain, and hands any pasted/dropped/ keyboard picture to onMedia — the paperclip's upload. The morph syncs its value like a field's and leaves its own editing attributes alone. composer-media-test: types like a textarea, strips pasted formatting, a pasted GIF uploads and lands in the reply, still editable after repaint. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Du1qT1wbkYwYK6zkGH79Rp
Diffstat (limited to 'tools/post-actions-test.js')
-rw-r--r--tools/post-actions-test.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/post-actions-test.js b/tools/post-actions-test.js
index d8c4c84..17f8372 100644
--- a/tools/post-actions-test.js
+++ b/tools/post-actions-test.js
@@ -81,7 +81,7 @@ try {
// quoting carries the post into the composer as a nostr: reference
await page.evaluate(() => { const b = [...document.querySelectorAll('.note-act')].find((x) => x.getAttribute('aria-label') === 'Quote'); b.click(); });
await sleep(900);
- const draft = await page.evaluate(() => (document.querySelector('.chat-page textarea') || {}).value || '');
+ const draft = await page.evaluate(() => (document.querySelector('.chat-page coinos-text') || {}).value || '');
check('quoting opens the composer with the reference in it', /nostr:nevent1/.test(draft), draft.slice(0, 40) || 'empty');
// A reply can carry a picture, the same as a post can.