Skip to content

Commit

Permalink
fix: home page redirection logic (#752)
Browse files Browse the repository at this point in the history
* fix: dashboard workspace activity mutation

* fix: home page redirection logic

* chore: add homePageRedirect function back
  • Loading branch information
aaryan610 authored Apr 8, 2023
1 parent 03e7441 commit 08e77cb
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const UserAuthorizationLayout: React.FC<Props> = ({ children }) => {
);
}

if (error?.status === 401) {
if (error) {
const redirectTo = router.asPath;

router.push(`/signin?next=${redirectTo}`);
Expand Down
3 changes: 0 additions & 3 deletions apps/app/lib/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,6 @@ export const homePageRedirect = async (cookie?: string) => {
},
};

// FIXME: backend is returning object of user and workspace.
// Get KT if it's required to send user and workspace and if
// yes change below accordingly
if (!user.is_onboarded)
return {
redirect: {
Expand Down
68 changes: 61 additions & 7 deletions apps/app/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -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 = () => {
const router = useRouter();

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;
}

const Home: NextPage = () => null;
if (invitations && invitations.length > 0) {
router.push("/invitations");
return;
} else {
router.push("/create-workspace");
return;
}
}, [user, router, lastActiveWorkspace, workspaces, invitations]);

export const getServerSideProps = (ctx: NextPageContext) => {
const cookies = ctx.req?.headers.cookie;
return homePageRedirect(cookies);
return (
<div className="h-screen grid place-items-center">
<Spinner />
</div>
);
};

export default Home;
1 change: 1 addition & 0 deletions apps/app/pages/installations/[provider]/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ interface IGithuPostInstallationProps {
provider: string;
}

// TODO:Change getServerSideProps to router.query
const AppPostInstallation = ({
installation_id,
setup_action,
Expand Down
7 changes: 4 additions & 3 deletions apps/app/pages/invitations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ import { CubeIcon, PlusIcon } from "@heroicons/react/24/outline";
// types
import type { NextPage } from "next";
import type { IWorkspaceMemberInvitation } from "types";
// fetch-keys
import { USER_WORKSPACE_INVITATIONS } from "constants/fetch-keys";

const OnBoard: NextPage = () => {
const [invitationsRespond, setInvitationsRespond] = useState<string[]>([]);
Expand All @@ -32,9 +34,8 @@ const OnBoard: NextPage = () => {

const { setToastAlert } = useToast();

const { data: invitations, mutate: mutateInvitations } = useSWR(
"USER_WORKSPACE_INVITATIONS",
() => workspaceService.userWorkspaceInvitations()
const { data: invitations, mutate: mutateInvitations } = useSWR(USER_WORKSPACE_INVITATIONS, () =>
workspaceService.userWorkspaceInvitations()
);

const { data: workspaces, mutate: mutateWorkspaces } = useSWR("USER_WORKSPACES", () =>
Expand Down
5 changes: 5 additions & 0 deletions apps/app/pages/onboarding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { useState } from "react";
import Image from "next/image";
import { useRouter } from "next/router";

import { mutate } from "swr";

// services
import userService from "services/user.service";
// hooks
Expand All @@ -20,6 +22,8 @@ import { ONBOARDING_CARDS } from "constants/workspace";
import Logo from "public/onboarding/logo.svg";
// types
import type { NextPage } from "next";
// fetch-keys
import { CURRENT_USER } from "constants/fetch-keys";

const Onboarding: NextPage = () => {
const [step, setStep] = useState(1);
Expand Down Expand Up @@ -72,6 +76,7 @@ const Onboarding: NextPage = () => {
userService
.updateUserOnBoard({ userRole })
.then(() => {
mutate(CURRENT_USER);
router.push("/");
})
.catch((err) => {
Expand Down

1 comment on commit 08e77cb

@vercel
Copy link

@vercel vercel bot commented on 08e77cb Apr 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

plane-dev – ./apps/app

plane-dev.vercel.app
plane-dev-caravel.vercel.app
plane-dev-git-develop-caravel.vercel.app

Please sign in to comment.