Portal/rsconcept/frontend/src/features/library/backend/useDeleteItem.tsx

33 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-01-23 19:41:31 +03:00
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { ossApi } from '@/features/oss/backend/api';
import { rsformsApi } from '@/features/rsform/backend/api';
import { PARAMETER } from '@/utils/constants';
2025-01-23 19:41:31 +03:00
import { LibraryItemID } from '../models/library';
2025-01-23 19:41:31 +03:00
import { libraryApi } from './api';
export const useDeleteItem = () => {
const client = useQueryClient();
const mutation = useMutation({
mutationKey: [libraryApi.baseKey, 'delete-item'],
mutationFn: libraryApi.deleteItem,
onSuccess: (_, variables) => {
client.invalidateQueries({ queryKey: libraryApi.libraryListKey }).catch(console.error);
setTimeout(
() =>
void Promise.allSettled([
client.invalidateQueries({ queryKey: [ossApi.baseKey] }),
client.resetQueries({ queryKey: rsformsApi.getRSFormQueryOptions({ itemID: variables }).queryKey }),
client.resetQueries({ queryKey: ossApi.getOssQueryOptions({ itemID: variables }).queryKey })
]).catch(console.error),
PARAMETER.navigationDuration
2025-01-23 19:41:31 +03:00
);
}
});
return {
2025-02-11 20:15:34 +03:00
deleteItem: (target: LibraryItemID) => mutation.mutateAsync(target),
2025-01-23 19:41:31 +03:00
isPending: mutation.isPending
};
};