Skip to content

Commit da0175c

Browse files
committed
fix: refresh stale
1 parent 22a9b8a commit da0175c

2 files changed

Lines changed: 22 additions & 30 deletions

File tree

frontend/src/modules/member/components/list/member-list-toolbar.vue

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,16 +113,12 @@ const { hasPermission } = usePermissions();
113113
114114
const bulkAttributesUpdateVisible = ref(false);
115115
116-
// Helper function for cache invalidation
117-
const invalidateMemberCache = async () => {
118-
// Small delay to ensure backend operations complete
119-
await new Promise((resolve) => {
120-
setTimeout(resolve, 1000);
121-
});
122-
123-
// Use invalidate to let TanStack Query decide when to refetch
124-
await queryClient.invalidateQueries({
116+
// Helper function for reliable data refresh with minimal calls
117+
const refreshMemberData = async () => {
118+
// Direct refetch with stale time 0 - forces fresh data from server
119+
await queryClient.refetchQueries({
125120
queryKey: [TanstackKey.MEMBERS_LIST],
121+
stale: true, // Force refetch even if data seems fresh
126122
});
127123
};
128124
@@ -230,8 +226,8 @@ const doDestroyAllWithConfirm = () => ConfirmDialog({
230226
// Clear selection immediately to prevent UI issues
231227
selectedMembers.value = [];
232228
233-
// Invalidate cache to refresh data
234-
await invalidateMemberCache();
229+
// Refresh data to ensure UI is up to date
230+
await refreshMemberData();
235231
});
236232
237233
const handleDoExport = async () => {
@@ -309,16 +305,16 @@ const doMarkAsTeamMember = async (value) => {
309305
});
310306
311307
return Promise.all(updatePromises)
312-
.then(async () => {
308+
.then(() => {
313309
ToastStore.closeAll();
314310
ToastStore.success(`${
315311
pluralize('Person', selectedMembers.value.length, true)} updated successfully`);
316312
317313
// Clear selection immediately to prevent UI issues
318314
selectedMembers.value = [];
319315
320-
// Invalidate cache to refresh data
321-
await invalidateMemberCache();
316+
// Refresh data to ensure UI is up to date
317+
refreshMemberData();
322318
})
323319
.catch(() => {
324320
ToastStore.closeAll();
@@ -348,16 +344,16 @@ const doMarkAsBot = async (value) => {
348344
});
349345
350346
return Promise.all(updatePromises)
351-
.then(async () => {
347+
.then(() => {
352348
ToastStore.closeAll();
353349
ToastStore.success(`${
354350
pluralize('Person', selectedMembers.value.length, true)} updated successfully`);
355351
356352
// Clear selection immediately to prevent UI issues
357353
selectedMembers.value = [];
358354
359-
// Invalidate cache to refresh data
360-
await invalidateMemberCache();
355+
// Refresh data to ensure UI is up to date
356+
refreshMemberData();
361357
})
362358
.catch(() => {
363359
ToastStore.closeAll();

frontend/src/modules/member/components/member-dropdown-content.vue

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -204,16 +204,12 @@ const isFindingGitHubDisabled = computed(() => (
204204
!!props.member.username?.github
205205
));
206206
207-
// Helper function for cache invalidation
208-
const invalidateMemberCache = async () => {
209-
// Small delay to ensure backend operations complete
210-
await new Promise((resolve) => {
211-
setTimeout(resolve, 1000);
212-
});
213-
214-
// Use invalidate to let TanStack Query decide when to refetch
215-
await queryClient.invalidateQueries({
207+
// Helper function for reliable data refresh with minimal calls
208+
const refreshMemberData = async () => {
209+
// Direct refetch with stale time 0 - forces fresh data from server
210+
await queryClient.refetchQueries({
216211
queryKey: [TanstackKey.MEMBERS_LIST],
212+
stale: true, // Force refetch even if data seems fresh
217213
});
218214
};
219215
@@ -286,7 +282,7 @@ const handleCommand = async (command: {
286282
errorMessage: 'Something went wrong',
287283
actionFn: MemberService.destroyAll([command.member.id]),
288284
}).then(async () => {
289-
await invalidateMemberCache();
285+
await refreshMemberData();
290286
});
291287
});
292288
@@ -313,7 +309,7 @@ const handleCommand = async (command: {
313309
: HubspotApiService.stopSyncMember(command.member.id),
314310
}).then(async () => {
315311
if (route.name === 'member') {
316-
await invalidateMemberCache();
312+
await refreshMemberData();
317313
} else {
318314
doFind({
319315
id: command.member.id,
@@ -353,7 +349,7 @@ const handleCommand = async (command: {
353349
},
354350
}),
355351
}).then(async () => {
356-
await invalidateMemberCache();
352+
await refreshMemberData();
357353
});
358354
359355
return;
@@ -390,7 +386,7 @@ const handleCommand = async (command: {
390386
},
391387
}),
392388
}).then(async () => {
393-
await invalidateMemberCache();
389+
await refreshMemberData();
394390
});
395391
396392
return;

0 commit comments

Comments
 (0)