From cfa283116b36e9f13c6296d2ff0f94f498f0c2c6 Mon Sep 17 00:00:00 2001 From: Kunal Vishwakarma <116634168+kunalv17@users.noreply.github.com> Date: Tue, 11 Apr 2023 17:12:34 +0530 Subject: [PATCH] chore: added remove workspace image in workspace settings (#781) --- .../pages/[workspaceSlug]/settings/index.tsx | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/apps/app/pages/[workspaceSlug]/settings/index.tsx b/apps/app/pages/[workspaceSlug]/settings/index.tsx index 1966f765b..f4dae4500 100644 --- a/apps/app/pages/[workspaceSlug]/settings/index.tsx +++ b/apps/app/pages/[workspaceSlug]/settings/index.tsx @@ -18,7 +18,14 @@ import { WorkspaceAuthorizationLayout } from "layouts/auth-layout"; import { ImageUploadModal } from "components/core"; import { DeleteWorkspaceModal } from "components/workspace"; // ui -import { Spinner, Input, CustomSelect, OutlineButton, SecondaryButton } from "components/ui"; +import { + Spinner, + Input, + CustomSelect, + OutlineButton, + SecondaryButton, + DangerButton, +} from "components/ui"; import { BreadcrumbItem, Breadcrumbs } from "components/breadcrumbs"; // icons import { LinkIcon } from "@heroicons/react/24/outline"; @@ -42,6 +49,7 @@ const defaultValues: Partial = { const WorkspaceSettings: NextPage = () => { const [isOpen, setIsOpen] = useState(false); const [isImageUploading, setIsImageUploading] = useState(false); + const [isImageRemoving, setIsImageRemoving] = useState(false); const [isImageUploadModalOpen, setIsImageUploadModalOpen] = useState(false); const router = useRouter(); @@ -85,6 +93,14 @@ const WorkspaceSettings: NextPage = () => { mutate(USER_WORKSPACES, (prevData) => prevData?.map((workspace) => (workspace.id === res.id ? res : workspace)) ); + mutate(WORKSPACE_DETAILS(workspaceSlug as string), (prevData) => { + if (!prevData) return prevData; + + return { + ...prevData, + logo: formData.logo, + }; + }); setToastAlert({ title: "Success", type: "success", @@ -95,12 +111,43 @@ const WorkspaceSettings: NextPage = () => { }; const handleDelete = (url: string | null | undefined) => { - if (!url) return; + if (!activeWorkspace || !url) return; + + setIsImageRemoving(true); const index = url.indexOf(".com"); const asset = url.substring(index + 5); - fileService.deleteFile(asset); + fileService.deleteFile(asset).then(() => { + workspaceService + .updateWorkspace(activeWorkspace.slug, { logo: "" }) + .then((res) => { + setToastAlert({ + type: "success", + title: "Success!", + message: "Workspace picture removed successfully.", + }); + mutate(USER_WORKSPACES, (prevData) => + prevData?.map((workspace) => (workspace.id === res.id ? res : workspace)) + ); + mutate(WORKSPACE_DETAILS(workspaceSlug as string), (prevData) => { + if (!prevData) return prevData; + + return { + ...prevData, + logo: "", + }; + }); + }) + .catch(() => { + setToastAlert({ + type: "error", + title: "Error!", + message: "There was some error in deleting your profile picture. Please try again.", + }); + }) + .finally(() => setIsImageRemoving(false)); + }); }; return ( @@ -161,7 +208,7 @@ const WorkspaceSettings: NextPage = () => { )} -
+
{ setIsImageUploadModalOpen(true); @@ -169,6 +216,11 @@ const WorkspaceSettings: NextPage = () => { > {isImageUploading ? "Uploading..." : "Upload"} + {activeWorkspace.logo && activeWorkspace.logo !== "" && ( + handleDelete(activeWorkspace.logo)}> + {isImageRemoving ? "Removing..." : "Remove"} + + )}