feat:add leave workspace
This commit is contained in:
@@ -27,26 +27,12 @@ export const GeneralPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
|
|||||||
const handleChangeWorkSpaceName = (newName: string) => {
|
const handleChangeWorkSpaceName = (newName: string) => {
|
||||||
setWorkspaceName(newName);
|
setWorkspaceName(newName);
|
||||||
};
|
};
|
||||||
const handleClickDelete = () => {
|
|
||||||
setShowDelete(true);
|
|
||||||
};
|
|
||||||
const handleCloseDelete = () => {
|
|
||||||
setShowDelete(false);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleClickLeave = () => {
|
|
||||||
setShowLeave(true);
|
|
||||||
};
|
|
||||||
const handleCloseLeave = () => {
|
|
||||||
setShowLeave(false);
|
|
||||||
};
|
|
||||||
const handleUpdateWorkspaceName = () => {
|
const handleUpdateWorkspaceName = () => {
|
||||||
currentWorkspace &&
|
currentWorkspace &&
|
||||||
updateWorkspace({ name: workspaceName }, currentWorkspace);
|
updateWorkspace({ name: workspaceName }, currentWorkspace);
|
||||||
};
|
};
|
||||||
|
|
||||||
const fileChange = async (file: File) => {
|
const fileChange = async (file: File) => {
|
||||||
// console.log('file: ', file);
|
|
||||||
setUploading(true);
|
setUploading(true);
|
||||||
const blob = new Blob([file], { type: file.type });
|
const blob = new Blob([file], { type: file.type });
|
||||||
currentWorkspace &&
|
currentWorkspace &&
|
||||||
@@ -104,25 +90,39 @@ export const GeneralPage = ({ workspace }: { workspace: WorkspaceUnit }) => {
|
|||||||
<StyledDeleteButtonContainer>
|
<StyledDeleteButtonContainer>
|
||||||
{isOwner ? (
|
{isOwner ? (
|
||||||
<>
|
<>
|
||||||
<Button type="danger" shape="circle" onClick={handleClickDelete}>
|
<Button
|
||||||
|
type="danger"
|
||||||
|
shape="circle"
|
||||||
|
onClick={() => {
|
||||||
|
setShowDelete(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
Delete Workspace
|
Delete Workspace
|
||||||
</Button>
|
</Button>
|
||||||
<WorkspaceDelete
|
<WorkspaceDelete
|
||||||
open={showDelete}
|
open={showDelete}
|
||||||
onClose={handleCloseDelete}
|
onClose={() => {
|
||||||
|
setShowDelete(false);
|
||||||
|
}}
|
||||||
workspace={workspace}
|
workspace={workspace}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<Button type="danger" shape="circle" onClick={handleClickLeave}>
|
<Button
|
||||||
|
type="danger"
|
||||||
|
shape="circle"
|
||||||
|
onClick={() => {
|
||||||
|
setShowLeave(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
Leave Workspace
|
Leave Workspace
|
||||||
</Button>
|
</Button>
|
||||||
<WorkspaceLeave
|
<WorkspaceLeave
|
||||||
open={showLeave}
|
open={showLeave}
|
||||||
onClose={handleCloseLeave}
|
onClose={() => {
|
||||||
workspaceName={workspaceName}
|
setShowLeave(false);
|
||||||
workspaceId={workspace.id}
|
}}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -7,29 +7,19 @@ import {
|
|||||||
} from './style';
|
} from './style';
|
||||||
import { ModalCloseButton } from '@/ui/modal';
|
import { ModalCloseButton } from '@/ui/modal';
|
||||||
import { Button } from '@/ui/button';
|
import { Button } from '@/ui/button';
|
||||||
|
import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
|
||||||
// import { getDataCenter } from '@affine/datacenter';
|
// import { getDataCenter } from '@affine/datacenter';
|
||||||
// import { useAppState } from '@/providers/app-state-provider';
|
// import { useAppState } from '@/providers/app-state-provider';
|
||||||
|
|
||||||
interface WorkspaceDeleteProps {
|
interface WorkspaceDeleteProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
workspaceName: string;
|
|
||||||
workspaceId: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const WorkspaceLeave = ({
|
export const WorkspaceLeave = ({ open, onClose }: WorkspaceDeleteProps) => {
|
||||||
open,
|
const { leaveWorkSpace } = useWorkspaceHelper();
|
||||||
onClose,
|
|
||||||
workspaceId,
|
|
||||||
}: WorkspaceDeleteProps) => {
|
|
||||||
console.log('workspaceId: ', workspaceId);
|
|
||||||
// const router = useRouter();
|
|
||||||
// const { refreshWorkspacesMeta } = useAppState();
|
|
||||||
const handleLeave = async () => {
|
const handleLeave = async () => {
|
||||||
// const dc = await getDataCenter();
|
await leaveWorkSpace();
|
||||||
// await dc.apis.leaveWorkspace({ id: workspaceId });
|
|
||||||
// // router.push(`/workspace/${nextWorkSpaceId}`);
|
|
||||||
// refreshWorkspacesMeta();
|
|
||||||
onClose();
|
onClose();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -47,10 +47,10 @@ export const useWorkspaceHelper = () => {
|
|||||||
if (!user) {
|
if (!user) {
|
||||||
await login();
|
await login();
|
||||||
}
|
}
|
||||||
const newWorkspaceId = await dataCenter.enableWorkspaceCloud(
|
const workspace = await dataCenter.enableWorkspaceCloud(
|
||||||
currentWorkspace
|
currentWorkspace
|
||||||
);
|
);
|
||||||
router.push(`/workspace/${newWorkspaceId}/setting`);
|
workspace && router.push(`/workspace/${workspace.id}/setting`);
|
||||||
toast('Enabled success');
|
toast('Enabled success');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -60,6 +60,9 @@ export const useWorkspaceHelper = () => {
|
|||||||
currentWorkspace &&
|
currentWorkspace &&
|
||||||
(await dataCenter.deleteWorkspace(currentWorkspace?.id));
|
(await dataCenter.deleteWorkspace(currentWorkspace?.id));
|
||||||
};
|
};
|
||||||
|
const leaveWorkSpace = async () => {
|
||||||
|
currentWorkspace && (await dataCenter.leaveWorkspace(currentWorkspace?.id));
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
@@ -67,5 +70,6 @@ export const useWorkspaceHelper = () => {
|
|||||||
updateWorkspace,
|
updateWorkspace,
|
||||||
enableWorkspace,
|
enableWorkspace,
|
||||||
deleteWorkSpace,
|
deleteWorkSpace,
|
||||||
|
leaveWorkSpace,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user