mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 02:13:00 +08:00
feat: add createWoresapce function
This commit is contained in:
@@ -6,6 +6,7 @@ import Input from '@/ui/input';
|
|||||||
import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
|
import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
|
||||||
import { KeyboardEvent } from 'react';
|
import { KeyboardEvent } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { useAppState } from '@/providers/app-state-provider';
|
||||||
interface ICloseParams {
|
interface ICloseParams {
|
||||||
workspaceId?: string;
|
workspaceId?: string;
|
||||||
}
|
}
|
||||||
@@ -16,11 +17,11 @@ interface ModalProps {
|
|||||||
|
|
||||||
export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => {
|
export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => {
|
||||||
const [workspaceName, setWorkspaceName] = useState('');
|
const [workspaceName, setWorkspaceName] = useState('');
|
||||||
const { createWorkspace, setActiveWorkspace } = useTemporaryHelper();
|
const { createWorkspace } = useAppState();
|
||||||
const handleCreateWorkspace = () => {
|
const handleCreateWorkspace = () => {
|
||||||
const workspace = createWorkspace(workspaceName);
|
const workspace = createWorkspace(workspaceName);
|
||||||
onClose({ workspaceId: workspace.id });
|
// onClose({ workspaceId: workspace.id });
|
||||||
setActiveWorkspace(workspace);
|
// setActiveWorkspace(workspace);
|
||||||
};
|
};
|
||||||
const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
|
const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
|
||||||
if (event.key === 'Enter') {
|
if (event.key === 'Enter') {
|
||||||
|
|||||||
@@ -10,10 +10,11 @@ import {
|
|||||||
UsersIcon,
|
UsersIcon,
|
||||||
AddIcon,
|
AddIcon,
|
||||||
} from '@blocksuite/icons';
|
} from '@blocksuite/icons';
|
||||||
import { useConfirm } from '@/providers/confirm-provider';
|
import { useConfirm } from '@/providers/ConfirmProvider';
|
||||||
import { toast } from '@/ui/toast';
|
import { toast } from '@/ui/toast';
|
||||||
import { WorkspaceAvatar } from '@/components/workspace-avatar';
|
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 {
|
interface LoginModalProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@@ -23,13 +24,7 @@ interface LoginModalProps {
|
|||||||
export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
||||||
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
|
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
|
||||||
const { confirm } = useConfirm();
|
const { confirm } = useConfirm();
|
||||||
const {
|
const { user, workspaceList } = useAppState();
|
||||||
user,
|
|
||||||
login,
|
|
||||||
workspaceMetaList,
|
|
||||||
setActiveWorkspace,
|
|
||||||
updateWorkspaceMeta,
|
|
||||||
} = useTemporaryHelper();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -51,11 +46,11 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
|||||||
</Header>
|
</Header>
|
||||||
<Content>
|
<Content>
|
||||||
<WorkspaceList>
|
<WorkspaceList>
|
||||||
{workspaceMetaList.map((item, index) => {
|
{workspaceList.map((item, index) => {
|
||||||
return (
|
return (
|
||||||
<WorkspaceItem
|
<WorkspaceItem
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setActiveWorkspace(item);
|
// setActiveWorkspace(item);
|
||||||
onClose();
|
onClose();
|
||||||
}}
|
}}
|
||||||
key={index}
|
key={index}
|
||||||
@@ -93,10 +88,10 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
|||||||
top: '20px',
|
top: '20px',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(item.type === 'local' || !item.type) && (
|
{(item.provider === 'local' || !item.provider) && (
|
||||||
<CloudUnsyncedIcon fontSize={24} />
|
<CloudUnsyncedIcon fontSize={24} />
|
||||||
)}
|
)}
|
||||||
{item.type === 'cloud' && (
|
{item.provider === 'affine' && (
|
||||||
<CloudInsyncIcon fontSize={24} />
|
<CloudInsyncIcon fontSize={24} />
|
||||||
)}
|
)}
|
||||||
{item.isPublish && <UsersIcon fontSize={24} />}
|
{item.isPublish && <UsersIcon fontSize={24} />}
|
||||||
@@ -136,7 +131,7 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
|||||||
{!user ? (
|
{!user ? (
|
||||||
<Button
|
<Button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
login();
|
// login();
|
||||||
toast('login success');
|
toast('login success');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -165,12 +160,12 @@ export const WorkspaceModal = ({ open, onClose }: LoginModalProps) => {
|
|||||||
}).then(confirm => {
|
}).then(confirm => {
|
||||||
if (confirm) {
|
if (confirm) {
|
||||||
if (user) {
|
if (user) {
|
||||||
workspaceId &&
|
// workspaceId &&
|
||||||
updateWorkspaceMeta(workspaceId, { isPublish: true });
|
// updateWorkspaceMeta(workspaceId, { isPublish: true });
|
||||||
} else {
|
} else {
|
||||||
login();
|
// login();
|
||||||
workspaceId &&
|
// workspaceId &&
|
||||||
updateWorkspaceMeta(workspaceId, { isPublish: true });
|
// updateWorkspaceMeta(workspaceId, { isPublish: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
StyledArrowButton,
|
StyledArrowButton,
|
||||||
StyledLink,
|
StyledLink,
|
||||||
StyledListItem,
|
StyledListItem,
|
||||||
|
StyledListItemForWorkspace,
|
||||||
// StyledListItemForWorkspace,
|
// StyledListItemForWorkspace,
|
||||||
StyledNewPageButton,
|
StyledNewPageButton,
|
||||||
StyledSliderBar,
|
StyledSliderBar,
|
||||||
@@ -33,6 +34,7 @@ import usePageMetaList from '@/hooks/use-page-meta-list';
|
|||||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||||
import { WorkspaceSetting } from '@/components/workspace-setting';
|
import { WorkspaceSetting } from '@/components/workspace-setting';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { WorkspaceSelector } from './WorkspaceSelector/WorkspaceSelector';
|
||||||
|
|
||||||
const FavoriteList = ({ showList }: { showList: boolean }) => {
|
const FavoriteList = ({ showList }: { showList: boolean }) => {
|
||||||
const { openPage } = usePageHelper();
|
const { openPage } = usePageHelper();
|
||||||
@@ -113,9 +115,9 @@ export const WorkSpaceSliderBar = () => {
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
<StyledSliderBarWrapper data-testid="sliderBar">
|
<StyledSliderBarWrapper data-testid="sliderBar">
|
||||||
{/* <StyledListItemForWorkspace>
|
<StyledListItemForWorkspace>
|
||||||
<WorkspaceSelector />
|
<WorkspaceSelector />
|
||||||
</StyledListItemForWorkspace> */}
|
</StyledListItemForWorkspace>
|
||||||
<StyledListItem
|
<StyledListItem
|
||||||
data-testid="sliderBar-quickSearchButton"
|
data-testid="sliderBar-quickSearchButton"
|
||||||
style={{ cursor: 'pointer' }}
|
style={{ cursor: 'pointer' }}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ export const AppStateProvider = ({
|
|||||||
const currentWorkspace = await dataCenter.loadWorkspace(
|
const currentWorkspace = await dataCenter.loadWorkspace(
|
||||||
dataCenter.workspaces[0].id
|
dataCenter.workspaces[0].id
|
||||||
);
|
);
|
||||||
|
console.log('currentWorkspace: ', currentWorkspace);
|
||||||
|
|
||||||
setAppState({
|
setAppState({
|
||||||
dataCenter,
|
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 (
|
return (
|
||||||
<AppState.Provider
|
<AppState.Provider
|
||||||
value={{
|
value={{
|
||||||
@@ -146,6 +159,7 @@ export const AppStateProvider = ({
|
|||||||
loadPage,
|
loadPage,
|
||||||
loadWorkspace,
|
loadWorkspace,
|
||||||
createEditor,
|
createEditor,
|
||||||
|
createWorkspace,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<DynamicBlocksuite setCreateEditorHandler={setCreateEditorHandler} />
|
<DynamicBlocksuite setCreateEditorHandler={setCreateEditorHandler} />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import type {
|
|||||||
|
|
||||||
export type AppStateValue = {
|
export type AppStateValue = {
|
||||||
dataCenter: DataCenter;
|
dataCenter: DataCenter;
|
||||||
user: User | null;
|
user: User | undefined;
|
||||||
workspaceList: Workspace[];
|
workspaceList: Workspace[];
|
||||||
currentWorkspace: StoreWorkspace;
|
currentWorkspace: StoreWorkspace;
|
||||||
currentWorkspaceId: string;
|
currentWorkspaceId: string;
|
||||||
@@ -24,6 +24,7 @@ export type AppStateFunction = {
|
|||||||
setEditor: (page: EditorContainer) => void;
|
setEditor: (page: EditorContainer) => void;
|
||||||
loadWorkspace: (workspaceId: string) => Promise<void>;
|
loadWorkspace: (workspaceId: string) => Promise<void>;
|
||||||
loadPage: (pageId: string) => void;
|
loadPage: (pageId: string) => void;
|
||||||
|
createWorkspace: (name: string) => Promise<void>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AppStateContext = AppStateValue & AppStateFunction;
|
export type AppStateContext = AppStateValue & AppStateFunction;
|
||||||
|
|||||||
Reference in New Issue
Block a user