feat: refactor sharedItemsStore to composition api store

Signed-off-by: Dorra Jaouad <dorra.jaoued7@gmail.com>

[skip ci]
This commit is contained in:
Dorra Jaouad 2025-12-08 11:10:24 +01:00 committed by backportbot[bot]
parent 305a84c495
commit 30a1dc52d4
2 changed files with 20 additions and 35 deletions

View file

@ -58,23 +58,6 @@ describe('sharedItemsStore', () => {
expect(sharedItemsStore.sharedItems(token)).toEqual({ media: { 1: message } })
})
it('does not overwrite store with overview response', async () => {
// Arrange
const message = {
id: 100,
token,
message: '{file}',
messageParameters: { file: { mimetype: 'image/jpeg' } },
}
sharedItemsStore.addSharedItemFromMessage(token, message)
// Act
sharedItemsStore.addSharedItemsFromOverview(token, payloadOverview)
// Assert
expect(sharedItemsStore.sharedItems(token).media).toEqual({ 100: message })
})
it('processes an array of messages and add each unique item only once', () => {
// Arrange
const message1 = {
@ -103,10 +86,10 @@ describe('sharedItemsStore', () => {
// Arrange
const response = generateOCSResponse({ payload: payloadOverview })
getSharedItemsOverview.mockResolvedValue(response)
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Act
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Assert
expect(getSharedItemsOverview).toHaveBeenCalledTimes(1)
@ -120,7 +103,7 @@ describe('sharedItemsStore', () => {
getSharedItemsOverview.mockResolvedValueOnce(response)
// Act: load sharedItemsOverview from server
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Assert
expect(getSharedItemsOverview).toHaveBeenCalledWith(token, limitOverview)
@ -141,10 +124,10 @@ describe('sharedItemsStore', () => {
getSharedItemsOverview.mockResolvedValueOnce(responseOverview)
const response = generateOCSResponse({ payload: { 1: message } })
getSharedItems.mockResolvedValueOnce(response)
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Act: load sharedItemsOverview from server
await sharedItemsStore.getSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
await sharedItemsStore.fetchSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
// Assert
expect(getSharedItems).toHaveBeenCalledWith(token, SHARED_ITEM.TYPES.MEDIA, 100, limitGeneral)
@ -157,10 +140,10 @@ describe('sharedItemsStore', () => {
getSharedItemsOverview.mockResolvedValueOnce(responseOverview)
const response = generateOCSResponse({ payload: [] })
getSharedItems.mockResolvedValueOnce(response)
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Act: load sharedItemsOverview from server
const output = await sharedItemsStore.getSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
const output = await sharedItemsStore.fetchSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
// Assert
expect(getSharedItems).toHaveBeenCalledWith(token, SHARED_ITEM.TYPES.MEDIA, 100, limitGeneral)
@ -180,7 +163,7 @@ describe('sharedItemsStore', () => {
getSharedItemsOverview.mockRejectedValueOnce(response)
// Act
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
// Assert: store hasn't changed
expect(sharedItemsStore.sharedItems(token)).toEqual({})
@ -188,7 +171,7 @@ describe('sharedItemsStore', () => {
it('skips server request without initially loaded overview', async () => {
// Act
await sharedItemsStore.getSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
await sharedItemsStore.fetchSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
// Assert: store hasn't changed
expect(getSharedItems).not.toHaveBeenCalled()
@ -199,13 +182,13 @@ describe('sharedItemsStore', () => {
// Arrange
const responseOverview = generateOCSResponse({ payload: payloadOverview })
getSharedItemsOverview.mockResolvedValueOnce(responseOverview)
await sharedItemsStore.getSharedItemsOverview(token)
await sharedItemsStore.fetchSharedItemsOverview(token)
const response = generateOCSErrorResponse({ status: 404, payload: [] })
getSharedItems.mockRejectedValueOnce(response)
// Act
await sharedItemsStore.getSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
await sharedItemsStore.fetchSharedItems(token, SHARED_ITEM.TYPES.MEDIA)
// Assert: store hasn't changed
expect(sharedItemsStore.sharedItems(token)).toEqual(result)

View file

@ -32,9 +32,6 @@ import { getItemTypeFromMessage } from '../utils/getItemTypeFromMessage.ts'
/**
* Store for shared items shown in RightSidebar
*
* @param {string} id store name
* @param {State} options.state store state structure
*/
export const useSharedItemsStore = defineStore('sharedItems', {
state: () => ({
@ -47,10 +44,10 @@ export const useSharedItemsStore = defineStore('sharedItems', {
if (!state.sharedItemsPool[token]) {
Vue.set(state.sharedItemsPool, token, {})
}
}
return state.sharedItemsPool[token]
},
},
overviewLoaded[token] = true
}
actions: {
checkForExistence(token, type) {
@ -181,7 +178,12 @@ export const useSharedItemsStore = defineStore('sharedItems', {
console.error(error)
return { hasMoreItems: false, messages: [] }
}
},
return { hasMoreItems: messages.length >= limit, messages }
} catch (error) {
console.error(error)
return { hasMoreItems: false, messages: [] }
}
}
/**
* @param {Token} token conversation token