import { useTranslation } from '@affine/i18n'; import { PermissionType } from '@affine/workspace/affine/api'; import { WorkspaceFlavour } from '@affine/workspace/type'; import { SettingsIcon } from '@blocksuite/icons'; import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-blocksuite-workspace-name'; import type React from 'react'; import { useCallback } from 'react'; import type { AllWorkspace } from '../../../shared'; import { CloudWorkspaceIcon, JoinedWorkspaceIcon, LocalDataIcon, LocalWorkspaceIcon, PublishIcon, } from '../icons'; import { WorkspaceAvatar } from '../workspace-avatar'; import { StyledCard, StyledSettingLink, StyleWorkspaceInfo, StyleWorkspaceTitle, } from './styles'; export type WorkspaceTypeProps = { workspace: AllWorkspace; }; const WorkspaceType: React.FC = ({ workspace }) => { const { t } = useTranslation(); let isOwner = true; if (workspace.flavour === WorkspaceFlavour.AFFINE) { isOwner = workspace.permission === PermissionType.Owner; } else if (workspace.flavour === WorkspaceFlavour.LOCAL) { isOwner = true; } if (workspace.flavour === WorkspaceFlavour.LOCAL) { return (

{t('Local Workspace')}

); } return isOwner ? (

{t('Cloud Workspace')}

) : (

{t('Joined Workspace')}

); }; export type WorkspaceCardProps = { currentWorkspaceId: string | null; workspace: AllWorkspace; onClick: (workspace: AllWorkspace) => void; onSettingClick: (workspace: AllWorkspace) => void; }; export const WorkspaceCard: React.FC = ({ workspace, onClick, onSettingClick, currentWorkspaceId, }) => { const { t } = useTranslation(); const [name] = useBlockSuiteWorkspaceName(workspace.blockSuiteWorkspace); return ( { onClick(workspace); }, [onClick, workspace])} active={workspace.id === currentWorkspaceId} > {name} {workspace.flavour === WorkspaceFlavour.LOCAL && (

{t('Available Offline')}

)} {workspace.flavour === WorkspaceFlavour.AFFINE && workspace.public && (

{t('Published to Web')}

)}
{ e.stopPropagation(); onSettingClick(workspace); }} >
); };