Skip to content

Commit 3048447

Browse files
author
Simon
committed
fix: query invalidation for diary and goals
1 parent 44105c1 commit 3048447

19 files changed

Lines changed: 93 additions & 119 deletions

SparkyFitnessFrontend/src/api/Diary/dailyProgressService.ts

Lines changed: 0 additions & 39 deletions
This file was deleted.

SparkyFitnessFrontend/src/api/keys/admin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ export const settingsKeys = {
1111

1212
export const userKeys = {
1313
all: ['users'] as const,
14-
1514
list: (filters: { searchTerm: string; sortBy: string; sortOrder: string }) =>
1615
[...userKeys.all, filters] as const,
1716
profile: (userId: string) => [...userKeys.all, 'profile', userId] as const,
17+
avatar: (url: string) => [...userKeys.all, 'profile', 'avatar', url] as const,
1818
};
1919

2020
export const aiServiceKeys = {

SparkyFitnessFrontend/src/api/keys/checkin.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export const checkInKeys = {
1313
[...checkInKeys.all, 'mostRecent', type] as const,
1414
customEntries: (categoryId: string, userId?: string) =>
1515
[...checkInKeys.all, 'customEntries', categoryId, userId] as const,
16+
rawStressData: (userId: string, categoryId: string) =>
17+
[...checkInKeys.all, 'rawStressData', userId, categoryId] as const,
1618
};
1719

1820
export const moodKeys = {

SparkyFitnessFrontend/src/api/keys/diary.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ export const mealTypeKeys = {
55

66
export const dailyProgressKeys = {
77
all: ['dailyProgress'] as const,
8-
goals: (date: string) => [...dailyProgressKeys.all, 'goals', date] as const,
98
steps: (date: string) => [...dailyProgressKeys.all, 'steps', date] as const,
10-
exercises: (date: string) =>
11-
[...dailyProgressKeys.all, 'exercises', date] as const,
129
measurements: {
1310
mostRecent: (type: string) =>
1411
[...dailyProgressKeys.all, 'measurements', 'recent', type] as const,
@@ -20,6 +17,8 @@ export const dailyProgressKeys = {
2017
export const foodEntryKeys = {
2118
all: ['foodEntries'] as const,
2219
byDate: (date: string) => [...foodEntryKeys.all, 'date', date] as const,
20+
foodIntake: (date: string) =>
21+
[...foodEntryKeys.all, 'foodIntake', date] as const,
2322
};
2423

2524
export const foodEntryMealKeys = {

SparkyFitnessFrontend/src/api/keys/exercises.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ export const exerciseEntryKeys = {
109109
entryId,
110110
providerName,
111111
] as const,
112+
dailyStats: (date: string) =>
113+
[...exerciseEntryKeys.all, 'dailyStats', date] as const,
112114
};
113115
export const suggestedExercisesKeys = {
114116
all: ['exercises', 'suggested'] as const,

SparkyFitnessFrontend/src/api/keys/meals.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ export const providerKeys = {
3333
};
3434

3535
export const mealPlanKeys = {
36-
all: (userId: string) => [userId, 'mealplan'] as const,
36+
all: ['mealPlans'] as const,
37+
byUser: (userId: string) => [...mealPlanKeys.all, userId] as const,
3738
};
3839

3940
export const customNutrientsKeys = {

SparkyFitnessFrontend/src/api/keys/settings.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ export const externalProviderKeys = {
33
lists: () => [...externalProviderKeys.all, 'list'] as const,
44
};
55

6-
export const customCategoryKeys = {
7-
all: ['customCategories'] as const,
8-
lists: () => [...customCategoryKeys.all, 'list'] as const,
9-
};
10-
116
export const familyAccessKeys = {
127
all: ['familyAccess'] as const,
138
lists: () => [...familyAccessKeys.all, 'list'] as const,
@@ -31,11 +26,6 @@ export const apiKeyKeys = {
3126
lists: () => [...apiKeyKeys.all, 'list'] as const,
3227
};
3328

34-
export const profileKeys = {
35-
all: ['profile'] as const,
36-
avatar: (url: string) => [...profileKeys.all, 'avatar', url] as const,
37-
};
38-
3929
export const preferencesKeys = {
4030
all: ['preferences'] as const,
4131
user: () => [...preferencesKeys.all, 'user'] as const,

SparkyFitnessFrontend/src/hooks/CheckIn/useCheckIn.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
getMostRecentMeasurement,
1515
} from '@/api/CheckIn/checkInService';
1616
import { checkInKeys } from '@/api/keys/checkin';
17+
import { dailyProgressKeys } from '@/api/keys/diary';
1718

1819
export const useCustomCategories = (userId?: string) => {
1920
return useQuery({
@@ -102,7 +103,8 @@ export const useDeleteCustomMeasurementMutation = () => {
102103
return useMutation({
103104
mutationFn: (id: string) => deleteCustomMeasurement(id),
104105
onSuccess: () => {
105-
return queryClient.invalidateQueries({ queryKey: checkInKeys.all });
106+
queryClient.invalidateQueries({ queryKey: checkInKeys.all });
107+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
106108
},
107109
meta: {
108110
errorMessage: t(
@@ -123,7 +125,8 @@ export const useUpdateCheckInMeasurementFieldMutation = () => {
123125
return useMutation({
124126
mutationFn: updateCheckInMeasurementField,
125127
onSuccess: () => {
126-
return queryClient.invalidateQueries({ queryKey: checkInKeys.all });
128+
queryClient.invalidateQueries({ queryKey: checkInKeys.all });
129+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
127130
},
128131
meta: {
129132
errorMessage: t(
@@ -144,7 +147,8 @@ export const useSaveCheckInMeasurementsMutation = () => {
144147
return useMutation({
145148
mutationFn: saveCheckInMeasurements,
146149
onSuccess: () => {
147-
return queryClient.invalidateQueries({ queryKey: checkInKeys.all });
150+
queryClient.invalidateQueries({ queryKey: checkInKeys.all });
151+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
148152
},
149153
meta: {
150154
errorMessage: t(

SparkyFitnessFrontend/src/hooks/Diary/useDailyProgress.ts

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@ import {
99
convertStepsToCalories,
1010
} from '@/utils/nutritionCalculations';
1111
import { getExerciseEntriesForDate } from '@/api/Exercises/exerciseEntryService';
12-
import {
13-
getCheckInMeasurementsForDate,
14-
getFoodEntriesForDate,
15-
getGoalsForDate,
16-
} from '@/api/Diary/dailyProgressService';
1712
import { userManagementService } from '@/api/Admin/userManagementService';
18-
import { getMostRecentMeasurement } from '@/api/CheckIn/checkInService';
13+
import {
14+
getMostRecentMeasurement,
15+
loadExistingCheckInMeasurements,
16+
} from '@/api/CheckIn/checkInService';
1917
import { adaptiveTdeeService } from '@/api/Settings/adaptiveTdeeService';
2018
import { calculateBmr, BmrAlgorithm } from '@/services/bmrService';
2119
import { GroupedExerciseEntry } from '@/types/exercises';
20+
import { userKeys } from '@/api/keys/admin';
21+
import { exerciseEntryKeys } from '@/api/keys/exercises';
22+
import { loadFoodEntries } from '@/api/Diary/foodEntryService';
2223

2324
export const useAdaptiveTdee = (date: string) => {
2425
return useQuery({
@@ -28,26 +29,11 @@ export const useAdaptiveTdee = (date: string) => {
2829
});
2930
};
3031

31-
export const useDailyGoals = (date: string) => {
32-
const { t } = useTranslation();
33-
return useQuery({
34-
queryKey: dailyProgressKeys.goals(date),
35-
queryFn: () => getGoalsForDate(date),
36-
enabled: !!date,
37-
meta: {
38-
errorMessage: t(
39-
'dailyProgress.goalsLoadError',
40-
'Failed to load daily goals.'
41-
),
42-
},
43-
});
44-
};
45-
4632
export const useDailyFoodIntake = (date: string) => {
4733
const { t } = useTranslation();
4834
return useQuery({
49-
queryKey: foodEntryKeys.byDate(date),
50-
queryFn: () => getFoodEntriesForDate(date),
35+
queryKey: foodEntryKeys.foodIntake(date),
36+
queryFn: () => loadFoodEntries(date),
5137
enabled: !!date,
5238
select: (entries: FoodEntry[]) => {
5339
const totals = entries.reduce(
@@ -86,7 +72,7 @@ export const useDailyFoodIntake = (date: string) => {
8672
export const useDailyExerciseStats = (date: string) => {
8773
const { t } = useTranslation();
8874
return useQuery({
89-
queryKey: dailyProgressKeys.exercises(date),
75+
queryKey: exerciseEntryKeys.dailyStats(date),
9076
queryFn: () => getExerciseEntriesForDate(date),
9177
enabled: !!date,
9278
select: (data: GroupedExerciseEntry[]) => {
@@ -129,7 +115,7 @@ export const useDailyExerciseStats = (date: string) => {
129115
export const useDailySteps = (date: string) => {
130116
return useQuery({
131117
queryKey: dailyProgressKeys.steps(date),
132-
queryFn: () => getCheckInMeasurementsForDate(date),
118+
queryFn: () => loadExistingCheckInMeasurements(date),
133119
enabled: !!date,
134120
select: (data) => {
135121
const steps = data?.steps || 0;
@@ -176,7 +162,7 @@ export const useCalculatedBMR = () => {
176162
const { bmrAlgorithm, includeBmrInNetCalories } = usePreferences();
177163

178164
const { data: userProfile } = useQuery({
179-
queryKey: ['user', 'profile', user?.id],
165+
queryKey: userKeys.profile(user?.id),
180166
queryFn: () => userManagementService.getUserProfile(user!.id),
181167
enabled: !!user?.id,
182168
});

SparkyFitnessFrontend/src/hooks/Diary/useFoodEntries.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ import {
2323
} from '@/api/Diary/foodEntryService';
2424

2525
import { goalKeys } from '@/api/keys/goals';
26-
import { foodEntryKeys, foodEntryMealKeys } from '@/api/keys/diary';
26+
import {
27+
dailyProgressKeys,
28+
foodEntryKeys,
29+
foodEntryMealKeys,
30+
} from '@/api/keys/diary';
2731
import i18n from '@/i18n';
2832

2933
export const useFoodEntries = (date: string) => {
@@ -81,10 +85,10 @@ export const useCreateFoodEntryMutation = () => {
8185

8286
return useMutation({
8387
mutationFn: createFoodEntry,
84-
onSuccess: (_, variables) => {
85-
queryClient.invalidateQueries({
86-
queryKey: foodEntryKeys.byDate(variables.entry_date),
87-
});
88+
onSuccess: () => {
89+
queryClient.invalidateQueries({ queryKey: foodEntryMealKeys.all });
90+
queryClient.invalidateQueries({ queryKey: foodEntryKeys.all });
91+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
8892
},
8993
meta: {
9094
successMessage: t('diary.addSuccess', 'Food added successfully.'),
@@ -102,6 +106,8 @@ export const useUpdateFoodEntryMutation = () => {
102106
updateFoodEntry(id, data),
103107
onSuccess: () => {
104108
queryClient.invalidateQueries({ queryKey: foodEntryKeys.all });
109+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
110+
queryClient.invalidateQueries({ queryKey: foodEntryMealKeys.all });
105111
},
106112
meta: {
107113
successMessage: t('diary.updateSuccess', 'Entry updated.'),
@@ -118,6 +124,7 @@ export const useDeleteFoodEntryMutation = () => {
118124
mutationFn: removeFoodEntry,
119125
onSuccess: () => {
120126
queryClient.invalidateQueries({ queryKey: foodEntryKeys.all });
127+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
121128
},
122129
meta: {
123130
successMessage: t('diary.deleteSuccess', 'Entry deleted.'),
@@ -147,6 +154,7 @@ export const useCopyFoodEntriesMutation = () => {
147154
queryClient.invalidateQueries({
148155
queryKey: foodEntryKeys.byDate(variables.targetDate),
149156
});
157+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
150158
},
151159
meta: {
152160
successMessage: t('diary.copySuccess', 'Entries copied successfully.'),
@@ -171,6 +179,7 @@ export const useCopyFoodEntriesFromYesterdayMutation = () => {
171179
queryClient.invalidateQueries({
172180
queryKey: foodEntryKeys.byDate(variables.targetDate),
173181
});
182+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
174183
},
175184
meta: {
176185
successMessage: t('diary.copySuccess', 'Entries copied from yesterday.'),
@@ -192,6 +201,7 @@ export const useCreateFoodEntryMealMutation = () => {
192201
queryClient.invalidateQueries({
193202
queryKey: foodEntryKeys.byDate(variables.entry_date),
194203
});
204+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
195205
},
196206
meta: {
197207
successMessage: t('diary.mealAddSuccess', 'Meal added successfully.'),
@@ -210,6 +220,7 @@ export const useUpdateFoodEntryMealMutation = () => {
210220
onSuccess: () => {
211221
queryClient.invalidateQueries({ queryKey: foodEntryMealKeys.all });
212222
queryClient.invalidateQueries({ queryKey: foodEntryKeys.all });
223+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
213224
},
214225
meta: {
215226
successMessage: t(
@@ -230,6 +241,7 @@ export const useDeleteFoodEntryMealMutation = () => {
230241
onSuccess: () => {
231242
queryClient.invalidateQueries({ queryKey: foodEntryMealKeys.all });
232243
queryClient.invalidateQueries({ queryKey: foodEntryKeys.all });
244+
queryClient.invalidateQueries({ queryKey: dailyProgressKeys.all });
233245
},
234246
meta: {
235247
successMessage: t('diary.mealDeleteSuccess', 'Meal deleted.'),

0 commit comments

Comments
 (0)