From ec76ba47da8ed4b5c46fa09822655ac29a81d300 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 22 Sep 2026 11:34:19 -0700 Subject: Communities: Leave lives in the room header, not the invite panel. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01Tmfg8k5f3TbNJS34qiqHAp --- src/features/messages.js | 18 +++++++++--------- src/i18n.js | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/features/messages.js b/src/features/messages.js index e5bc300..ed70608 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -6840,7 +6840,14 @@ export function messagesFeature(ctx) { h('button', { class: 'btn-sm', title: t('msgInviteTitle'), onClick: () => { ui.msgInvitePanel = !ui.msgInvitePanel; render(); }, - }, t('msgAddPerson')))), + }, t('msgAddPerson')), + // the door out — in the header where anyone looks for it, not in + // the invite panel; one tap arms it, the second leaves + jm.community_id === COMMUNITY.community_id ? null : h('button', { + class: 'btn-sm' + (ui.msgLeaveArm ? ' btn-danger' : ''), title: t('msgLeave'), 'aria-label': t('msgLeave'), + onClick: () => { if (ui.msgLeaveArm) leaveCommunity(room); else { ui.msgLeaveArm = true; render(); } }, + html: ui.msgLeaveArm ? null : '', + }, ui.msgLeaveArm ? t('msgLeaveConfirmShort') : null))), ui.msgInvitePanel ? invitePanel(room) : null, ui.msgMembers ? memberPanel(room, members) : null, h('div', { @@ -6932,14 +6939,7 @@ export function messagesFeature(ctx) { }, t('msgNewChannel')))) : null, // leaving discards the keys on this identity — two taps, default community exempt - builtin ? null : h('div', { class: 'row' }, - h('button', { - class: 'btn-ghost btn-sm ' + (ui.msgLeaveArm ? 'btn-danger' : ''), - onClick: () => { - if (ui.msgLeaveArm) leaveCommunity(room); - else { ui.msgLeaveArm = true; render(); } - }, - }, ui.msgLeaveArm ? t('msgLeaveConfirm') : t('msgLeave')))); + null); } // ---- dm thread ---------------------------------------------------------- diff --git a/src/i18n.js b/src/i18n.js index d1a6962..2cc201a 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -507,6 +507,7 @@ const STR = { msgInviteSent: 'Invite sent', msgLeave: 'Leave community', msgLeaveConfirm: 'Really leave? Rejoining needs a new invite', + msgLeaveConfirmShort: 'Leave?', nostrSettings: 'Nostr', settingsWallet: 'Wallet', settingsPayments: 'Payments', -- cgit v1.2.3