fixes
This commit is contained in:
1 parent
22f73ab3b9
commit
f886ded054
3 files changed
+37
-20
No files matched your search
@@ -101,13 +101,32 @@ async function toggleFlyout() {
|
||||
|
||||
async function openFlyout() {
|
||||
$('chat-flyout').classList.remove('hidden');
|
||||
// Capture blink state BEFORE we clear it — it tells us a peer wrote since last close
|
||||
const wasBlinking = $('chat-footer-btn')?.classList.contains('blinking');
|
||||
stopBlink();
|
||||
showListView();
|
||||
pollIntervalMs = POLL_OPEN_MS;
|
||||
restartPoll();
|
||||
await loadConversations();
|
||||
await pollOnce(); // immediate refresh on open
|
||||
await loadConversations();
|
||||
|
||||
// Pick the right initial view:
|
||||
// 1. If blinking → newest peer with unread (= someone wrote to us)
|
||||
// 2. Else → last peer the user opened manually (persisted)
|
||||
// 3. Else → list view
|
||||
let target = null;
|
||||
if (wasBlinking) {
|
||||
const unread = conversations
|
||||
.filter(c => parseInt(c.unread) > 0)
|
||||
.sort((a, b) => String(b.last_at).localeCompare(String(a.last_at)));
|
||||
if (unread.length) target = unread[0].peer;
|
||||
}
|
||||
if (!target) {
|
||||
const lastPeer = localStorage.getItem('chat-last-peer');
|
||||
if (lastPeer && conversations.some(c => c.peer === lastPeer)) target = lastPeer;
|
||||
}
|
||||
if (target) await openConversation(target);
|
||||
else showListView();
|
||||
}
|
||||
|
||||
function closeFlyout() {
|
||||
@@ -190,6 +209,7 @@ function renderConversations() {
|
||||
|
||||
async function openConversation(peer) {
|
||||
showThreadView(peer);
|
||||
localStorage.setItem('chat-last-peer', peer);
|
||||
await loadThread(peer);
|
||||
// Mark all incoming as read
|
||||
await hyprcrd.api('api/chat/read', { method: 'POST', body: { peer } }).catch(() => {});
|
||||
|
||||
Reference in new issue
Block a user