Hotfix Rule: Force Fresh Data After CRUD Mutation
Task-h not implements
This commit is contained in:
@@ -11,26 +11,57 @@ import {
|
||||
import { enquiryKeys } from './queries';
|
||||
import type { EnquiryFollowupMutationPayload, EnquiryMutationPayload } from './types';
|
||||
|
||||
async function invalidateEnquiryLists() {
|
||||
await getQueryClient().invalidateQueries({ queryKey: enquiryKeys.lists() });
|
||||
}
|
||||
|
||||
async function invalidateEnquiryDetail(id: string) {
|
||||
await getQueryClient().invalidateQueries({ queryKey: enquiryKeys.detail(id) });
|
||||
}
|
||||
|
||||
async function invalidateEnquiryFollowups(id: string) {
|
||||
await getQueryClient().invalidateQueries({ queryKey: enquiryKeys.followups(id) });
|
||||
}
|
||||
|
||||
export async function invalidateEnquiryMutationQueries(id: string) {
|
||||
await Promise.all([invalidateEnquiryLists(), invalidateEnquiryDetail(id)]);
|
||||
}
|
||||
|
||||
export async function invalidateEnquiryFollowupMutationQueries(enquiryId: string) {
|
||||
await Promise.all([
|
||||
invalidateEnquiryLists(),
|
||||
invalidateEnquiryDetail(enquiryId),
|
||||
invalidateEnquiryFollowups(enquiryId)
|
||||
]);
|
||||
}
|
||||
|
||||
export const createEnquiryMutation = mutationOptions({
|
||||
mutationFn: (data: EnquiryMutationPayload) => createEnquiry(data),
|
||||
onSuccess: () => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.all });
|
||||
onSettled: async (_data, error) => {
|
||||
if (!error) {
|
||||
await invalidateEnquiryLists();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export const updateEnquiryMutation = mutationOptions({
|
||||
mutationFn: ({ id, values }: { id: string; values: EnquiryMutationPayload }) =>
|
||||
updateEnquiry(id, values),
|
||||
onSuccess: (_data, variables) => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.all });
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.detail(variables.id) });
|
||||
onSettled: async (_data, error, variables) => {
|
||||
if (!error) {
|
||||
await invalidateEnquiryMutationQueries(variables.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export const deleteEnquiryMutation = mutationOptions({
|
||||
mutationFn: (id: string) => deleteEnquiry(id),
|
||||
onSuccess: () => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.all });
|
||||
onSettled: async (_data, error, id) => {
|
||||
if (!error) {
|
||||
getQueryClient().removeQueries({ queryKey: enquiryKeys.detail(id) });
|
||||
getQueryClient().removeQueries({ queryKey: enquiryKeys.followups(id) });
|
||||
await invalidateEnquiryLists();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -42,9 +73,10 @@ export const createEnquiryFollowupMutation = mutationOptions({
|
||||
enquiryId: string;
|
||||
values: EnquiryFollowupMutationPayload;
|
||||
}) => createEnquiryFollowup(enquiryId, values),
|
||||
onSuccess: (_data, variables) => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.followups(variables.enquiryId) });
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.detail(variables.enquiryId) });
|
||||
onSettled: async (_data, error, variables) => {
|
||||
if (!error) {
|
||||
await invalidateEnquiryFollowupMutationQueries(variables.enquiryId);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -58,17 +90,19 @@ export const updateEnquiryFollowupMutation = mutationOptions({
|
||||
followupId: string;
|
||||
values: EnquiryFollowupMutationPayload;
|
||||
}) => updateEnquiryFollowup(enquiryId, followupId, values),
|
||||
onSuccess: (_data, variables) => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.followups(variables.enquiryId) });
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.detail(variables.enquiryId) });
|
||||
onSettled: async (_data, error, variables) => {
|
||||
if (!error) {
|
||||
await invalidateEnquiryFollowupMutationQueries(variables.enquiryId);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export const deleteEnquiryFollowupMutation = mutationOptions({
|
||||
mutationFn: ({ enquiryId, followupId }: { enquiryId: string; followupId: string }) =>
|
||||
deleteEnquiryFollowup(enquiryId, followupId),
|
||||
onSuccess: (_data, variables) => {
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.followups(variables.enquiryId) });
|
||||
getQueryClient().invalidateQueries({ queryKey: enquiryKeys.detail(variables.enquiryId) });
|
||||
onSettled: async (_data, error, variables) => {
|
||||
if (!error) {
|
||||
await invalidateEnquiryFollowupMutationQueries(variables.enquiryId);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -4,9 +4,12 @@ import type { EnquiryFilters } from './types';
|
||||
|
||||
export const enquiryKeys = {
|
||||
all: ['crm-enquiries'] as const,
|
||||
list: (filters: EnquiryFilters) => [...enquiryKeys.all, 'list', filters] as const,
|
||||
detail: (id: string) => [...enquiryKeys.all, 'detail', id] as const,
|
||||
followups: (id: string) => [...enquiryKeys.all, 'followups', id] as const
|
||||
lists: () => [...enquiryKeys.all, 'list'] as const,
|
||||
list: (filters: EnquiryFilters) => [...enquiryKeys.lists(), filters] as const,
|
||||
details: () => [...enquiryKeys.all, 'detail'] as const,
|
||||
detail: (id: string) => [...enquiryKeys.details(), id] as const,
|
||||
followupsRoot: () => [...enquiryKeys.all, 'followups'] as const,
|
||||
followups: (id: string) => [...enquiryKeys.followupsRoot(), id] as const
|
||||
};
|
||||
|
||||
export const enquiriesQueryOptions = (filters: EnquiryFilters) =>
|
||||
|
||||
Reference in New Issue
Block a user