mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 21:27:20 +00:00
feat: refactor user & login function
This commit is contained in:
@@ -10,12 +10,10 @@ import {
|
||||
UsersIcon,
|
||||
AddIcon,
|
||||
} from '@blocksuite/icons';
|
||||
// import { useConfirm } from '@/providers/ConfirmProvider';
|
||||
import { toast } from '@/ui/toast';
|
||||
import { WorkspaceAvatar } from '@/components/workspace-avatar';
|
||||
import { useAppState } from '@/providers/app-state-provider';
|
||||
import { useRouter } from 'next/router';
|
||||
import { useUserHelper } from '@/hooks/use-user-helper';
|
||||
|
||||
interface WorkspaceModalProps {
|
||||
open: boolean;
|
||||
@@ -25,8 +23,7 @@ interface WorkspaceModalProps {
|
||||
export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
|
||||
const [createWorkspaceOpen, setCreateWorkspaceOpen] = useState(false);
|
||||
// const { confirm } = useConfirm();
|
||||
const { workspaceList, currentWorkspace } = useAppState();
|
||||
const { login, user } = useUserHelper();
|
||||
const { workspaceList, currentWorkspace, login, user } = useAppState();
|
||||
const router = useRouter();
|
||||
return (
|
||||
<div>
|
||||
|
||||
@@ -11,14 +11,12 @@ import { useWorkspaceHelper } from '@/hooks/use-workspace-helper';
|
||||
import { useAppState } from '@/providers/app-state-provider';
|
||||
import { useConfirm } from '@/providers/ConfirmProvider';
|
||||
import { toast } from '@/ui/toast';
|
||||
import { useUserHelper } from '@/hooks/use-user-helper';
|
||||
import { useRouter } from 'next/router';
|
||||
export const SyncPage = ({ workspace }: { workspace: WorkspaceInfo }) => {
|
||||
// console.log('workspace: ', workspace);
|
||||
const { enableWorkspace } = useWorkspaceHelper();
|
||||
const { currentWorkspace } = useAppState();
|
||||
const { currentWorkspace, user } = useAppState();
|
||||
const { confirm } = useConfirm();
|
||||
const { user, login } = useUserHelper();
|
||||
const router = useRouter();
|
||||
return (
|
||||
<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,
|
||||
} from './interface';
|
||||
import { createDefaultWorkspace } from './utils';
|
||||
import { WorkspaceInfo } from '@affine/datacenter';
|
||||
import { WorkspaceInfo, User } from '@affine/datacenter';
|
||||
|
||||
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 (
|
||||
<AppState.Provider
|
||||
value={{
|
||||
@@ -134,6 +154,8 @@ export const AppStateProvider = ({
|
||||
setEditor,
|
||||
loadPage: loadPage.current,
|
||||
loadWorkspace: loadWorkspace.current,
|
||||
login,
|
||||
logout,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
@@ -33,6 +33,9 @@ export type AppStateFunction = {
|
||||
|
||||
loadWorkspace: (workspaceId: string) => Promise<StoreWorkspace | null>;
|
||||
loadPage: (pageId: string) => void;
|
||||
|
||||
login: () => Promise<User>;
|
||||
logout: () => Promise<void>;
|
||||
};
|
||||
|
||||
export type AppStateContext = AppStateValue & AppStateFunction;
|
||||
|
||||
Reference in New Issue
Block a user