diff --git a/src/webapp/features/cards/lib/mutations/useUpdateCardAssociations.tsx b/src/webapp/features/cards/lib/mutations/useUpdateCardAssociations.tsx index 4eadd919..2602da4a 100644 --- a/src/webapp/features/cards/lib/mutations/useUpdateCardAssociations.tsx +++ b/src/webapp/features/cards/lib/mutations/useUpdateCardAssociations.tsx @@ -2,6 +2,8 @@ import { createSembleClient } from '@/services/apiClient'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { cardKeys } from '../cardKeys'; import { collectionKeys } from '@/features/collections/lib/collectionKeys'; +import { noteKeys } from '@/features/notes/lib/noteKeys'; +import { sembleKeys } from '@/features/semble/lib/sembleKeys'; export default function useUpdateCardAssociations() { const client = createSembleClient(); @@ -25,6 +27,8 @@ export default function useUpdateCardAssociations() { onSuccess: (_data, variables) => { queryClient.invalidateQueries({ queryKey: cardKeys.all() }); + queryClient.invalidateQueries({ queryKey: noteKeys.all() }); + queryClient.invalidateQueries({ queryKey: sembleKeys.all() }); queryClient.invalidateQueries({ queryKey: collectionKeys.mine() }); queryClient.invalidateQueries({ queryKey: collectionKeys.infinite() }); diff --git a/src/webapp/features/collections/lib/queries/useCollection.tsx b/src/webapp/features/collections/lib/queries/useCollection.tsx index 014f344a..30877de2 100644 --- a/src/webapp/features/collections/lib/queries/useCollection.tsx +++ b/src/webapp/features/collections/lib/queries/useCollection.tsx @@ -12,7 +12,7 @@ export default function useCollection(props: Props) { const limit = props.limit ?? 20; return useSuspenseInfiniteQuery({ - queryKey: collectionKeys.collection(props.rkey), + queryKey: collectionKeys.infinite(), initialPageParam: 1, queryFn: ({ pageParam }) => getCollectionPageByAtUri({ diff --git a/src/webapp/features/notes/lib/mutations/useUpdateNote.tsx b/src/webapp/features/notes/lib/mutations/useUpdateNote.tsx index f2999142..6189a219 100644 --- a/src/webapp/features/notes/lib/mutations/useUpdateNote.tsx +++ b/src/webapp/features/notes/lib/mutations/useUpdateNote.tsx @@ -1,5 +1,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { updateNoteCard } from '../dal'; +import { cardKeys } from '@/features/cards/lib/cardKeys'; +import { collectionKeys } from '@/features/collections/lib/collectionKeys'; export default function useUpdateNote() { const queryClient = useQueryClient(); @@ -10,9 +12,9 @@ export default function useUpdateNote() { }, onSuccess: (data) => { - queryClient.invalidateQueries({ queryKey: ['card', data.cardId] }); - queryClient.invalidateQueries({ queryKey: ['collection'] }); - queryClient.invalidateQueries({ queryKey: ['collections'] }); + queryClient.invalidateQueries({ queryKey: cardKeys.card(data.cardId) }); + queryClient.invalidateQueries({ queryKey: cardKeys.infinite() }); + queryClient.invalidateQueries({ queryKey: collectionKeys.all() }); }, }); diff --git a/src/webapp/features/notes/lib/noteKeys.ts b/src/webapp/features/notes/lib/noteKeys.ts new file mode 100644 index 00000000..178c9762 --- /dev/null +++ b/src/webapp/features/notes/lib/noteKeys.ts @@ -0,0 +1,6 @@ +export const noteKeys = { + all: () => ['notes'] as const, + note: (id: string) => [...noteKeys.all(), id] as const, + bySembleUrl: (url: string) => [...noteKeys.all(), url], + infinite: () => [...noteKeys.all(), 'infinite'], +}; diff --git a/src/webapp/features/semble/containers/sembleNotesContainer/SembleNotesContainer.tsx b/src/webapp/features/semble/containers/sembleNotesContainer/SembleNotesContainer.tsx index 7597030f..ed836074 100644 --- a/src/webapp/features/semble/containers/sembleNotesContainer/SembleNotesContainer.tsx +++ b/src/webapp/features/semble/containers/sembleNotesContainer/SembleNotesContainer.tsx @@ -1,6 +1,6 @@ 'use client'; -import useSembleNotes from '@/features/notes/lib/queries/useSembleNotes'; +import useSembleNotes from '@/features/semble/lib/queries/useSembleNotes'; import InfiniteScroll from '@/components/contentDisplay/infiniteScroll/InfiniteScroll'; import { Grid } from '@mantine/core'; import SembleNotesContainerError from './Error.SembleNotesContainer'; diff --git a/src/webapp/features/notes/lib/queries/useSembleNotes.tsx b/src/webapp/features/semble/lib/queries/useSembleNotes.ts similarity index 78% rename from src/webapp/features/notes/lib/queries/useSembleNotes.tsx rename to src/webapp/features/semble/lib/queries/useSembleNotes.ts index df9d504d..a3cc0907 100644 --- a/src/webapp/features/notes/lib/queries/useSembleNotes.tsx +++ b/src/webapp/features/semble/lib/queries/useSembleNotes.ts @@ -1,5 +1,6 @@ +import { getNoteCardsForUrl } from '@/features/notes/lib/dal'; import { useSuspenseInfiniteQuery } from '@tanstack/react-query'; -import { getNoteCardsForUrl } from '../dal'; +import { sembleKeys } from '../sembleKeys'; interface Props { url: string; @@ -10,7 +11,7 @@ export default function useSembleNotes(props: Props) { const limit = props?.limit ?? 16; const notes = useSuspenseInfiniteQuery({ - queryKey: ['semble notes', props.url, limit], + queryKey: sembleKeys.notesInfinite(props.url), initialPageParam: 1, queryFn: ({ pageParam = 1 }) => { return getNoteCardsForUrl(props.url, { page: pageParam, limit }); diff --git a/src/webapp/features/semble/lib/sembleKeys.ts b/src/webapp/features/semble/lib/sembleKeys.ts index c4008432..0777b173 100644 --- a/src/webapp/features/semble/lib/sembleKeys.ts +++ b/src/webapp/features/semble/lib/sembleKeys.ts @@ -1,6 +1,9 @@ export const sembleKeys = { all: () => ['semble'] as const, byUrl: (url: string) => [...sembleKeys.all(), url] as const, + notes: (url: string) => [...sembleKeys.byUrl(url), 'notes'] as const, + notesInfinite: (url: string) => + [...sembleKeys.notes(url), 'infinite'] as const, similarCards: (url: string) => [...sembleKeys.byUrl(url), 'similar cards'] as const, similarCardsInfinite: (url: string) =>