From 836e840b2eb689b317f0570812d252c1f998d9c4 Mon Sep 17 00:00:00 2001 From: AlfreMK Date: Fri, 6 Sep 2024 23:27:14 -0400 Subject: [PATCH 1/2] chore: add cache modifiers --- apps/web/.prettierrc | 5 ++++ .../hooks/queries/useActivities/apiCalls.ts | 9 +------ .../queries/useActivities/cacheModifiers.ts | 26 +++++++++++++++++++ .../queries/useActivities/dataTransforms.ts | 18 +++++++++++++ .../src/hooks/queries/useActivities/index.ts | 22 +++++++++++----- .../hooks/queries/useAssistants/apiCalls.ts | 8 +++--- .../queries/useAssistants/cacheModifiers.ts | 26 +++++++++++++++++++ .../src/hooks/queries/useAssistants/index.ts | 16 +++++++----- apps/web/src/hooks/queries/useOrg/index.ts | 4 +-- .../web/src/hooks/queries/useOrgs/apiCalls.ts | 3 ++- .../hooks/queries/useOrgs/cacheModifiers.ts | 26 +++++++++++++++++++ apps/web/src/hooks/queries/useOrgs/index.ts | 10 +++---- .../src/hooks/queries/useStudents/apiCalls.ts | 13 +++++----- .../queries/useStudents/cacheModifiers.ts | 18 +++++++++++++ .../src/hooks/queries/useStudents/index.ts | 10 +++---- 15 files changed, 169 insertions(+), 45 deletions(-) create mode 100644 apps/web/.prettierrc create mode 100644 apps/web/src/hooks/queries/useActivities/cacheModifiers.ts create mode 100644 apps/web/src/hooks/queries/useActivities/dataTransforms.ts create mode 100644 apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts create mode 100644 apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts create mode 100644 apps/web/src/hooks/queries/useStudents/cacheModifiers.ts diff --git a/apps/web/.prettierrc b/apps/web/.prettierrc new file mode 100644 index 0000000..a5cd819 --- /dev/null +++ b/apps/web/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": true +} diff --git a/apps/web/src/hooks/queries/useActivities/apiCalls.ts b/apps/web/src/hooks/queries/useActivities/apiCalls.ts index d566c52..b9e0531 100644 --- a/apps/web/src/hooks/queries/useActivities/apiCalls.ts +++ b/apps/web/src/hooks/queries/useActivities/apiCalls.ts @@ -6,14 +6,7 @@ const basePath = "api/v1/courses"; export const useActivitiesRequests = (orgId: string) => { const activitiesQuery = async (): Promise => { const res = await client.get(`${basePath}/${orgId}/activities/`); - return res.data.activities - .map((activity: Activity) => ({ - ...activity, - date: new Date(activity.date), - })) - .sort((a: Activity, b: Activity) => { - return b.date.getTime() - a.date.getTime(); - }); + return res.data.activities; }; const createActivity = async ( diff --git a/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts b/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts new file mode 100644 index 0000000..a1ed502 --- /dev/null +++ b/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts @@ -0,0 +1,26 @@ +import { useQueryClient } from "@tanstack/react-query" +import { useQueryKey } from "./queryKey" +import type { Activity } from "@/types/interfaces"; + +export const useCacheModifiers = (queryKey: ReturnType) => { + const queryClient = useQueryClient() + + const addActivitiesToCache = (activities: Activity[]) => { + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [...activities] + return [...data, ...activities] + }) + } + + const removeMultipleActivitiesFromCache = (slugs: string[]) => { + const slugsSet = new Set(slugs) + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [] + return data.filter((activity) => !slugsSet.has(activity.slug)) + }) + } + return { + addActivitiesToCache, + removeMultipleActivitiesFromCache, + } +} \ No newline at end of file diff --git a/apps/web/src/hooks/queries/useActivities/dataTransforms.ts b/apps/web/src/hooks/queries/useActivities/dataTransforms.ts new file mode 100644 index 0000000..c60b015 --- /dev/null +++ b/apps/web/src/hooks/queries/useActivities/dataTransforms.ts @@ -0,0 +1,18 @@ +import type { Activity } from "@/types/interfaces"; + +export const useDataTransforms = () => { + const mapActivities = (activities: Activity[]) => { + return activities + .map((activity: Activity) => ({ + ...activity, + date: new Date(activity.date), + })) + .sort((a: Activity, b: Activity) => { + return b.date.getTime() - a.date.getTime(); + }); + }; + + return { + mapActivities, + }; +}; diff --git a/apps/web/src/hooks/queries/useActivities/index.ts b/apps/web/src/hooks/queries/useActivities/index.ts index 389b0de..5aaa10c 100644 --- a/apps/web/src/hooks/queries/useActivities/index.ts +++ b/apps/web/src/hooks/queries/useActivities/index.ts @@ -1,18 +1,24 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import { useQueryKey } from "./queryKey"; import { useActivitiesRequests } from "./apiCalls"; -import { useQueryClient } from "@tanstack/react-query"; +import { useDataTransforms } from "./dataTransforms"; +import { useCacheModifiers } from "./cacheModifiers"; export const useActivitiesQuery = (orgId: string) => { const queryKey = useQueryKey(orgId); + const { mapActivities } = useDataTransforms(); const { activitiesQuery } = useActivitiesRequests(orgId); - const query = useQuery({ queryKey, queryFn: activitiesQuery }); - return { ...query }; + const query = useQuery({ + queryKey, + queryFn: () => activitiesQuery().then(mapActivities), + }); + return query; }; export const useActivitiesMutations = (orgId: string) => { - const queryClient = useQueryClient(); const queryKey = useQueryKey(orgId); + const { addActivitiesToCache, removeMultipleActivitiesFromCache } = + useCacheModifiers(queryKey); const { createActivity: createActivityRequest, deleteActivity: deleteActivityRequest, @@ -31,17 +37,19 @@ export const useActivitiesMutations = (orgId: string) => { description: string; date: string; }) => createActivityRequest(name, slug, description, date), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (activity) => addActivitiesToCache([activity]), }); const deleteActivity = useMutation({ mutationFn: deleteActivityRequest, - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (_, slug) => + removeMultipleActivitiesFromCache([slug]), }); const deleteMultipleActivities = useMutation({ mutationFn: deleteMultipleActivitiesRequest, - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (_, slugs) => + removeMultipleActivitiesFromCache(slugs), }); return { diff --git a/apps/web/src/hooks/queries/useAssistants/apiCalls.ts b/apps/web/src/hooks/queries/useAssistants/apiCalls.ts index b0b5e27..dbb9e5a 100644 --- a/apps/web/src/hooks/queries/useAssistants/apiCalls.ts +++ b/apps/web/src/hooks/queries/useAssistants/apiCalls.ts @@ -27,8 +27,8 @@ export const useAssistantsRequests = (orgId: string) => { const addAssistant = async ( email: string, role: UserType = UserType.VIEWER - ): Promise => { - const res = await client.post(`${basePath}/${orgId}/user_courses`, { + ) => { + const res = await client.post(`${basePath}/${orgId}/user_courses`, { email, role, }); @@ -38,7 +38,7 @@ export const useAssistantsRequests = (orgId: string) => { const addMultipleAssistants = async ( emails: string[], role: UserType | undefined - ): Promise => { + ): Promise => { if (!role) { throw new Error("Role is required"); } @@ -56,7 +56,7 @@ export const useAssistantsRequests = (orgId: string) => { const removeAssistant = async ( email: string, role: UserType = UserType.VIEWER - ): Promise => { + ): Promise => { return await client.delete(`/api/v1/courses/${orgId}/user_courses`, { data: { email, role }, }); diff --git a/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts b/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts new file mode 100644 index 0000000..c8e5c37 --- /dev/null +++ b/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts @@ -0,0 +1,26 @@ +import { useQueryClient } from "@tanstack/react-query" +import { useQueryKey } from "./queryKey" +import type { Assistant } from "@/types/interfaces"; + +export const useCacheModifiers = (queryKey: ReturnType) => { + const queryClient = useQueryClient() + + const addAssistantsToCache = (assistants: Assistant[]) => { + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [...assistants] + return [...data, ...assistants] + }) + } + + const removeMultipleAssistantsFromCache = (emails: string[]) => { + const emailsSet = new Set(emails) + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [] + return data.filter((assistant) => !emailsSet.has(assistant.email)) + }) + } + return { + addAssistantsToCache, + removeMultipleAssistantsFromCache, + } +} \ No newline at end of file diff --git a/apps/web/src/hooks/queries/useAssistants/index.ts b/apps/web/src/hooks/queries/useAssistants/index.ts index 7604b97..61eaf89 100644 --- a/apps/web/src/hooks/queries/useAssistants/index.ts +++ b/apps/web/src/hooks/queries/useAssistants/index.ts @@ -1,19 +1,20 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import { useQueryKey } from "./queryKey"; import { useAssistantsRequests } from "./apiCalls"; -import { useQueryClient } from "@tanstack/react-query"; import { UserType } from "@/types/enums"; +import { useCacheModifiers } from "./cacheModifiers"; export const useAssistantsQuery = (orgId: string) => { const queryKey = useQueryKey(orgId); const { assistantsQuery } = useAssistantsRequests(orgId); const query = useQuery({ queryKey, queryFn: assistantsQuery }); - return { ...query }; + return query; }; export const useAssistantsMutations = (orgId: string) => { - const queryClient = useQueryClient(); const queryKey = useQueryKey(orgId); + const { addAssistantsToCache, removeMultipleAssistantsFromCache } = + useCacheModifiers(queryKey); const { addAssistant: addAssistantRequest, addMultipleAssistants: addMultipleAssistantsRequest, @@ -29,7 +30,7 @@ export const useAssistantsMutations = (orgId: string) => { email: string; role: UserType | undefined; }) => addAssistantRequest(email, role), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (assistant) => addAssistantsToCache([assistant]), }); const addMultipleAssistants = useMutation({ @@ -40,7 +41,7 @@ export const useAssistantsMutations = (orgId: string) => { emails: string[]; role: UserType | undefined; }) => addMultipleAssistantsRequest(emails, role), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (assistants) => addAssistantsToCache(assistants), }); const removeAssistant = useMutation({ @@ -51,12 +52,13 @@ export const useAssistantsMutations = (orgId: string) => { email: string; role: UserType | undefined; }) => removeAssistantRequest(email, role), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (_, { email }) => removeMultipleAssistantsFromCache([email]), }); const removeMultipleAssistants = useMutation({ mutationFn: removeMultipleAssistantsRequest, - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (_, users) => + removeMultipleAssistantsFromCache(users.map((user) => user.email)), }); return { diff --git a/apps/web/src/hooks/queries/useOrg/index.ts b/apps/web/src/hooks/queries/useOrg/index.ts index 240f38b..68adde0 100644 --- a/apps/web/src/hooks/queries/useOrg/index.ts +++ b/apps/web/src/hooks/queries/useOrg/index.ts @@ -6,7 +6,7 @@ export const useOrgQuery = (orgId: string) => { const queryKey = useQueryKey(orgId); const { orgQuery } = useOrgRequests(orgId); const query = useQuery({ queryKey, queryFn: orgQuery }); - return { ...query }; + return query; }; export const useUserPermissionsOrgQuery = (orgId: string) => { @@ -16,5 +16,5 @@ export const useUserPermissionsOrgQuery = (orgId: string) => { queryKey, queryFn: () => userPermissionsOrgQuery(), }); - return { ...query }; + return query; }; diff --git a/apps/web/src/hooks/queries/useOrgs/apiCalls.ts b/apps/web/src/hooks/queries/useOrgs/apiCalls.ts index 044849f..0f8f1fe 100644 --- a/apps/web/src/hooks/queries/useOrgs/apiCalls.ts +++ b/apps/web/src/hooks/queries/useOrgs/apiCalls.ts @@ -1,5 +1,6 @@ import client from "@/api/client"; import { UserType } from "@/types/enums"; +import type { Org } from "@/types/interfaces"; const basePath = "api/v1/courses"; @@ -16,7 +17,7 @@ export const useOrgsRequests = () => { }; const orgsQuery = async () => { - const res = await client.get(`${basePath}/`); + const res = await client.get<{ courses: Org[] }>(`${basePath}/`); return res.data.courses; }; diff --git a/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts b/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts new file mode 100644 index 0000000..3a8af36 --- /dev/null +++ b/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts @@ -0,0 +1,26 @@ +import { useQueryClient } from "@tanstack/react-query" +import { useQueryKey } from "./queryKey" +import type { Org } from "@/types/interfaces"; + +export const useCacheModifiers = (queryKey: ReturnType) => { + const queryClient = useQueryClient() + + const addOrgToCache = (org: Org) => { + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [org] + return [...data, org] + }) + } + + const removeOrgFromCache = (orgId: string) => { + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [] + return data.filter((org) => org.id !== orgId) + }) + } + + return { + addOrgToCache, + removeOrgFromCache, + } +} \ No newline at end of file diff --git a/apps/web/src/hooks/queries/useOrgs/index.ts b/apps/web/src/hooks/queries/useOrgs/index.ts index 305f56d..546f69d 100644 --- a/apps/web/src/hooks/queries/useOrgs/index.ts +++ b/apps/web/src/hooks/queries/useOrgs/index.ts @@ -2,29 +2,29 @@ import type { CreateOrg } from "@/types/interfaces"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useQueryKey } from "./queryKey"; import { useOrgsRequests } from "./apiCalls"; -import { useQueryClient } from "@tanstack/react-query"; +import { useCacheModifiers } from "./cacheModifiers"; export const useOrgsQuery = () => { const queryKey = useQueryKey(); const { orgsQuery } = useOrgsRequests(); const query = useQuery({ queryKey, queryFn: orgsQuery }); - return { ...query }; + return query; }; export const useOrgsMutations = () => { - const queryClient = useQueryClient(); const queryKey = useQueryKey(); + const { addOrgToCache, removeOrgFromCache } = useCacheModifiers(queryKey); const { createOrg: createOrgRequest, deleteOrg: deleteOrgRequest } = useOrgsRequests(); const createOrg = useMutation({ mutationFn: (org: CreateOrg) => createOrgRequest(org.name, org.slug), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (org) => addOrgToCache(org), }); const deleteOrg = useMutation({ mutationFn: deleteOrgRequest, - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (_, orgId) => removeOrgFromCache(orgId), }); return { createOrg, deleteOrg }; diff --git a/apps/web/src/hooks/queries/useStudents/apiCalls.ts b/apps/web/src/hooks/queries/useStudents/apiCalls.ts index 3f7d2ac..79e020d 100644 --- a/apps/web/src/hooks/queries/useStudents/apiCalls.ts +++ b/apps/web/src/hooks/queries/useStudents/apiCalls.ts @@ -13,7 +13,7 @@ export const useStudentsRequests = (orgId: string) => { const createStudent = async ( studentCodes: string[], displayName: string | undefined - ): Promise => { + ) => { const studentIds = await Promise.all( studentCodes.map( (studentCode: string): Promise => clientHash(studentCode, orgId) @@ -23,13 +23,14 @@ export const useStudentsRequests = (orgId: string) => { if (displayName !== "") { body = { ...body, display_name: displayName }; } - const res = await client.post(`${basePath}/${orgId}/students/`, body); + const res = await client.post<{ student: Student }>( + `${basePath}/${orgId}/students/`, + body + ); return res.data.student; }; - const createMultipleStudents = async ( - students: CreateStudent[] - ): Promise => { + const createMultipleStudents = async (students: CreateStudent[]) => { const studentsWithHash = await Promise.all( students.map( async (student: CreateStudent): Promise => ({ @@ -43,7 +44,7 @@ export const useStudentsRequests = (orgId: string) => { }) ) ); - const res = await client.post( + const res = await client.post<{ students: Student[] }>( `${basePath}/${orgId}/students/batch_create`, { students: studentsWithHash, diff --git a/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts b/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts new file mode 100644 index 0000000..b387dc4 --- /dev/null +++ b/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts @@ -0,0 +1,18 @@ +import { useQueryClient } from "@tanstack/react-query" +import { useQueryKey } from "./queryKey" +import type { Student } from "@/types/interfaces"; + +export const useCacheModifiers = (queryKey: ReturnType) => { + const queryClient = useQueryClient() + + const addStudentsToCache = (students: Student[]) => { + queryClient.setQueryData(queryKey, (data) => { + if (!data) return [...students] + return [...data, ...students] + }) + } + + return { + addStudentsToCache, + } +} \ No newline at end of file diff --git a/apps/web/src/hooks/queries/useStudents/index.ts b/apps/web/src/hooks/queries/useStudents/index.ts index 2df7fc4..6380cf6 100644 --- a/apps/web/src/hooks/queries/useStudents/index.ts +++ b/apps/web/src/hooks/queries/useStudents/index.ts @@ -2,19 +2,19 @@ import type { CreateStudent } from "@/types/interfaces"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useQueryKey } from "./queryKey"; import { useStudentsRequests } from "./apiCalls"; -import { useQueryClient } from "@tanstack/react-query"; +import { useCacheModifiers } from "./cacheModifiers"; export const useStudentsQuery = (orgId: string) => { const queryKey = useQueryKey(orgId); const { studentsQuery } = useStudentsRequests(orgId); const query = useQuery({ queryKey, queryFn: studentsQuery }); - return { ...query }; + return query; }; export const useStudentsMutations = (orgId: string) => { - const queryClient = useQueryClient(); const queryKey = useQueryKey(orgId); + const { addStudentsToCache } = useCacheModifiers(queryKey); const { createStudent: createStudentRequest, createMultipleStudents: createMultipleStudentsRequest, @@ -23,12 +23,12 @@ export const useStudentsMutations = (orgId: string) => { const createStudent = useMutation({ mutationFn: (student: CreateStudent) => createStudentRequest(student.attendance_codes, student.display_name), - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (student) => addStudentsToCache([student]), }); const createMultipleStudents = useMutation({ mutationFn: createMultipleStudentsRequest, - onSuccess: () => queryClient.invalidateQueries({ queryKey }), + onSuccess: (students) => addStudentsToCache(students), }); return { createStudent, createMultipleStudents }; From d5350faa658c7828db2ec76c3ddfae01602f5f6b Mon Sep 17 00:00:00 2001 From: AlfreMK Date: Fri, 6 Sep 2024 23:30:02 -0400 Subject: [PATCH 2/2] style: format --- .../queries/useActivities/cacheModifiers.ts | 28 +++++++++---------- .../hooks/queries/useAssistants/apiCalls.ts | 11 +++++--- .../queries/useAssistants/cacheModifiers.ts | 28 +++++++++---------- .../hooks/queries/useOrgs/cacheModifiers.ts | 26 ++++++++--------- .../queries/useStudents/cacheModifiers.ts | 18 ++++++------ .../src/hooks/queries/useStudents/index.ts | 1 - 6 files changed, 57 insertions(+), 55 deletions(-) diff --git a/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts b/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts index a1ed502..d9d659d 100644 --- a/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts +++ b/apps/web/src/hooks/queries/useActivities/cacheModifiers.ts @@ -1,26 +1,26 @@ -import { useQueryClient } from "@tanstack/react-query" -import { useQueryKey } from "./queryKey" +import { useQueryClient } from "@tanstack/react-query"; +import { useQueryKey } from "./queryKey"; import type { Activity } from "@/types/interfaces"; export const useCacheModifiers = (queryKey: ReturnType) => { - const queryClient = useQueryClient() + const queryClient = useQueryClient(); const addActivitiesToCache = (activities: Activity[]) => { queryClient.setQueryData(queryKey, (data) => { - if (!data) return [...activities] - return [...data, ...activities] - }) - } + if (!data) return [...activities]; + return [...data, ...activities]; + }); + }; const removeMultipleActivitiesFromCache = (slugs: string[]) => { - const slugsSet = new Set(slugs) + const slugsSet = new Set(slugs); queryClient.setQueryData(queryKey, (data) => { - if (!data) return [] - return data.filter((activity) => !slugsSet.has(activity.slug)) - }) - } + if (!data) return []; + return data.filter((activity) => !slugsSet.has(activity.slug)); + }); + }; return { addActivitiesToCache, removeMultipleActivitiesFromCache, - } -} \ No newline at end of file + }; +}; diff --git a/apps/web/src/hooks/queries/useAssistants/apiCalls.ts b/apps/web/src/hooks/queries/useAssistants/apiCalls.ts index dbb9e5a..cbe45c0 100644 --- a/apps/web/src/hooks/queries/useAssistants/apiCalls.ts +++ b/apps/web/src/hooks/queries/useAssistants/apiCalls.ts @@ -28,10 +28,13 @@ export const useAssistantsRequests = (orgId: string) => { email: string, role: UserType = UserType.VIEWER ) => { - const res = await client.post(`${basePath}/${orgId}/user_courses`, { - email, - role, - }); + const res = await client.post( + `${basePath}/${orgId}/user_courses`, + { + email, + role, + } + ); return res.data; }; diff --git a/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts b/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts index c8e5c37..fac91d5 100644 --- a/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts +++ b/apps/web/src/hooks/queries/useAssistants/cacheModifiers.ts @@ -1,26 +1,26 @@ -import { useQueryClient } from "@tanstack/react-query" -import { useQueryKey } from "./queryKey" +import { useQueryClient } from "@tanstack/react-query"; +import { useQueryKey } from "./queryKey"; import type { Assistant } from "@/types/interfaces"; export const useCacheModifiers = (queryKey: ReturnType) => { - const queryClient = useQueryClient() + const queryClient = useQueryClient(); const addAssistantsToCache = (assistants: Assistant[]) => { queryClient.setQueryData(queryKey, (data) => { - if (!data) return [...assistants] - return [...data, ...assistants] - }) - } + if (!data) return [...assistants]; + return [...data, ...assistants]; + }); + }; const removeMultipleAssistantsFromCache = (emails: string[]) => { - const emailsSet = new Set(emails) + const emailsSet = new Set(emails); queryClient.setQueryData(queryKey, (data) => { - if (!data) return [] - return data.filter((assistant) => !emailsSet.has(assistant.email)) - }) - } + if (!data) return []; + return data.filter((assistant) => !emailsSet.has(assistant.email)); + }); + }; return { addAssistantsToCache, removeMultipleAssistantsFromCache, - } -} \ No newline at end of file + }; +}; diff --git a/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts b/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts index 3a8af36..1b348ac 100644 --- a/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts +++ b/apps/web/src/hooks/queries/useOrgs/cacheModifiers.ts @@ -1,26 +1,26 @@ -import { useQueryClient } from "@tanstack/react-query" -import { useQueryKey } from "./queryKey" +import { useQueryClient } from "@tanstack/react-query"; +import { useQueryKey } from "./queryKey"; import type { Org } from "@/types/interfaces"; export const useCacheModifiers = (queryKey: ReturnType) => { - const queryClient = useQueryClient() + const queryClient = useQueryClient(); const addOrgToCache = (org: Org) => { queryClient.setQueryData(queryKey, (data) => { - if (!data) return [org] - return [...data, org] - }) - } + if (!data) return [org]; + return [...data, org]; + }); + }; const removeOrgFromCache = (orgId: string) => { queryClient.setQueryData(queryKey, (data) => { - if (!data) return [] - return data.filter((org) => org.id !== orgId) - }) - } + if (!data) return []; + return data.filter((org) => org.id !== orgId); + }); + }; return { addOrgToCache, removeOrgFromCache, - } -} \ No newline at end of file + }; +}; diff --git a/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts b/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts index b387dc4..90e9dff 100644 --- a/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts +++ b/apps/web/src/hooks/queries/useStudents/cacheModifiers.ts @@ -1,18 +1,18 @@ -import { useQueryClient } from "@tanstack/react-query" -import { useQueryKey } from "./queryKey" +import { useQueryClient } from "@tanstack/react-query"; +import { useQueryKey } from "./queryKey"; import type { Student } from "@/types/interfaces"; export const useCacheModifiers = (queryKey: ReturnType) => { - const queryClient = useQueryClient() + const queryClient = useQueryClient(); const addStudentsToCache = (students: Student[]) => { queryClient.setQueryData(queryKey, (data) => { - if (!data) return [...students] - return [...data, ...students] - }) - } + if (!data) return [...students]; + return [...data, ...students]; + }); + }; return { addStudentsToCache, - } -} \ No newline at end of file + }; +}; diff --git a/apps/web/src/hooks/queries/useStudents/index.ts b/apps/web/src/hooks/queries/useStudents/index.ts index 6380cf6..9b3c48c 100644 --- a/apps/web/src/hooks/queries/useStudents/index.ts +++ b/apps/web/src/hooks/queries/useStudents/index.ts @@ -4,7 +4,6 @@ import { useQueryKey } from "./queryKey"; import { useStudentsRequests } from "./apiCalls"; import { useCacheModifiers } from "./cacheModifiers"; - export const useStudentsQuery = (orgId: string) => { const queryKey = useQueryKey(orgId); const { studentsQuery } = useStudentsRequests(orgId);