From a20ca95f32e42f14c8f168e89561e2d7c7f8ca42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tha=C3=AFs?= Date: Wed, 20 Sep 2023 15:26:11 +0200 Subject: [PATCH] feat: reset Recoil state on logout (#1675) Closes #1452 --- front/src/modules/auth/hooks/useAuth.ts | 11 +++++-- .../auth/sign-in-up/hooks/useSignInUp.tsx | 11 +++++-- front/src/modules/views/hooks/useViews.ts | 31 ------------------- 3 files changed, 17 insertions(+), 36 deletions(-) diff --git a/front/src/modules/auth/hooks/useAuth.ts b/front/src/modules/auth/hooks/useAuth.ts index 73ac31e72..c41282fe7 100644 --- a/front/src/modules/auth/hooks/useAuth.ts +++ b/front/src/modules/auth/hooks/useAuth.ts @@ -1,6 +1,10 @@ import { useCallback } from 'react'; import { useApolloClient } from '@apollo/client'; -import { useRecoilState } from 'recoil'; +import { + snapshot_UNSTABLE, + useGotoRecoilSnapshot, + useRecoilState, +} from 'recoil'; import { useChallengeMutation, @@ -24,6 +28,8 @@ export const useAuth = () => { const client = useApolloClient(); + const goToRecoilSnapshot = useGotoRecoilSnapshot(); + const handleChallenge = useCallback( async (email: string, password: string) => { const challengeResult = await challenge({ @@ -93,12 +99,13 @@ export const useAuth = () => { ); const handleSignOut = useCallback(() => { + goToRecoilSnapshot(snapshot_UNSTABLE()); setTokenPair(null); setCurrentUser(null); client.clearStore().then(() => { sessionStorage.clear(); }); - }, [setTokenPair, client, setCurrentUser]); + }, [goToRecoilSnapshot, setTokenPair, setCurrentUser, client]); const handleCredentialsSignUp = useCallback( async (email: string, password: string, workspaceInviteHash?: string) => { diff --git a/front/src/modules/auth/sign-in-up/hooks/useSignInUp.tsx b/front/src/modules/auth/sign-in-up/hooks/useSignInUp.tsx index b650a875c..9c8dd8bae 100644 --- a/front/src/modules/auth/sign-in-up/hooks/useSignInUp.tsx +++ b/front/src/modules/auth/sign-in-up/hooks/useSignInUp.tsx @@ -1,4 +1,4 @@ -import { useCallback, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { useNavigate, useParams } from 'react-router-dom'; import { yupResolver } from '@hookform/resolvers/yup'; @@ -71,12 +71,17 @@ export const useSignInUp = () => { mode: 'onChange', defaultValues: { exist: false, - email: isSignInPrefilled ? 'tim@apple.dev' : '', - password: isSignInPrefilled ? 'Applecar2025' : '', }, resolver: yupResolver(validationSchema), }); + useEffect(() => { + if (isSignInPrefilled) { + form.setValue('email', 'tim@apple.dev'); + form.setValue('password', 'Applecar2025'); + } + }, [form, isSignInPrefilled]); + const { signInWithCredentials, signUpWithCredentials, diff --git a/front/src/modules/views/hooks/useViews.ts b/front/src/modules/views/hooks/useViews.ts index ef974b6c5..8e236d381 100644 --- a/front/src/modules/views/hooks/useViews.ts +++ b/front/src/modules/views/hooks/useViews.ts @@ -1,13 +1,8 @@ import { getOperationName } from '@apollo/client/utilities'; -import { useRecoilCallback } from 'recoil'; import { RecoilScopeContext } from '@/types/RecoilScopeContext'; -import { savedBoardCardFieldsFamilyState } from '@/ui/board/states/savedBoardCardFieldsFamilyState'; -import { savedTableColumnsFamilyState } from '@/ui/table/states/savedTableColumnsFamilyState'; import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState'; import { currentViewIdScopedState } from '@/ui/view-bar/states/currentViewIdScopedState'; -import { savedFiltersFamilyState } from '@/ui/view-bar/states/savedFiltersFamilyState'; -import { savedSortsFamilyState } from '@/ui/view-bar/states/savedSortsFamilyState'; import { viewsScopedState } from '@/ui/view-bar/states/viewsScopedState'; import type { View } from '@/ui/view-bar/types/View'; import { @@ -77,19 +72,6 @@ export const useViews = ({ }); }; - const handleResetSavedViews = useRecoilCallback( - ({ reset }) => - () => { - views.forEach((view) => { - reset(savedBoardCardFieldsFamilyState(view.id)); - reset(savedTableColumnsFamilyState(view.id)); - reset(savedFiltersFamilyState(view.id)); - reset(savedSortsFamilyState(view.id)); - }); - }, - [views], - ); - const { loading } = useGetViewsQuery({ variables: { where: { @@ -108,19 +90,6 @@ export const useViews = ({ if (!nextViews.length) return; if (!currentViewId) return setCurrentViewId(nextViews[0].id); - - const currentViewExists = nextViews.some( - (view) => view.id === currentViewId, - ); - - if (currentViewExists) return; - - // currentView does not exist in the list = the user has switched workspaces - // and currentViewId is outdated. - // Select the first view in the list. - setCurrentViewId(nextViews[0].id); - // Reset outdated view recoil states. - handleResetSavedViews(); }, });