diff --git a/rsconcept/frontend/src/features/library/backend/use-library.tsx b/rsconcept/frontend/src/features/library/backend/use-library.tsx index e1fe494b..d61314bd 100644 --- a/rsconcept/frontend/src/features/library/backend/use-library.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-library.tsx @@ -7,6 +7,11 @@ import { usePreferencesStore } from '@/stores/preferences'; import { libraryApi } from './api'; +export function useLibraryListKey() { + const adminMode = usePreferencesStore(state => state.adminMode); + return libraryApi.getLibraryQueryOptions({ isAdmin: adminMode }).queryKey; +} + export function useLibrarySuspense() { const adminMode = usePreferencesStore(state => state.adminMode); const { user } = useAuthSuspense(); diff --git a/rsconcept/frontend/src/features/library/backend/use-set-access-policy.tsx b/rsconcept/frontend/src/features/library/backend/use-set-access-policy.tsx index 16d4f83f..ae6f0dcb 100644 --- a/rsconcept/frontend/src/features/library/backend/use-set-access-policy.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-set-access-policy.tsx @@ -7,9 +7,11 @@ import { KEYS } from '@/backend/configuration'; import { libraryApi } from './api'; import { type AccessPolicy, type ILibraryItem } from './types'; +import { useLibraryListKey } from './use-library'; export const useSetAccessPolicy = () => { const client = useQueryClient(); + const libraryKey = useLibraryListKey(); const mutation = useMutation({ mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'set-location'], mutationFn: libraryApi.setAccessPolicy, @@ -36,7 +38,7 @@ export const useSetAccessPolicy = () => { client.setQueryData(rsKey, (prev: IRSFormDTO | undefined) => !prev ? undefined : { ...prev, access_policy: variables.policy } ); - client.setQueryData(libraryApi.libraryListKey, (prev: ILibraryItem[] | undefined) => + client.setQueryData(libraryKey, (prev: ILibraryItem[] | undefined) => prev?.map(item => (item.id === variables.itemID ? { ...item, access_policy: variables.policy } : item)) ); }, diff --git a/rsconcept/frontend/src/features/library/backend/use-set-location.tsx b/rsconcept/frontend/src/features/library/backend/use-set-location.tsx index 3f0a324b..4f2b36f4 100644 --- a/rsconcept/frontend/src/features/library/backend/use-set-location.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-set-location.tsx @@ -7,9 +7,11 @@ import { KEYS } from '@/backend/configuration'; import { libraryApi } from './api'; import { type ILibraryItem } from './types'; +import { useLibraryListKey } from './use-library'; export const useSetLocation = () => { const client = useQueryClient(); + const libraryKey = useLibraryListKey(); const mutation = useMutation({ mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'set-location'], mutationFn: libraryApi.setLocation, @@ -36,7 +38,7 @@ export const useSetLocation = () => { client.setQueryData(rsKey, (prev: IRSFormDTO | undefined) => !prev ? undefined : { ...prev, location: variables.location } ); - client.setQueryData(libraryApi.libraryListKey, (prev: ILibraryItem[] | undefined) => + client.setQueryData(libraryKey, (prev: ILibraryItem[] | undefined) => prev?.map(item => (item.id === variables.itemID ? { ...item, location: variables.location } : item)) ); }, diff --git a/rsconcept/frontend/src/features/library/backend/use-set-owner.tsx b/rsconcept/frontend/src/features/library/backend/use-set-owner.tsx index 7060c1e4..1f3faf11 100644 --- a/rsconcept/frontend/src/features/library/backend/use-set-owner.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-set-owner.tsx @@ -7,9 +7,11 @@ import { KEYS } from '@/backend/configuration'; import { libraryApi } from './api'; import { type ILibraryItem } from './types'; +import { useLibraryListKey } from './use-library'; export const useSetOwner = () => { const client = useQueryClient(); + const libraryKey = useLibraryListKey(); const mutation = useMutation({ mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'set-owner'], mutationFn: libraryApi.setOwner, @@ -36,7 +38,7 @@ export const useSetOwner = () => { client.setQueryData(rsKey, (prev: IRSFormDTO | undefined) => !prev ? undefined : { ...prev, owner: variables.owner } ); - client.setQueryData(libraryApi.libraryListKey, (prev: ILibraryItem[] | undefined) => + client.setQueryData(libraryKey, (prev: ILibraryItem[] | undefined) => prev?.map(item => (item.id === variables.itemID ? { ...item, owner: variables.owner } : item)) ); }, diff --git a/rsconcept/frontend/src/features/library/backend/use-update-item.tsx b/rsconcept/frontend/src/features/library/backend/use-update-item.tsx index 658147f1..234ee825 100644 --- a/rsconcept/frontend/src/features/library/backend/use-update-item.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-update-item.tsx @@ -7,9 +7,11 @@ import { KEYS } from '@/backend/configuration'; import { libraryApi } from './api'; import { type ILibraryItem, type IUpdateLibraryItemDTO, LibraryItemType } from './types'; +import { useLibraryListKey } from './use-library'; export const useUpdateItem = () => { const client = useQueryClient(); + const libraryKey = useLibraryListKey(); const mutation = useMutation({ mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'update-item'], mutationFn: libraryApi.updateItem, @@ -18,7 +20,7 @@ export const useUpdateItem = () => { data.item_type === LibraryItemType.RSFORM ? KEYS.composite.rsItem({ itemID: data.id }) : KEYS.composite.ossItem({ itemID: data.id }); - client.setQueryData(libraryApi.libraryListKey, (prev: ILibraryItem[] | undefined) => + client.setQueryData(libraryKey, (prev: ILibraryItem[] | undefined) => prev?.map(item => (item.id === data.id ? data : item)) ); client.setQueryData(itemKey, (prev: IRSFormDTO | IOperationSchemaDTO | undefined) => diff --git a/rsconcept/frontend/src/features/library/backend/use-update-timestamp.tsx b/rsconcept/frontend/src/features/library/backend/use-update-timestamp.tsx index 79254c52..183d66e1 100644 --- a/rsconcept/frontend/src/features/library/backend/use-update-timestamp.tsx +++ b/rsconcept/frontend/src/features/library/backend/use-update-timestamp.tsx @@ -1,14 +1,15 @@ import { useQueryClient } from '@tanstack/react-query'; -import { libraryApi } from './api'; import { type ILibraryItem } from './types'; +import { useLibraryListKey } from './use-library'; export function useUpdateTimestamp() { const client = useQueryClient(); + const libraryKey = useLibraryListKey(); return { updateTimestamp: (target: number) => client.setQueryData( - libraryApi.libraryListKey, // + libraryKey, // (prev: ILibraryItem[] | undefined) => prev?.map(item => (item.id === target ? { ...item, time_update: Date() } : item)) ) diff --git a/rsconcept/frontend/src/features/users/backend/types.ts b/rsconcept/frontend/src/features/users/backend/types.ts index 23868128..fea0dc4a 100644 --- a/rsconcept/frontend/src/features/users/backend/types.ts +++ b/rsconcept/frontend/src/features/users/backend/types.ts @@ -9,7 +9,7 @@ export type IUserProfile = z.infer; /** Represents user reference information. */ export type IUserInfo = z.infer; -/** Represents signup data, used to create new users. */ +/** Represents signup data, used to create users. */ export type IUserSignupDTO = z.infer; /** Represents user data, intended to update user profile in persistent storage. */