From b580be72c4b5f473f0a83fe358facca0aacb3ab6 Mon Sep 17 00:00:00 2001 From: Dorra Jaouad Date: Sat, 13 Dec 2025 17:14:26 +0100 Subject: [PATCH] fix: update shared items store correctly Signed-off-by: Dorra Jaouad --- src/store/messagesStore.js | 4 ++++ src/stores/sharedItems.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/store/messagesStore.js b/src/store/messagesStore.js index 14fb8c15ae..5797b167c2 100644 --- a/src/store/messagesStore.js +++ b/src/store/messagesStore.js @@ -1380,6 +1380,7 @@ const actions = { return } const chatExtrasStore = useChatExtrasStore() + const sharedItemsStore = useSharedItemsStore() const chatStore = useChatStore() const timestamp = convertToUnix(Date.now()) @@ -1390,8 +1391,11 @@ const actions = { } context.commit('deleteMessage', { token, id: message.id }) chatStore.removeMessagesFromChatBlocks(token, message.id) + sharedItemsStore.deleteSharedItemFromMessage(token, message.id) } }) + + sharedItemsStore.purgeExpiredSharedItems(token, timestamp) }, async easeMessageList(context, { token }) { diff --git a/src/stores/sharedItems.ts b/src/stores/sharedItems.ts index e9aa56b203..f20ef65882 100644 --- a/src/stores/sharedItems.ts +++ b/src/stores/sharedItems.ts @@ -151,6 +151,33 @@ export const useSharedItemsStore = defineStore('sharedItems', () => { } } + /** + * Purge expired shared items from the store + * + * @param token + * @param timestamp + */ + function purgeExpiredSharedItems(token: string, timestamp: number) { + if (!sharedItemsPool[token]) { + return + } + + for (const type of Object.keys(sharedItemsPool[token])) { + for (const id of Object.keys(sharedItemsPool[token][type])) { + const message = sharedItemsPool[token][type][+id] + if (message.expirationTimestamp && message.expirationTimestamp < timestamp) { + delete sharedItemsPool[token][type][+id] + } + } + if (Object.keys(sharedItemsPool[token][type]).length === 0) { + delete sharedItemsPool[token][type] + } + } + if (Object.keys(sharedItemsPool[token]).length === 0) { + delete sharedItemsPool[token] + } + } + /** * Fetch shared items of a specific type for a conversation * @@ -206,6 +233,7 @@ export const useSharedItemsStore = defineStore('sharedItems', () => { addSharedItemFromMessage, deleteSharedItemFromMessage, addSharedItemsFromMessages, + purgeExpiredSharedItems, purgeSharedItemsStore, fetchSharedItems, fetchSharedItemsOverview,