fix: home page redirection logic (#752)
* fix: dashboard workspace activity mutation * fix: home page redirection logic * chore: add homePageRedirect function back
This commit is contained in:
parent
03e74415f2
commit
08e77cb19e
6 changed files with 72 additions and 14 deletions
|
|
@ -1,13 +1,67 @@
|
|||
// lib
|
||||
import { homePageRedirect } from "lib/auth";
|
||||
import { useEffect } from "react";
|
||||
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
import useSWR from "swr";
|
||||
|
||||
// services
|
||||
import workspaceService from "services/workspace.service";
|
||||
// hooks
|
||||
import useUser from "hooks/use-user";
|
||||
import useWorkspaces from "hooks/use-workspaces";
|
||||
// ui
|
||||
import { Spinner } from "components/ui";
|
||||
// types
|
||||
import type { NextPage, NextPageContext } from "next";
|
||||
import type { NextPage } from "next";
|
||||
// fetch-keys
|
||||
import { USER_WORKSPACE_INVITATIONS } from "constants/fetch-keys";
|
||||
|
||||
const Home: NextPage = () => null;
|
||||
const Home: NextPage = () => {
|
||||
const router = useRouter();
|
||||
|
||||
export const getServerSideProps = (ctx: NextPageContext) => {
|
||||
const cookies = ctx.req?.headers.cookie;
|
||||
return homePageRedirect(cookies);
|
||||
const { user } = useUser();
|
||||
const { workspaces } = useWorkspaces();
|
||||
|
||||
const lastActiveWorkspace =
|
||||
user && workspaces.find((workspace) => workspace.id === user.last_workspace_id);
|
||||
|
||||
const { data: invitations } = useSWR(USER_WORKSPACE_INVITATIONS, () =>
|
||||
workspaceService.userWorkspaceInvitations()
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (!user) {
|
||||
router.push("/signin");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!user.is_onboarded) {
|
||||
router.push("/onboarding");
|
||||
return;
|
||||
}
|
||||
|
||||
if (lastActiveWorkspace) {
|
||||
router.push(`/${lastActiveWorkspace.slug}`);
|
||||
return;
|
||||
} else if (workspaces.length > 0) {
|
||||
router.push(`/${workspaces[0].slug}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (invitations && invitations.length > 0) {
|
||||
router.push("/invitations");
|
||||
return;
|
||||
} else {
|
||||
router.push("/create-workspace");
|
||||
return;
|
||||
}
|
||||
}, [user, router, lastActiveWorkspace, workspaces, invitations]);
|
||||
|
||||
return (
|
||||
<div className="h-screen grid place-items-center">
|
||||
<Spinner />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue