diff --git a/frontend/src/components/contents/index.tsx b/frontend/src/components/contents/index.tsx index 0634b5a1..3156b3bd 100644 --- a/frontend/src/components/contents/index.tsx +++ b/frontend/src/components/contents/index.tsx @@ -194,6 +194,8 @@ export const Contents = () => { id: params.row.id, params: { status: !params.row.status, + title: params.row.title, + entity: (params.row.entity as any).id, }, }); }} diff --git a/frontend/src/hooks/crud/useUpdate.tsx b/frontend/src/hooks/crud/useUpdate.tsx index f272baa4..503d85bc 100644 --- a/frontend/src/hooks/crud/useUpdate.tsx +++ b/frontend/src/hooks/crud/useUpdate.tsx @@ -17,7 +17,7 @@ import { } from "@/types/base.types"; import { merge } from "@/utils/object"; -import { useNormalizeAndCache } from "./helpers"; +import { isSameEntity, useNormalizeAndCache } from "./helpers"; import { useGetFromCache } from "./useGet"; import { useEntityApiClient } from "../useApiClient"; @@ -42,12 +42,27 @@ export const useUpdate = < ) => { const api = useEntityApiClient(entity); const normalizeAndCache = useNormalizeAndCache(entity); + const queryClient = useQueryClient(); + const { invalidate = true } = options || {}; return useMutation({ mutationFn: async ({ id, params }) => { const data = await api.update(id, params); const { entities, result } = normalizeAndCache(data); + if (invalidate) { + queryClient.removeQueries({ + predicate: ({ queryKey }) => { + const [qType, qEntity] = queryKey; + + return ( + (qType === QueryType.count || qType === QueryType.collection) && + isSameEntity(qEntity, entity) + ); + }, + }); + } + return entities[entity]?.[result] as unknown as TBasic; }, ...options,