mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 05:14:54 +00: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 { 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') {
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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' }}
|
||||
|
||||
@@ -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} />
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user