diff options
Diffstat (limited to 'src/features')
| -rw-r--r-- | src/features/ark.js | 2 | ||||
| -rw-r--r-- | src/features/messages.js | 27 |
2 files changed, 22 insertions, 7 deletions
diff --git a/src/features/ark.js b/src/features/ark.js index d98e92e..4d9242c 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -1372,7 +1372,7 @@ export function arkFeature(ctx) { h('span', { class: 'spinner sm' }), h('span', { class: 'small muted' }, t('arkConnecting')))) : h('div', { class: 'col', style: 'gap:8px' }, h('p', { class: 'small muted', style: 'margin:0' }, t('moveToSavingDesc')), - h('div', { class: 'small faint' }, t('moveAvailable', { n: fmtAmount(b ? b.spendableSat : 0) + ' ' + unitLabel() })), + // no "X sats in Spending" line — the balance sits right above on this card h('button', { class: 'btn-block', disabled: !b || !b.spendableSat, onClick: () => { ui.arkMoveOpen = false; ui.arkExitPage = true; ui.arkError = ''; render(); }, diff --git a/src/features/messages.js b/src/features/messages.js index 2484b46..25e6f7a 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -40,6 +40,7 @@ const COMMUNITY = { }; const EPOCH = 0; +const CHAT_ICON = '<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:block"><path d="M21 11.5a8.38 8.38 0 0 1-8.5 8.5 8.5 8.5 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 8.5-8.5 8.38 8.38 0 0 1 8.5 8.5z"/></svg>'; const DM_RELAYS = ['wss://relay.coinos.io', 'wss://nos.lol']; const APP_BASE = 'https://v3.coinos.io'; const CACHE_MAX = 50; // messages kept per channel / per DM thread in feature state @@ -104,7 +105,7 @@ export function messagesFeature(ctx) { if (repaintTimer) return; repaintTimer = setTimeout(() => { repaintTimer = null; - if (ui.screen === 'wallet' && ui.tab === 'messages') render(); + if (ui.screen === 'wallet' && ui.chatOpen) render(); }, 80); }; @@ -785,6 +786,11 @@ export function messagesFeature(ctx) { const kids = []; + // Chat takes the whole screen, so home carries the way back to the wallet. + kids.push(h('div', { class: 'row gap6', style: 'align-items:center' }, + backBtn(() => { ui.chatOpen = false; render(); }), + h('h3', { style: 'margin:0' }, t('tabMessages')))); + if (pendingLink) kids.push(linkInviteCard()); for (const [rid, inv] of pendingDirect) kids.push(directInviteCard(rid, inv)); @@ -1052,15 +1058,24 @@ export function messagesFeature(ctx) { return { id: 'messages', - tabs: () => [['messages', t('tabMessages')]], - tabContent(tab) { - if (tab !== 'messages') return null; - return messagesTab(); + // Chat lives behind a header button and takes over the whole screen — + // no balance card, no tabs; each view carries its own way back. + headerButtons() { + return [h('button', { + class: 'btn-sm', title: t('tabMessages'), + onClick: () => { ui.chatOpen = true; render(); }, + }, h('span', { html: CHAT_ICON }))]; + }, + screenView() { + if (!ui.chatOpen || ui.screen !== 'wallet') return null; + return h('div', { class: 'col', style: 'gap:16px' }, + ctx.brandHeader(false), + messagesTab()); }, init() { if (urlInvite && !pendingLink) { loadLinkInvite(urlInvite); - setTimeout(() => { ui.tab = 'messages'; ui.msgView = 'home'; render(); }, 0); + setTimeout(() => { ui.chatOpen = true; ui.msgView = 'home'; render(); }, 0); } startDMs(); syncLists().catch(() => {}); |
