Skip to content

Commit c2ad769

Browse files
authored
Merge pull request #16573 from nextcloud/backport/16543/stable31
2 parents 3a1ee17 + 6b79164 commit c2ad769

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/store/messagesStore.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,14 +479,18 @@ const mutations = {
479479
return
480480
}
481481

482+
const sharedItemsStore = useSharedItemsStore()
482483
const timestamp = convertToUnix(Date.now())
483484
const messageIds = Object.keys(state.messages[token])
484485
messageIds.forEach((messageId) => {
485486
if (state.messages[token][messageId].expirationTimestamp
486487
&& timestamp > state.messages[token][messageId].expirationTimestamp) {
487488
Vue.delete(state.messages[token], messageId)
489+
sharedItemsStore.deleteSharedItemFromMessage(token, +messageId)
488490
}
489491
})
492+
493+
sharedItemsStore.purgeExpiredSharedItems(token, timestamp)
490494
},
491495

492496
easeMessageList(state, { token, lastReadMessage }) {

src/stores/sharedItems.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,33 @@ export const useSharedItemsStore = defineStore('sharedItems', {
157157
}
158158
},
159159

160+
/**
161+
* Purge expired shared items from the store
162+
*
163+
* @param {Token} token conversation token
164+
* @param {number} timestamp current timestamp
165+
*/
166+
purgeExpiredSharedItems(token, timestamp) {
167+
if (!this.sharedItemsPool[token]) {
168+
return
169+
}
170+
171+
for (const type of Object.keys(this.sharedItemsPool[token])) {
172+
for (const id of Object.keys(this.sharedItemsPool[token][type])) {
173+
const message = this.sharedItemsPool[token][type][+id]
174+
if (message.expirationTimestamp && message.expirationTimestamp < timestamp) {
175+
delete this.sharedItemsPool[token][type][+id]
176+
}
177+
}
178+
if (Object.keys(this.sharedItemsPool[token][type]).length === 0) {
179+
delete this.sharedItemsPool[token][type]
180+
}
181+
}
182+
if (Object.keys(this.sharedItemsPool[token]).length === 0) {
183+
delete this.sharedItemsPool[token]
184+
}
185+
},
186+
160187
/**
161188
* @param {Token} token conversation token
162189
* @param {Type} type type of shared item

0 commit comments

Comments
 (0)