aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/messages.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-18 23:41:23 -0700
committerAdam Soltys <[email protected]>2026-10-18 23:41:23 -0700
commit1f0b1cd2af2c2391d6706f6194bdb65c85f14ca6 (patch)
tree3511e22c11b83141e60248cafd336aa91783fd4c /src/features/messages.js
parenta99d37ca24e6484d8c2edd2ec7ac7dcaf4f29809 (diff)
downloadcoinosv3-1f0b1cd2af2c2391d6706f6194bdb65c85f14ca6.tar.gz
coinosv3-1f0b1cd2af2c2391d6706f6194bdb65c85f14ca6.zip
Leaving a stream: Feed (and the rest of the nav) leaves it on the first tap — with the feed under the stream, Feed thought it was already there and only scrolled the hidden feed, and the nav's page-leaving didn't close the stream or Go live. On the stream's own page, the host's ringed face opens their profile instead of the same stream again.
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_013ZDf1cyCQLkfjftYhymZAg
Diffstat (limited to 'src/features/messages.js')
-rw-r--r--src/features/messages.js10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/features/messages.js b/src/features/messages.js
index 695cba2..a1b49d0 100644
--- a/src/features/messages.js
+++ b/src/features/messages.js
@@ -3925,7 +3925,8 @@ export function messagesFeature(ctx) {
try { on = liveHostNow(pk); } catch {} // (an avatar drawn while the feature is still being built)
if (on) {
node.classList.add('live-ring');
- if (clickable) node.onclick = (e) => { e.stopPropagation(); openLive(on); };
+ // (on that stream's own page, the face is a way out: to their profile)
+ if (clickable) node.onclick = (e) => { e.stopPropagation(); if (ui.liveStream && ui.liveStream.a === liveAddr(on)) openProfile(pk); else openLive(on); };
}
return hook('wrapAvatar', pk, node) || hatStamp(pk, node) || node;
};
@@ -12897,12 +12898,15 @@ export function messagesFeature(ctx) {
function appBottomNav() {
const visitor = isVisitor();
const me = !visitor && ctx.shownPubkey ? ctx.shownPubkey() : null;
- const active = ui.userSearch ? 'search' : me && ui.profilePk === me && !ui.noteThread ? 'profile' : ui.noteThread || ui.profilePk ? 'feed' : ui.chatOpen
+ // a stream (or Go live) over the shell is a place of its own: no button
+ // is "here", so the one tapped goes there (Feed under a stream thought it
+ // was home and only scrolled the hidden feed)
+ const active = ui.liveStream || ui.goLive ? 'live' : ui.userSearch ? 'search' : me && ui.profilePk === me && !ui.noteThread ? 'profile' : ui.noteThread || ui.profilePk ? 'feed' : ui.chatOpen
? ui.msgView === 'feed' ? 'feed' : ui.msgView === 'notifs' ? 'notifs' : 'messages' : ui.tab === 'settings' ? 'settings' : 'wallet';
const leavePage = () => {
stopFeedWatch(); stopNotifWatch();
// Top-level destinations must leave any feature page covering the shell.
- for (const key of ['profilePk', 'profEdit', 'profEditFilled', 'profOverThread', 'noteThread', 'userSearch',
+ for (const key of ['profilePk', 'profEdit', 'profEditFilled', 'profOverThread', 'noteThread', 'liveStream', 'goLive', 'liveReport', 'userSearch',
'zapSetup', 'hatShop', 'feedEdit', 'feedMenu', 'feedRelayEdit', 'noteSheet', 'reactPick', 'reportSheet',
'msgReplyTo', 'msgSheet', 'arkCoinsPage', 'arkExitPage', 'nameEditOpen', 'nostrReconnect', 'nostrLoginOpen',
'pos', 'lockedGift', 'viewGift', 'claimChoose', 'signinAsk']) ui[key] = null;