From 0c39f0c5636d87e56e3a6bab98800de5d6ebff2d Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Fri, 31 Mar 2023 03:09:55 +0530 Subject: [PATCH] style: custom error page (#638) --- apps/app/components/core/issues-view.tsx | 9 ++- .../components/workspace/sidebar-dropdown.tsx | 30 ++++--- apps/app/pages/_error.js | 78 ++++++++++++++++--- 3 files changed, 92 insertions(+), 25 deletions(-) diff --git a/apps/app/components/core/issues-view.tsx b/apps/app/components/core/issues-view.tsx index e71eab695..be1e92c99 100644 --- a/apps/app/components/core/issues-view.tsx +++ b/apps/app/components/core/issues-view.tsx @@ -411,8 +411,8 @@ export const IssuesView: React.FC = ({ data={issueToDelete} /> setTransferIssuesModal(false)} - isOpen={transferIssuesModal} + handleClose={() => setTransferIssuesModal(false)} + isOpen={transferIssuesModal} />
@@ -474,7 +474,10 @@ export const IssuesView: React.FC = ({ Completed cycles are not editable.
- setTransferIssuesModal(true)} className="flex items-center gap-3 rounded-lg"> + setTransferIssuesModal(true)} + className="flex items-center gap-3 rounded-lg" + > Transfer Issues diff --git a/apps/app/components/workspace/sidebar-dropdown.tsx b/apps/app/components/workspace/sidebar-dropdown.tsx index d8953ea89..50defdd4b 100644 --- a/apps/app/components/workspace/sidebar-dropdown.tsx +++ b/apps/app/components/workspace/sidebar-dropdown.tsx @@ -3,19 +3,19 @@ import { Menu, Transition } from "@headlessui/react"; import { useRouter } from "next/router"; import Image from "next/image"; import Link from "next/link"; -import { CheckIcon, ChevronDownIcon, PlusIcon } from "@heroicons/react/24/outline"; +import { CheckIcon, PlusIcon } from "@heroicons/react/24/outline"; // hooks import useUser from "hooks/use-user"; import useTheme from "hooks/use-theme"; import useWorkspaces from "hooks/use-workspaces"; +import useToast from "hooks/use-toast"; // services import userService from "services/user.service"; import authenticationService from "services/authentication.service"; // components -import { Avatar, Loader, Tooltip } from "components/ui"; +import { Avatar, Loader } from "components/ui"; // helper import { truncateText } from "helpers/string.helper"; - // types import { IWorkspace } from "types"; @@ -42,6 +42,9 @@ export const WorkspaceSidebarDropdown = () => { const { user, mutateUser } = useUser(); // fetching theme context const { collapsed: sidebarCollapse } = useTheme(); + + const { setToastAlert } = useToast(); + // fetching workspaces const { activeWorkspace, workspaces } = useWorkspaces(); @@ -54,18 +57,25 @@ export const WorkspaceSidebarDropdown = () => { mutateUser(); router.push(`/${workspace.slug}/`); }) - .catch((err) => console.error(err)); + .catch(() => + setToastAlert({ + type: "error", + title: "Error!", + message: "Failed to navigate to the workspace. Please try again.", + }) + ); }; const handleSignOut = async () => { await authenticationService .signOut() - .then((response) => { - console.log("user signed out", response); - }) - .catch((error) => { - console.log("Failed to sign out", error); - }) + .catch(() => + setToastAlert({ + type: "error", + title: "Error!", + message: "Failed to sign out. Please try again.", + }) + ) .finally(() => { mutateUser(); router.push("/signin"); diff --git a/apps/app/pages/_error.js b/apps/app/pages/_error.js index 1ccedd13a..8dc767e56 100644 --- a/apps/app/pages/_error.js +++ b/apps/app/pages/_error.js @@ -17,21 +17,75 @@ */ import * as Sentry from "@sentry/nextjs"; -import NextErrorComponent from "next/error"; -const CustomErrorComponent = ({ statusCode }) => { - console.log(statusCode, "statusCode"); +import { useRouter } from "next/router"; + +// services +import authenticationService from "services/authentication.service"; +// hooks +import useToast from "hooks/use-toast"; +// layouts +import DefaultLayout from "layouts/default-layout"; +// ui +import { PrimaryButton, SecondaryButton } from "components/ui"; + +const CustomErrorComponent = () => { + const router = useRouter(); + + const { setToastAlert } = useToast(); + + const handleSignOut = async () => { + await authenticationService + .signOut() + .catch(() => + setToastAlert({ + type: "error", + title: "Error!", + message: "Failed to sign out. Please try again.", + }) + ) + .finally(() => router.push("/signin")); + }; return ( -

- We{"'"}re Sorry! An exception has been detected, and our engineering team has been notified. - We apologize for any inconvenience this may have caused. Please reach out to our engineering - team at support@plane.so or on our{" "} - - Discord - {" "} - server for further assistance. -

+ +
+
+
+

Exception Detected!

+

+ We{"'"}re Sorry! An exception has been detected, and our engineering team has been + notified. We apologize for any inconvenience this may have caused. Please reach out to + our engineering team at{" "} + + support@plane.so + {" "} + or on our{" "} + + Discord + {" "} + server for further assistance. +

+
+
+ Go back + + Sign out + +
+
+
+
); };