From e9c5e5e6278b4625ae0855e19cbb06d643acb04f Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Thu, 2 May 2024 00:24:51 +0200 Subject: [PATCH] Fix token refresh resseting the player (#461) --- front/packages/models/src/accounts.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/front/packages/models/src/accounts.tsx b/front/packages/models/src/accounts.tsx index 1eb0b79d..b92a9ac8 100644 --- a/front/packages/models/src/accounts.tsx +++ b/front/packages/models/src/accounts.tsx @@ -141,14 +141,20 @@ export const AccountProvider = ({ }, [selected, user]); const queryClient = useQueryClient(); - const oldSelectedToken = useRef(selected?.token.access_token); + const oldSelected = useRef<{ id: string; token: string } | null>( + selected ? { id: selected.id, token: selected.token.access_token } : null, + ); + const userIsError = user.isError; useEffect(() => { // if the user change account (or connect/disconnect), reset query cache. - if (selected?.token.access_token !== oldSelectedToken.current) { + if ( + selected?.id != oldSelected.current?.id || + (userIsError && selected?.token.access_token !== oldSelected.current?.token) + ) { initialSsrError.current = undefined; queryClient.resetQueries(); } - oldSelectedToken.current = selected?.token.access_token; + oldSelected.current = selected ? { id: selected.id, token: selected.token.access_token } : null; // update cookies for ssr (needs to contains token, theme, language...) if (Platform.OS === "web") { @@ -156,7 +162,7 @@ export const AccountProvider = ({ // cookie used for images and videos since we can't add Authorization headers in img or video tags. setCookie("X-Bearer", selected?.token.access_token); } - }, [selected, queryClient]); + }, [selected, queryClient, userIsError]); const [permissionError, setPermissionError] = useState(null);