-
+
>
);
}
diff --git a/src/components/app/workspaces/CurrentWorkspace.tsx b/src/components/app/workspaces/CurrentWorkspace.tsx
index 61d85fc6..ccbba60f 100644
--- a/src/components/app/workspaces/CurrentWorkspace.tsx
+++ b/src/components/app/workspaces/CurrentWorkspace.tsx
@@ -1,7 +1,6 @@
import { UserWorkspaceInfo, Workspace } from '@/application/types';
import { ReactComponent as AppFlowyLogo } from '@/assets/icons/appflowy.svg';
-import { getAvatarProps } from '@/components/app/workspaces/utils';
-import { Avatar } from '@mui/material';
+import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
function CurrentWorkspace({
userWorkspaceInfo,
@@ -32,19 +31,18 @@ function CurrentWorkspace({
}
return (
-
+
+ >
+
+
{selectedWorkspace.name}
+
+
{selectedWorkspace.name}
);
diff --git a/src/components/app/workspaces/DeleteWorkspace.tsx b/src/components/app/workspaces/DeleteWorkspace.tsx
index 3757399e..a93f4416 100644
--- a/src/components/app/workspaces/DeleteWorkspace.tsx
+++ b/src/components/app/workspaces/DeleteWorkspace.tsx
@@ -1,20 +1,35 @@
-import React from 'react';
-import { Button } from '@mui/material';
+import { useState } from 'react';
import { useTranslation } from 'react-i18next';
-import { ReactComponent as DeleteSvg } from '@/assets/icons/delete.svg';
-import { NormalModal } from '@/components/_shared/modal';
-import { notify } from '@/components/_shared/notify';
-import { useService } from '@/components/main/app.hooks';
+import { toast } from 'sonner';
-function DeleteWorkspace ({ workspaceId, name, onDeleted }: {
+import { useCurrentWorkspaceId } from '@/components/app/app.hooks';
+import { useService } from '@/components/main/app.hooks';
+import { Button } from '@/components/ui/button';
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+} from '@/components/ui/dialog';
+import { Progress } from '@/components/ui/progress';
+
+function DeleteWorkspace({
+ workspaceId,
+ name,
+ open,
+ openOnChange,
+}: {
name: string;
workspaceId: string;
- onDeleted?: () => void;
+ open: boolean;
+ openOnChange: (open: boolean) => void;
}) {
const { t } = useTranslation();
- const [confirmOpen, setConfirmOpen] = React.useState(false);
- const [loading, setLoading] = React.useState(false);
+ const [loading, setLoading] = useState(false);
const service = useService();
+ const currentWorkspaceId = useCurrentWorkspaceId();
const handleOk = async () => {
if (!service) return;
@@ -22,12 +37,13 @@ function DeleteWorkspace ({ workspaceId, name, onDeleted }: {
try {
setLoading(true);
await service.deleteWorkspace(workspaceId);
- setConfirmOpen(false);
- onDeleted?.();
-
+ openOnChange(false);
+ if (currentWorkspaceId === workspaceId) {
+ window.location.href = `/app`;
+ }
// eslint-disable-next-line
} catch (e: any) {
- notify.error(e.message);
+ toast.error(e.message);
} finally {
setLoading(false);
}
@@ -35,32 +51,33 @@ function DeleteWorkspace ({ workspaceId, name, onDeleted }: {
return (
<>
-
-
- {t('button.delete')}: {name}
- }
- open={confirmOpen}
- onClose={() => setConfirmOpen(false)}
- >
- {t('workspace.deleteWorkspaceHintText')}
-
+
>
);
}
-export default DeleteWorkspace;
\ No newline at end of file
+export default DeleteWorkspace;
diff --git a/src/components/app/workspaces/InviteMember.tsx b/src/components/app/workspaces/InviteMember.tsx
index ac029285..f61206f6 100644
--- a/src/components/app/workspaces/InviteMember.tsx
+++ b/src/components/app/workspaces/InviteMember.tsx
@@ -1,26 +1,31 @@
-import React, { useCallback, useEffect, useMemo, useRef } from 'react';
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useSearchParams } from 'react-router-dom';
import { toast } from 'sonner';
import { SubscriptionPlan, Workspace, WorkspaceMember } from '@/application/types';
-import { ReactComponent as AddUserIcon } from '@/assets/icons/invite_user.svg';
import { ReactComponent as TipIcon } from '@/assets/icons/warning.svg';
import { useAppHandlers } from '@/components/app/app.hooks';
import { useCurrentUser, useService } from '@/components/main/app.hooks';
import { Button } from '@/components/ui/button';
-import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog';
-import { dropdownMenuItemVariants } from '@/components/ui/dropdown-menu';
+import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Progress } from '@/components/ui/progress';
-function InviteMember({ workspace, onClick }: { workspace: Workspace; onClick?: () => void }) {
+function InviteMember({
+ workspace,
+ open,
+ openOnChange,
+}: {
+ workspace: Workspace;
+ open?: boolean;
+ openOnChange?: (open: boolean) => void;
+}) {
const { getSubscriptions } = useAppHandlers();
const { t } = useTranslation();
- const [open, setOpen] = React.useState(false);
- const [value, setValue] = React.useState('');
- const [loading, setLoading] = React.useState(false);
+ const [value, setValue] = useState('');
+ const [loading, setLoading] = useState(false);
const service = useService();
const currentWorkspaceId = workspace.id;
const [, setSearch] = useSearchParams();
@@ -89,7 +94,7 @@ function InviteMember({ workspace, onClick }: { workspace: Workspace; onClick?:
await service.inviteMembers(currentWorkspaceId, emails);
- setOpen(false);
+ openOnChange?.(false);
toast.success(t('inviteMember.inviteSuccess'));
// eslint-disable-next-line
} catch (e: any) {
@@ -119,13 +124,7 @@ function InviteMember({ workspace, onClick }: { workspace: Workspace; onClick?:
return (
<>
-
}
- open={confirmOpen}
- onClose={() => setConfirmOpen(false)}
- >
- {t('workspace.leaveCurrentWorkspacePrompt')}
-
+