From 52b9b72e3dbe7fb3f9303d2f65de6d88083b3963 Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Thu, 19 Oct 2023 15:47:42 +0000 Subject: [PATCH 1/3] fix: do not cache getAuthenticatedUser call --- site/index.html | 1 - site/src/api/queries/users.ts | 20 ++++--------------- .../components/AuthProvider/AuthProvider.tsx | 2 +- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/site/index.html b/site/index.html index f02d25b77762a..6e9ea41a76088 100644 --- a/site/index.html +++ b/site/index.html @@ -17,7 +17,6 @@ - diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 2d3f1dbc58c2e..5ec91ce69f2d8 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -5,10 +5,8 @@ import { GetUsersResponse, UpdateUserPasswordRequest, UpdateUserProfileRequest, - User, UsersRequest, } from "api/typesGenerated"; -import { getMetadataAsJSON } from "utils/metadata"; import { getAuthorizationKey } from "./authCheck"; export const users = (req: UsersRequest): UseQueryOptions => { @@ -89,21 +87,11 @@ export const authMethods = () => { }; }; -const initialMeData = getMetadataAsJSON("user"); -const meKey = ["me"] as const; - -export const me = (queryClient: QueryClient) => { +export const me = () => { return { - queryKey: meKey, - queryFn: async () => { - const cachedData = queryClient.getQueryData(meKey); - if (cachedData === undefined && initialMeData !== undefined) { - return initialMeData; - } - - return API.getAuthenticatedUser(); - }, - } satisfies UseQueryOptions; + queryKey: ["me"], + queryFn: async () => API.getAuthenticatedUser(), + }; }; export const hasFirstUser = () => { diff --git a/site/src/components/AuthProvider/AuthProvider.tsx b/site/src/components/AuthProvider/AuthProvider.tsx index c62bd72d27a0e..98327b0a7caf1 100644 --- a/site/src/components/AuthProvider/AuthProvider.tsx +++ b/site/src/components/AuthProvider/AuthProvider.tsx @@ -46,7 +46,7 @@ const AuthContext = createContext(undefined); export const AuthProvider: FC = ({ children }) => { const queryClient = useQueryClient(); - const meOptions = me(queryClient); + const meOptions = me(); const userQuery = useQuery(meOptions); const authMethodsQuery = useQuery(authMethods()); From 9f459d9fceddaeb3a6e38b4a8715136bad78d821 Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Thu, 19 Oct 2023 18:03:12 +0000 Subject: [PATCH 2/3] use initialQuery, add back meta tag for initial load of users --- site/index.html | 1 + site/src/api/queries/users.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/site/index.html b/site/index.html index 6e9ea41a76088..f02d25b77762a 100644 --- a/site/index.html +++ b/site/index.html @@ -17,6 +17,7 @@ + diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 5ec91ce69f2d8..57cabf4aa9f88 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -6,8 +6,10 @@ import { UpdateUserPasswordRequest, UpdateUserProfileRequest, UsersRequest, + User, } from "api/typesGenerated"; import { getAuthorizationKey } from "./authCheck"; +import { getMetadataAsJSON } from "utils/metadata"; export const users = (req: UsersRequest): UseQueryOptions => { return { @@ -90,7 +92,8 @@ export const authMethods = () => { export const me = () => { return { queryKey: ["me"], - queryFn: async () => API.getAuthenticatedUser(), + initialData: getMetadataAsJSON("user"), + queryFn: API.getAuthenticatedUser, }; }; From 00f4d62ce31e15c8911f6c58cbb69aa076ed057c Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Thu, 19 Oct 2023 18:27:48 +0000 Subject: [PATCH 3/3] lift initialUserData --- site/src/api/queries/users.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 57cabf4aa9f88..8f335c6525f7b 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -89,10 +89,12 @@ export const authMethods = () => { }; }; +const initialUserData = getMetadataAsJSON("user"); + export const me = () => { return { queryKey: ["me"], - initialData: getMetadataAsJSON("user"), + initialData: initialUserData, queryFn: API.getAuthenticatedUser, }; };