import { StyledDeleteButtonContainer, StyledSettingAvatar, StyledSettingAvatarContent, StyledSettingInputContainer, } from './style'; import { StyledSettingH2 } from '../style'; import { useState } from 'react'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; import { getDataCenter, Workspace, WorkspaceType } from '@affine/datacenter'; import { useAppState } from '@/providers/app-state-provider'; import { WorkspaceDetails } from '@/components/workspace-slider-bar/WorkspaceSelector/SelectorPopperContent'; import { WorkspaceDelete } from './delete'; import { Workspace as StoreWorkspace } from '@blocksuite/store'; import { debounce } from '@/utils'; import { WorkspaceLeave } from './leave'; import { Upload } from '@/components/file-upload'; export const GeneralPage = ({ workspace, owner, }: { workspace: Workspace; owner: WorkspaceDetails[string]['owner']; workspaces: Record; }) => { const { user, currentWorkspace, workspacesMeta, workspaces, refreshWorkspacesMeta, } = useAppState(); const [showDelete, setShowDelete] = useState(false); const [showLeave, setShowLeave] = useState(false); const [uploading, setUploading] = useState(false); const [workspaceName, setWorkspaceName] = useState( workspaces[workspace.id]?.meta.name || (workspace.type === WorkspaceType.Private && user ? user.name : '') ); const debouncedRefreshWorkspacesMeta = debounce(() => { refreshWorkspacesMeta(); }, 100); const isOwner = user && owner.id === user.id; const handleChangeWorkSpaceName = (newName: string) => { setWorkspaceName(newName); currentWorkspace?.meta.setName(newName); workspaces[workspace.id]?.meta.setName(newName); debouncedRefreshWorkspacesMeta(); }; const currentWorkspaceIndex = workspacesMeta.findIndex( meta => meta.id === workspace.id ); const nextWorkSpaceId = currentWorkspaceIndex === workspacesMeta.length - 1 ? workspacesMeta[currentWorkspaceIndex - 1]?.id : workspacesMeta[currentWorkspaceIndex + 1]?.id; const handleClickDelete = () => { setShowDelete(true); }; const handleCloseDelete = () => { setShowDelete(false); }; const handleClickLeave = () => { setShowLeave(true); }; const handleCloseLeave = () => { setShowLeave(false); }; const fileChange = async (file: File) => { setUploading(true); const blob = new Blob([file], { type: file.type }); const blobId = await getDataCenter() .then(dc => dc.apis.uploadBlob({ blob })) .finally(() => { setUploading(false); }); if (blobId) { currentWorkspace?.meta.setAvatar(blobId); workspaces[workspace.id]?.meta.setAvatar(blobId); setUploading(false); debouncedRefreshWorkspacesMeta(); } }; return workspace ? (
Workspace Avatar {workspaces[workspace.id]?.meta.name[0]} {/* TODO: add upload logic */} {/* {isOwner ? ( upload ) : null} */} {/* */} Workspace Name Workspace Owner {isOwner ? ( <> ) : ( <> )}
) : null; };