diff --git a/src/managers/message-broadcast-manager.js b/src/managers/message-broadcast-manager.js index a4163f7..b263a52 100644 --- a/src/managers/message-broadcast-manager.js +++ b/src/managers/message-broadcast-manager.js @@ -55,6 +55,19 @@ export async function markBroadcastAsSeen(broadcastId) { } } +export async function markBroadcastAsDismissed(broadcastId) { + log(`Marking broadcast ${broadcastId} as dismissed.`); + const messageBroadcastLocalStoreName = await getMessageBroadcastLocalStoreName(); + if (!messageBroadcastLocalStoreName) return; + + const broadcast = await fetchMessageBroadcast(messageBroadcastLocalStoreName, broadcastId); + if (!broadcast) return; + + const broadcastShouldShowLocalStoreName = getBroadcastShouldShowLocalStoreName(messageBroadcastLocalStoreName, broadcastId); + setKeyToLocalStore(broadcastShouldShowLocalStoreName, false); + log(`Marked broadcast ${broadcastId} as dismissed and will not show again.`); +} + async function fetchMessageBroadcast(messageBroadcastLocalStoreName, broadcastId) { const broadcasts = getKeyFromLocalStore(messageBroadcastLocalStoreName); return broadcasts.find(message => message.queueId === broadcastId); diff --git a/src/managers/message-manager.js b/src/managers/message-manager.js index a28358f..e8ed14b 100644 --- a/src/managers/message-manager.js +++ b/src/managers/message-manager.js @@ -230,6 +230,7 @@ async function handleGistEvents(e) { case "close": await hideMessage(currentMessage); await removePersistentMessage(currentMessage); + await logBroadcastDismissedLocally(currentMessage); await checkMessageQueue(); break; case "showMessage": @@ -302,4 +303,11 @@ async function logUserMessageViewLocally(message) { } else { await markUserQueueMessageAsSeen(message.queueId); } -} \ No newline at end of file +} + +async function logBroadcastDismissedLocally(message) { + if (isMessageBroadcast(message)) { + log(`Logging broadcast dismissed locally for: ${message.queueId}`); + await markBroadcastAsDismissed(message.queueId); + } +}