Skip to content

Commit 92ff155

Browse files
arbrandesclaude
andcommitted
fix: use explicit initializeBase key for query invalidation
Mutations were invalidating with initialize() which produces a key with trailing undefined, relying on React Query implementation details for prefix matching. Added initializeBase() that produces a clean prefix key ['learner-dashboard', 'initialize'] for unambiguous invalidation of all initialize queries regardless of masquerade user. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4baf2bc commit 92ff155

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

src/data/hooks/mutationHooks.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const useUnenrollFromCourse = () => {
3838
mutationKey: learnerDashboardQueryKeys.unenrollFromCourse(),
3939
mutationFn: ({ courseId }: { courseId: string }) => unenrollFromCourse({ courseId }),
4040
onSuccess: () => {
41-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
41+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
4242
},
4343
onError: (error, variables) => {
4444
logError(`Failed to unenroll from course ${variables.courseId}:`, error);
@@ -53,7 +53,7 @@ const useUpdateEntitlementEnrollment = () => {
5353
mutationKey: learnerDashboardQueryKeys.updateEntitlementEnrollment(),
5454
mutationFn: ({ uuid, courseId }: UpdateEntitlementProps) => updateEntitlementEnrollment({ uuid, courseId }),
5555
onSuccess: () => {
56-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
56+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
5757
},
5858
onError: (error, variables) => {
5959
logError(`Failed to update entitlement enrollment for UUID ${variables.uuid}:`, error);
@@ -68,7 +68,7 @@ const useDeleteEntitlementEnrollment = () => {
6868
mutationKey: learnerDashboardQueryKeys.deleteEntitlementEnrollment(),
6969
mutationFn: (params: DeleteEntitlementParams) => deleteEntitlementEnrollment(params),
7070
onSuccess: () => {
71-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
71+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
7272
},
7373
onError: (error, variables) => {
7474
logError(`Failed to delete entitlement enrollment for UUID ${variables.uuid}:`, error);
@@ -83,7 +83,7 @@ const useUpdateEmailSettings = () => {
8383
mutationKey: learnerDashboardQueryKeys.updateEmailSettings(),
8484
mutationFn: ({ courseId, enable }: UpdateEmailSettingsParams) => updateEmailSettings({ courseId, enable }),
8585
onSuccess: () => {
86-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
86+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
8787
},
8888
onError: (error, variables) => {
8989
logError(`Failed to update email settings for course ${variables.courseId}:`, error);
@@ -98,7 +98,7 @@ const useCreateCreditRequest = () => {
9898
mutationKey: learnerDashboardQueryKeys.createCreditRequest(),
9999
mutationFn: (props: CreditParams) => createCreditRequest(props),
100100
onSuccess: () => {
101-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
101+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
102102
},
103103
onError: (error, variables) => {
104104
logError(`Failed to create credit request for course ${variables.courseId} with provider ${variables.providerId}:`, error);
@@ -113,7 +113,7 @@ const useSendConfirmEmail = (sendEmailUrl: string) => {
113113
mutationKey: learnerDashboardQueryKeys.sendConfirmEmail(sendEmailUrl),
114114
mutationFn: () => sendConfirmEmail(sendEmailUrl),
115115
onSuccess: () => {
116-
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initialize() });
116+
queryClient.invalidateQueries({ queryKey: learnerDashboardQueryKeys.initializeBase() });
117117
},
118118
onError: (error) => {
119119
logError('Failed to send confirmation email:', error);

src/data/hooks/queryKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export const learnerDashboardQueryKeys = {
22
all: ['learner-dashboard'] as const,
3+
initializeBase: () => [...learnerDashboardQueryKeys.all, 'initialize'] as const,
34
initialize: (masqueradedUser?: string | null) => [...learnerDashboardQueryKeys.all, 'initialize', masqueradedUser] as const,
45
unenrollFromCourse: () => [...learnerDashboardQueryKeys.all, 'unenrollFromCourse'] as const,
56
updateEntitlementEnrollment: () => [...learnerDashboardQueryKeys.all, 'updateEntitlementEnrollment'] as const,

0 commit comments

Comments
 (0)