import { useState } from "react"; import Image from "next/image"; import Router, { useRouter } from "next/router"; import { mutate } from "swr"; // services import userService from "services/user.service"; import workspaceService from "services/workspace.service"; // hooks import useUserAuth from "hooks/use-user-auth"; // layouts import DefaultLayout from "layouts/default-layout"; import { UserAuthorizationLayout } from "layouts/auth-layout/user-authorization-wrapper"; // components import { InviteMembers, OnboardingCard, OnboardingLogo, UserDetails, Workspace, } from "components/onboarding"; // ui import { PrimaryButton, Spinner } from "components/ui"; // constant import { ONBOARDING_CARDS } from "constants/workspace"; // types import type { NextPage } from "next"; import { ICurrentUserResponse } from "types"; // fetch-keys import { CURRENT_USER } from "constants/fetch-keys"; const Onboarding: NextPage = () => { const [step, setStep] = useState(1); const [userRole, setUserRole] = useState(null); const [isLoading, setIsLoading] = useState(false); const [workspace, setWorkspace] = useState(); const router = useRouter(); const { user, mutateUser } = useUserAuth("onboarding"); return ( {isLoading ? (
) : (
{step <= 3 ? (
{step === 1 ? ( ) : step === 2 ? ( ) : ( )}
) : (
{step === 4 ? ( ) : step === 5 ? ( ) : step === 6 ? ( ) : step === 7 ? ( ) : ( )}
{ if (step === 8) { setIsLoading(true); userService .updateUserOnBoard({ userRole }, user) .then(async () => { mutate( CURRENT_USER, (prevData) => { if (!prevData) return prevData; return { ...prevData, user: { ...prevData.user, is_onboarded: true, }, }; }, false ); const userWorkspaces = await workspaceService.userWorkspaces(); const lastActiveWorkspace = userWorkspaces.find( (workspace) => workspace.id === user?.last_workspace_id ) ?? userWorkspaces[0]; if (lastActiveWorkspace) { userService .updateUser({ last_workspace_id: lastActiveWorkspace.id, }) .then((res) => { mutateUser(); }) .catch((err) => { console.log(err); }); Router.push(`/${lastActiveWorkspace.slug}`); return; } else { const invitations = await workspaceService.userWorkspaceInvitations(); if (invitations.length > 0) { Router.push(`/invitations`); return; } else { Router.push(`/create-workspace`); return; } } }) .catch((err) => { setIsLoading(false); console.log(err); }); } else setStep((prevData) => prevData + 1); }} > {step === 4 || step === 8 ? "Get Started" : "Next"}
)}
Logged in: {user?.email}
)}
); }; export default Onboarding;