feat: modify delete workspace flow (#1408)

This commit is contained in:
Qi 2023-03-09 16:54:29 +08:00 committed by GitHub
parent b3659d6a95
commit 31d2e522eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 8 deletions

View File

@ -2,6 +2,7 @@ import { Button, Input, Modal, ModalCloseButton } from '@affine/component';
import { Trans, useTranslation } from '@affine/i18n';
import { useCallback, useState } from 'react';
import { useBlockSuiteWorkspaceName } from '../../../../../../hooks/use-blocksuite-workspace-name';
import {
AffineOfficialWorkspace,
RemWorkspaceFlavour,
@ -28,8 +29,11 @@ export const WorkspaceDeleteModal = ({
workspace,
onDeleteWorkspace,
}: WorkspaceDeleteProps) => {
const [workspaceName] = useBlockSuiteWorkspaceName(
workspace.blockSuiteWorkspace ?? null
);
const [deleteStr, setDeleteStr] = useState<string>('');
const allowDelete = deleteStr.toLowerCase() === 'delete';
const allowDelete = deleteStr === workspaceName;
const { t } = useTranslation();
const handleDelete = useCallback(() => {
@ -46,7 +50,7 @@ export const WorkspaceDeleteModal = ({
<Trans i18nKey="Delete Workspace Description">
Deleting (
<StyledWorkspaceName>
{{ workspace: workspace.blockSuiteWorkspace.meta.name } as any}
{{ workspace: workspaceName } as any}
</StyledWorkspaceName>
) cannot be undone, please proceed with caution. All contents will
be lost.
@ -57,7 +61,7 @@ export const WorkspaceDeleteModal = ({
<Trans i18nKey="Delete Workspace Description2">
Deleting (
<StyledWorkspaceName>
{{ workspace: workspace.blockSuiteWorkspace.meta.name } as any}
{{ workspace: workspaceName } as any}
</StyledWorkspaceName>
) will delete both local and cloud data, this operation cannot be
undone, please proceed with caution.
@ -68,11 +72,11 @@ export const WorkspaceDeleteModal = ({
<Input
onChange={setDeleteStr}
data-testid="delete-workspace-input"
placeholder={t('Delete Workspace placeholder')}
placeholder={t('Placeholder of delete workspace')}
value={deleteStr}
width={284}
width={315}
height={42}
></Input>
/>
</StyledInputContent>
<StyledButtonContent>
<Button shape="circle" onClick={onClose}>

View File

@ -121,7 +121,7 @@
"Create Or Import": "Create or Import",
"Delete Workspace": "Delete Workspace",
"Delete Workspace Description2": "Deleting (<1>{{workspace}}</1>) will delete both local and cloud data, this operation cannot be undone, please proceed with caution.",
"Delete Workspace placeholder": "Please type “Delete” to confirm",
"Placeholder of delete workspace": "Please type workspace name to confirm",
"Leave Workspace": "Leave Workspace",
"Leave": "Leave",
"Workspace Icon": "Workspace Icon",

View File

@ -12,7 +12,13 @@ test.describe('Local first delete workspace', () => {
}) => {
await clickSideBarSettingButton(page);
await page.getByTestId('delete-workspace-button').click();
await page.getByTestId('delete-workspace-input').type('delete');
const workspaceNameDom = await page.getByTestId('workspace-name');
const currentWorkspaceName = await workspaceNameDom.evaluate(
node => node.textContent
);
await page
.getByTestId('delete-workspace-input')
.type(currentWorkspaceName as string);
await page.getByTestId('delete-workspace-confirm-button').click();
expect(await page.getByTestId('workspace-card').count()).toBe(0);
await page.mouse.click(1, 1);