Skip to content

Commit a470d6a

Browse files
committed
marked retrieved missed messages
1 parent f2f55c7 commit a470d6a

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

index.html

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,19 @@
507507
opacity: 0.9;
508508
}
509509

510+
.missing-messages-window-message.received {
511+
text-decoration: line-through;
512+
opacity: 0.5;
513+
}
514+
515+
.missing-messages-window-message.received .message-id {
516+
color: #885500;
517+
}
518+
519+
.missing-messages-window-message.received .retrieval-hint {
520+
color: #884400;
521+
}
522+
510523
.system-window.minimized .system-window-content,
511524
.missing-messages-window.minimized .missing-messages-window-content {
512525
display: none;
@@ -624,6 +637,7 @@
624637
this.seenMessages = new Set();
625638
this.missingMessagesCount = 0;
626639
this.seenMissingMessages = new Set(); // Track unique missing messages
640+
this.missingMessagesByHint = new Map(); // Map retrieval hint to message element for crossing out
627641

628642
this.initProtobuf();
629643
this.initElements();
@@ -1161,6 +1175,12 @@
11611175
try {
11621176
if (!wakuMessage.payload || !wakuMessage.payload.length || !this.Chat2Message) return;
11631177

1178+
// Check if this message's hash matches any missing message retrieval hints
1179+
if (wakuMessage.hash) {
1180+
const hashHex = this.bytesToHex(wakuMessage.hash);
1181+
this.markMissingMessageAsReceived(hashHex);
1182+
}
1183+
11641184
// Abusing an API :]
11651185
const messageId = ReliableChannel.getMessageId(wakuMessage.payload)
11661186
// We already processed this message
@@ -1308,6 +1328,19 @@
13081328
this.chatContainer.scrollTop = this.chatContainer.scrollHeight;
13091329
}
13101330

1331+
markMissingMessageAsReceived(hashHex) {
1332+
// Check if we have a missing message with this retrieval hint
1333+
const messageElement = this.missingMessagesByHint.get(hashHex);
1334+
if (messageElement && !messageElement.classList.contains('received')) {
1335+
// Cross out the message
1336+
messageElement.classList.add('received');
1337+
1338+
// Log for debugging
1339+
console.log(`Missing message received: ${hashHex.substring(0, 12)}...`);
1340+
this.addSystemMessage(`Missing message recovered: ${hashHex.substring(0, 12)}...`);
1341+
}
1342+
}
1343+
13111344
handleMissingMessages(missingMessages) {
13121345
if (!missingMessages || missingMessages.length === 0) return;
13131346

@@ -1344,6 +1377,11 @@
13441377
messageElement.dataset.fullId = messageIdHex;
13451378
messageElement.dataset.fullHint = retrievalHintHex;
13461379

1380+
// Store in map for quick lookup by retrieval hint
1381+
if (retrievalHintHex !== 'N/A') {
1382+
this.missingMessagesByHint.set(retrievalHintHex, messageElement);
1383+
}
1384+
13471385
this.missingMessagesContent.appendChild(messageElement);
13481386

13491387
// Auto-scroll to bottom of missing messages window
@@ -1355,10 +1393,14 @@
13551393
const removedMessage = messages[0];
13561394
// Remove from seen set when removing from display
13571395
const removedId = removedMessage.dataset.fullId;
1396+
const removedHint = removedMessage.dataset.fullHint;
13581397
if (removedId) {
13591398
this.seenMissingMessages.delete(removedId);
13601399
this.missingMessagesCount--;
13611400
}
1401+
if (removedHint && removedHint !== 'N/A') {
1402+
this.missingMessagesByHint.delete(removedHint);
1403+
}
13621404
removedMessage.remove();
13631405
}
13641406
});

0 commit comments

Comments
 (0)