diff options
Diffstat (limited to 'src/features')
| -rw-r--r-- | src/features/messages.js | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/features/messages.js b/src/features/messages.js index f77b508..ef4819d 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -9923,6 +9923,10 @@ export function messagesFeature(ctx) { render(); } const closeMediaPager = () => ctx.goBack(() => { ui.mediaPager = null; }); + // Leaving the pager for another page (a profile, sign-in, the zap amount): + // only the feed's own render syncs the pager, and those pages don't paint + // the feed — so the overlay goes now, not on the next feed render. + const leavePager = () => { ui.mediaPager = null; if (pager) dropPager(); }; let pager = null; // the live pager: { el, scroller, kind, keys, cur, loud, io, near, tick } let pagerLoud = true; // sound on, unless the browser said no without a tap function syncMediaPager() { @@ -9967,20 +9971,21 @@ export function messagesFeature(ctx) { media, h('div', { class: 'mp-meta' }, h('div', { class: 'mp-left' }, - h('button', { class: 'mp-author', type: 'button', onClick: stop(() => { ui.mediaPager = null; openProfile(ev.pubkey); }) }, + h('button', { class: 'mp-author', type: 'button', onClick: stop(() => { leavePager(); openProfile(ev.pubkey); }) }, avatar(ev.pubkey, 'chat-avatar mini', false), h('span', {}, displayName(ev.pubkey))), caption ? h('div', { class: 'mp-caption', onClick: stop((e) => e.currentTarget.classList.toggle('open')) }, caption) : null), h('div', { class: 'mp-counts' }, h('button', { class: 'mp-like', type: 'button', 'aria-label': t('postLike'), onClick: stop(() => { - if (signinAsk()) { ui.mediaPager = null; render(); return; } + if (signinAsk()) { leavePager(); render(); return; } (myReactOn(ev.id) ? unreact(ev) : reactTo(ev, '❤️')).catch(() => {}).finally(() => pagerCounts(slide)); setTimeout(() => pagerCounts(slide), 50); }) }, h('span', { class: 'i', html: I_HEART(false) }), h('span', { class: 'n' })), h('button', { class: 'mp-zap', type: 'button', 'aria-label': t('zapTitle'), onClick: stop((e) => { - if (signinAsk()) { ui.mediaPager = null; render(); return; } + if (signinAsk()) { leavePager(); render(); return; } // the first zap ever asks for an amount on a page of its own - if (!(ctx.zapDefaultSat && ctx.zapDefaultSat())) ui.mediaPager = null; - zapNote(ev.pubkey, ev, e.currentTarget.getBoundingClientRect()); + const at = e.currentTarget.getBoundingClientRect(); + if (!(ctx.zapDefaultSat && ctx.zapDefaultSat())) leavePager(); + zapNote(ev.pubkey, ev, at); recheckZap(ev.id); setTimeout(() => pagerCounts(slide), 50); }) }, h('span', { class: 'i', html: I_ZAP }), h('span', { class: 'n' }))))); |
