mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-24 13:17:10 +08:00
Merge branch 'feat/datacenter' of https://github.com/toeverything/AFFiNE into feat/datacenter
This commit is contained in:
@@ -10,12 +10,10 @@ import {
|
|||||||
UsersIcon,
|
UsersIcon,
|
||||||
AddIcon,
|
AddIcon,
|
||||||
} from '@blocksuite/icons';
|
} from '@blocksuite/icons';
|
||||||
// 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 { useAppState } from '@/providers/app-state-provider';
|
import { useAppState } from '@/providers/app-state-provider';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { useUserHelper } from '@/hooks/use-user-helper';
|
|
||||||
|
|
||||||
interface WorkspaceModalProps {
|
interface WorkspaceModalProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@@ -25,8 +23,7 @@ interface WorkspaceModalProps {
|
|||||||
export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
|
export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
|
||||||
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
|
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
|
||||||
// const { confirm } = useConfirm();
|
// const { confirm } = useConfirm();
|
||||||
const { workspaceList, currentWorkspace } = useAppState();
|
const { workspaceList, currentWorkspace, login, user } = useAppState();
|
||||||
const { login, user } = useUserHelper();
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -11,14 +11,12 @@ import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
|
|||||||
import { useAppState } from '@/providers/app-state-provider';
|
import { useAppState } from '@/providers/app-state-provider';
|
||||||
import { useConfirm } from '@/providers/ConfirmProvider';
|
import { useConfirm } from '@/providers/ConfirmProvider';
|
||||||
import { toast } from '@/ui/toast';
|
import { toast } from '@/ui/toast';
|
||||||
import { useUserHelper } from '@/hooks/use-user-helper';
|
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
export const SyncPage = ({ workspace }: { workspace: WorkspaceInfo }) => {
|
export const SyncPage = ({ workspace }: { workspace: WorkspaceInfo }) => {
|
||||||
// console.log('workspace: ', workspace);
|
// console.log('workspace: ', workspace);
|
||||||
const { enableWorkspace } = useWorkspaceHelper();
|
const { enableWorkspace } = useWorkspaceHelper();
|
||||||
const { currentWorkspace } = useAppState();
|
const { currentWorkspace, user } = useAppState();
|
||||||
const { confirm } = useConfirm();
|
const { confirm } = useConfirm();
|
||||||
const { user, login } = useUserHelper();
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
import { useAppState } from '@/providers/app-state-provider';
|
|
||||||
import { User } from '@affine/datacenter';
|
|
||||||
import { useEffect, useState } from 'react';
|
|
||||||
|
|
||||||
export const useUserHelper = () => {
|
|
||||||
const { dataCenter } = useAppState();
|
|
||||||
const [user, setUser] = useState<User | undefined>(undefined);
|
|
||||||
useEffect(() => {
|
|
||||||
dataCenter
|
|
||||||
.getUserInfo()
|
|
||||||
.then(user => {
|
|
||||||
setUser(user);
|
|
||||||
})
|
|
||||||
.catch(e => {
|
|
||||||
setUser(undefined);
|
|
||||||
});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const login = async () => {
|
|
||||||
await dataCenter.login();
|
|
||||||
const user = await dataCenter.getUserInfo();
|
|
||||||
setUser(user);
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
user,
|
|
||||||
login,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
PageMeta,
|
PageMeta,
|
||||||
} from './interface';
|
} from './interface';
|
||||||
import { createDefaultWorkspace } from './utils';
|
import { createDefaultWorkspace } from './utils';
|
||||||
import { WorkspaceInfo } from '@affine/datacenter';
|
import { WorkspaceInfo, User } from '@affine/datacenter';
|
||||||
|
|
||||||
type AppStateContextProps = PropsWithChildren<Record<string, unknown>>;
|
type AppStateContextProps = PropsWithChildren<Record<string, unknown>>;
|
||||||
|
|
||||||
@@ -127,6 +127,26 @@ export const AppStateProvider = ({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const login = async () => {
|
||||||
|
const { dataCenter } = appState;
|
||||||
|
await dataCenter.login();
|
||||||
|
const user = (await dataCenter.getUserInfo()) as User;
|
||||||
|
setAppState({
|
||||||
|
...appState,
|
||||||
|
user,
|
||||||
|
});
|
||||||
|
return user;
|
||||||
|
};
|
||||||
|
|
||||||
|
const logout = async () => {
|
||||||
|
const { dataCenter } = appState;
|
||||||
|
await dataCenter.logout();
|
||||||
|
setAppState({
|
||||||
|
...appState,
|
||||||
|
user: null,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppState.Provider
|
<AppState.Provider
|
||||||
value={{
|
value={{
|
||||||
@@ -134,6 +154,8 @@ export const AppStateProvider = ({
|
|||||||
setEditor,
|
setEditor,
|
||||||
loadPage: loadPage.current,
|
loadPage: loadPage.current,
|
||||||
loadWorkspace: loadWorkspace.current,
|
loadWorkspace: loadWorkspace.current,
|
||||||
|
login,
|
||||||
|
logout,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ export type AppStateFunction = {
|
|||||||
|
|
||||||
loadWorkspace: (workspaceId: string) => Promise<StoreWorkspace | null>;
|
loadWorkspace: (workspaceId: string) => Promise<StoreWorkspace | null>;
|
||||||
loadPage: (pageId: string) => void;
|
loadPage: (pageId: string) => void;
|
||||||
|
|
||||||
|
login: () => Promise<User>;
|
||||||
|
logout: () => Promise<void>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AppStateContext = AppStateValue & AppStateFunction;
|
export type AppStateContext = AppStateValue & AppStateFunction;
|
||||||
|
|||||||
Reference in New Issue
Block a user