feat: add createWoresapce function

This commit is contained in:
DiamondThree
2023-01-09 17:25:00 +08:00
parent 28b2943dc6
commit d6640e0793
5 changed files with 38 additions and 25 deletions

View File

@@ -6,6 +6,7 @@ import Input from '@/ui/input';
import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
import { KeyboardEvent } from 'react';
import { useTranslation } from 'react-i18next';
import { useAppState } from '@/providers/app-state-provider';
interface ICloseParams {
workspaceId?: string;
}
@@ -16,11 +17,11 @@ interface ModalProps {
export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => {
const [workspaceName, setWorkspaceName] = useState('');
const { createWorkspace, setActiveWorkspace } = useTemporaryHelper();
const { createWorkspace } = useAppState();
const handleCreateWorkspace = () => {
const workspace = createWorkspace(workspaceName);
onClose({ workspaceId: workspace.id });
setActiveWorkspace(workspace);
// onClose({ workspaceId: workspace.id });
// setActiveWorkspace(workspace);
};
const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
if (event.key === 'Enter') {

View File

@@ -10,10 +10,11 @@ import {
UsersIcon,
AddIcon,
} from '@blocksuite/icons';
import { useConfirm } from '@/providers/confirm-provider';
import { useConfirm } from '@/providers/ConfirmProvider';
import { toast } from '@/ui/toast';
import { WorkspaceAvatar } from '@/components/workspace-avatar';
import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
// import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
import { useAppState } from '@/providers/app-state-provider';
interface LoginModalProps {
open: boolean;
@@ -23,13 +24,7 @@ interface LoginModalProps {
export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
const { confirm } = useConfirm();
const {
user,
login,
workspaceMetaList,
setActiveWorkspace,
updateWorkspaceMeta,
} = useTemporaryHelper();
const { user, workspaceList } = useAppState();
return (
<div>
@@ -51,11 +46,11 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
</Header>
<Content>
<WorkspaceList>
{workspaceMetaList.map((item, index) => {
{workspaceList.map((item, index) => {
return (
<WorkspaceItem
onClick={() => {
setActiveWorkspace(item);
// setActiveWorkspace(item);
onClose();
}}
key={index}
@@ -93,10 +88,10 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
top: '20px',
}}
>
{(item.type === 'local' || !item.type) && (
{(item.provider === 'local' || !item.provider) && (
<CloudUnsyncedIcon fontSize={24} />
)}
{item.type === 'cloud' && (
{item.provider === 'affine' && (
<CloudInsyncIcon fontSize={24} />
)}
{item.isPublish && <UsersIcon fontSize={24} />}
@@ -136,7 +131,7 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
{!user ? (
<Button
onClick={() => {
login();
// login();
toast('login success');
}}
>
@@ -165,12 +160,12 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
}).then(confirm => {
if (confirm) {
if (user) {
workspaceId &&
updateWorkspaceMeta(workspaceId, { isPublish: true });
// workspaceId &&
// updateWorkspaceMeta(workspaceId, { isPublish: true });
} else {
login();
workspaceId &&
updateWorkspaceMeta(workspaceId, { isPublish: true });
// login();
// workspaceId &&
// updateWorkspaceMeta(workspaceId, { isPublish: true });
}
}
});

View File

@@ -4,6 +4,7 @@ import {
StyledArrowButton,
StyledLink,
StyledListItem,
StyledListItemForWorkspace,
// StyledListItemForWorkspace,
StyledNewPageButton,
StyledSliderBar,
@@ -33,6 +34,7 @@ import usePageMetaList from '@/hooks/use-page-meta-list';
import { usePageHelper } from '@/hooks/use-page-helper';
import { WorkspaceSetting } from '@/components/workspace-setting';
import { useTranslation } from 'react-i18next';
import { WorkspaceSelector } from './WorkspaceSelector/WorkspaceSelector';
const FavoriteList = ({ showList }: { showList: boolean }) => {
const { openPage } = usePageHelper();
@@ -113,9 +115,9 @@ export const WorkSpaceSliderBar = () => {
</Tooltip>
<StyledSliderBarWrapper data-testid="sliderBar">
{/* <StyledListItemForWorkspace>
<StyledListItemForWorkspace>
<WorkspaceSelector />
</StyledListItemForWorkspace> */}
</StyledListItemForWorkspace>
<StyledListItem
data-testid="sliderBar-quickSearchButton"
style={{ cursor: 'pointer' }}

View File

@@ -47,6 +47,7 @@ export const AppStateProvider = ({
const currentWorkspace = await dataCenter.loadWorkspace(
dataCenter.workspaces[0].id
);
console.log('currentWorkspace: ', currentWorkspace);
setAppState({
dataCenter,
@@ -138,6 +139,18 @@ export const AppStateProvider = ({
});
};
const createWorkspace = async (name: string) => {
const { dataCenter } = appState;
const workspaceInfo = await dataCenter.createWorkspace({
name: name,
avatar: 'cccc',
});
if (workspaceInfo && workspaceInfo.room) {
const workspace = await dataCenter.loadWorkspace(workspaceInfo.room);
console.log('workspace: ', workspace);
}
};
return (
<AppState.Provider
value={{
@@ -146,6 +159,7 @@ export const AppStateProvider = ({
loadPage,
loadWorkspace,
createEditor,
createWorkspace,
}}
>
<DynamicBlocksuite setCreateEditorHandler={setCreateEditorHandler} />

View File

@@ -9,7 +9,7 @@ import type {
export type AppStateValue = {
dataCenter: DataCenter;
user: User | null;
user: User | undefined;
workspaceList: Workspace[];
currentWorkspace: StoreWorkspace;
currentWorkspaceId: string;
@@ -24,6 +24,7 @@ export type AppStateFunction = {
setEditor: (page: EditorContainer) => void;
loadWorkspace: (workspaceId: string) => Promise<void>;
loadPage: (pageId: string) => void;
createWorkspace: (name: string) => Promise<void>;
};
export type AppStateContext = AppStateValue & AppStateFunction;