* Remove workspace schema creation from signUp * Set user workspaceMember nullable * Remove workspace creation * Handle null workspace in tokens * Update onboarding status * Generate types * Move createWorkspace to workspace resolver * Create workspace after signup * Update createWorkspace return type * Update createWorkspace return type * Create core.workspace at signup * WIP * Fix create workspace * Fix create workspace * Clean code * Remove useless recoil set * Simplify create workspace request * Set currentWorkspace at login * Fix tests * Create a recoil value for is workspaceSchema created * Rename createWorkspace to createWorkspaceSchema * Code review returns * Use AppPath when possible * Try without state * Fix * Fixes * Rename createWorkspaceSchema to activateWorkspace * Remove defaultAvatarUrl from user * Add defaultAvatarUrl to core user This reverts commit 1701c30eb18804558293cc42043aedf96ea888df. * Add defaultAvatarUrl to core user This reverts commit 1701c30eb18804558293cc42043aedf96ea888df. * Fix ci * Fix tests * Fix storybook * Fix test * Remove useless query * Fix test * Fix test * Fix mock data * Fix test * Clean Mock Requests * Fix tentative * Revert "Clean Mock Requests" This reverts commit 8aa20a34363ffddfdee24f18fc80b27ea0ad5e1d. * Fix * Revert "Fix" This reverts commit 2df7e9b6569b8bfb53f6a45391db725e28d16a18. * Revert "Revert "Clean Mock Requests"" This reverts commit 3aefef8e9600d161434a047e845563d1b8e0692e. * Revert "Fix tentative" This reverts commit 13e7748d6f3b3858d30fb08adbc8ad347c5556ee. * Update filename --------- Co-authored-by: Charles Bochet <charles@twenty.com>
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { useEffect } from 'react';
|
|
import { useNavigate, useSearchParams } from 'react-router-dom';
|
|
import { isNonEmptyString } from '@sniptt/guards';
|
|
import { useRecoilValue } from 'recoil';
|
|
|
|
import { useAuth } from '@/auth/hooks/useAuth';
|
|
import { useIsLogged } from '@/auth/hooks/useIsLogged';
|
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
|
import { AppPath } from '@/types/AppPath';
|
|
|
|
export const VerifyEffect = () => {
|
|
const [searchParams] = useSearchParams();
|
|
const loginToken = searchParams.get('loginToken');
|
|
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
|
|
|
const isLogged = useIsLogged();
|
|
const navigate = useNavigate();
|
|
|
|
const { verify } = useAuth();
|
|
|
|
useEffect(() => {
|
|
const getTokens = async () => {
|
|
if (!loginToken) {
|
|
navigate(AppPath.SignIn);
|
|
} else {
|
|
await verify(loginToken);
|
|
|
|
if (isNonEmptyString(currentWorkspace?.displayName)) {
|
|
navigate(AppPath.Index);
|
|
} else {
|
|
navigate(AppPath.CreateWorkspace);
|
|
}
|
|
}
|
|
};
|
|
|
|
if (!isLogged) {
|
|
getTokens();
|
|
}
|
|
// Verify only needs to run once at mount
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, []);
|
|
|
|
return <></>;
|
|
};
|