fix: delete mock data
This commit is contained in:
@@ -1,160 +0,0 @@
|
|||||||
export interface Workspace {
|
|
||||||
name: string; // 名称
|
|
||||||
id: string; //唯一标识
|
|
||||||
isPublish?: boolean; // 是否公开
|
|
||||||
isLocal?: boolean; // 是否全部数据都在本地
|
|
||||||
avatar?: string; // 封面
|
|
||||||
type: 'local' | 'cloud' | 'join'; // cloud: 云端(本次暂不支持),local: 本地,join : 加入别人的
|
|
||||||
workspaceOwner?: User; // 本地工作空间的拥有者
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface User {
|
|
||||||
name: string;
|
|
||||||
id: string;
|
|
||||||
email: string;
|
|
||||||
avatar: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function updateWorkspaceMeta(
|
|
||||||
workspaceId: string,
|
|
||||||
workspaceData: {
|
|
||||||
name?: string;
|
|
||||||
avatar?: string;
|
|
||||||
type?: 'local' | 'cloud' | 'join';
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.map((workspace: Workspace) => {
|
|
||||||
if (workspace.id === workspaceId) {
|
|
||||||
workspaceData.name && (workspace.name = workspaceData.name);
|
|
||||||
workspaceData.avatar && (workspace.avatar = workspaceData.avatar);
|
|
||||||
workspaceData.type && (workspace.type = workspaceData.type);
|
|
||||||
return workspaceData;
|
|
||||||
}
|
|
||||||
return workspace;
|
|
||||||
});
|
|
||||||
localStorage.setItem('affine-workspace', JSON.stringify(newWorkspacesMeta));
|
|
||||||
const activeWorkspace = getActiveWorkspace();
|
|
||||||
workspaceData.name && (activeWorkspace.name = workspaceData.name);
|
|
||||||
workspaceData.avatar && (activeWorkspace.avatar = workspaceData.avatar);
|
|
||||||
|
|
||||||
workspaceData.type && (activeWorkspace.type = workspaceData.type);
|
|
||||||
console.log(workspaceData);
|
|
||||||
setActiveWorkspace(activeWorkspace);
|
|
||||||
}
|
|
||||||
export function createWorkspace(workspaceName: string) {
|
|
||||||
const workspaceId = 'workspace-' + Date.now();
|
|
||||||
const workspaceData = {
|
|
||||||
name: workspaceName,
|
|
||||||
id: workspaceId,
|
|
||||||
isPublish: false,
|
|
||||||
isLocal: true,
|
|
||||||
avatar: '',
|
|
||||||
type: 'local',
|
|
||||||
} as Workspace;
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
workspacesMeta.push(workspaceData);
|
|
||||||
localStorage.setItem('affine-workspace', JSON.stringify(workspacesMeta));
|
|
||||||
setActiveWorkspace(workspaceData);
|
|
||||||
return { workspaceId };
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getWorkspaces(): Workspace[] {
|
|
||||||
const workspacesMeta = JSON.parse(
|
|
||||||
localStorage.getItem('affine-workspace') ?? '[]'
|
|
||||||
);
|
|
||||||
return workspacesMeta;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function deleteWorkspace(workspaceId: string) {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.filter(() => {
|
|
||||||
return workspaceId !== workspaceId;
|
|
||||||
});
|
|
||||||
localStorage.setItem('affine-workspace', JSON.stringify(newWorkspacesMeta));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getMembers(id: string): User[] {
|
|
||||||
const memberMap = JSON.parse(localStorage.getItem('affine-member') ?? '{}');
|
|
||||||
return memberMap[id] || [];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setMember(workspaceId: string, member: User) {
|
|
||||||
const memberMap = JSON.parse(localStorage.getItem('affine-member') ?? '{}');
|
|
||||||
memberMap[workspaceId] = memberMap[workspaceId] || [];
|
|
||||||
memberMap[workspaceId].push(member);
|
|
||||||
localStorage.setItem('affine-member', JSON.stringify(memberMap));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function deleteMember(workspaceId: string, index: number) {
|
|
||||||
const memberMap = JSON.parse(localStorage.getItem('affine-member') ?? '{}');
|
|
||||||
const memberList = memberMap[workspaceId];
|
|
||||||
memberList.splice(index, 1);
|
|
||||||
memberMap[workspaceId] = memberList;
|
|
||||||
localStorage.setItem('affine-member', JSON.stringify(memberMap));
|
|
||||||
}
|
|
||||||
export function leaveWorkspace() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setWorkspacePublish(id: string, isPublish: boolean): boolean {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.map((workspace: Workspace) => {
|
|
||||||
if (workspace.id === id) {
|
|
||||||
workspace.isPublish = isPublish;
|
|
||||||
}
|
|
||||||
return workspace;
|
|
||||||
});
|
|
||||||
localStorage.setItem('affine-workspace', JSON.stringify(newWorkspacesMeta));
|
|
||||||
return isPublish;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getWorkspaceById(id: string) {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
return workspacesMeta.find((workspace: Workspace) => {
|
|
||||||
return workspace.id === id;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getPagesByWorkspaceId(workspaceId: string) {
|
|
||||||
if (!workspaceId) return [];
|
|
||||||
const workspacesMeta = [];
|
|
||||||
for (let i = 0; i < 10; i++) {
|
|
||||||
workspacesMeta.push({
|
|
||||||
id: 'page-' + i,
|
|
||||||
name: 'page ' + i,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getActiveWorkspace(): Workspace {
|
|
||||||
return JSON.parse(localStorage.getItem('affine-active-workspace') ?? '{}');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setActiveWorkspace(workspaceData: Workspace) {
|
|
||||||
console.log('workspaceData: ', workspaceData);
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-active-workspace',
|
|
||||||
JSON.stringify(workspaceData)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getUserInfo(): User {
|
|
||||||
return JSON.parse(localStorage.getItem('affine-user') ?? 'null');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Login(): void {
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-user',
|
|
||||||
JSON.stringify({
|
|
||||||
name: 'Diamond',
|
|
||||||
id: 'ttt',
|
|
||||||
email: 'diamond.shx@gmail.com',
|
|
||||||
avatar: 'string',
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function SignOut(): void {
|
|
||||||
localStorage.removeItem('affine-user');
|
|
||||||
}
|
|
||||||
@@ -21,7 +21,6 @@ import { useAppState } from '@/providers/app-state-provider';
|
|||||||
import { PageLoading } from '@/components/loading';
|
import { PageLoading } from '@/components/loading';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import '@affine/i18n';
|
import '@affine/i18n';
|
||||||
import TemporaryHelperProvider from '@/providers/temporary-helper-provider';
|
|
||||||
|
|
||||||
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
|
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
|
||||||
ssr: false,
|
ssr: false,
|
||||||
@@ -55,10 +54,8 @@ const App = ({ Component, pageProps }: AppPropsWithLayout) => {
|
|||||||
<Logger />
|
<Logger />
|
||||||
<ProviderComposer
|
<ProviderComposer
|
||||||
contexts={[
|
contexts={[
|
||||||
<TemporaryHelperProvider key="TemporaryHelperProvider" />,
|
|
||||||
<ThemeProvider key="ThemeProvider" />,
|
<ThemeProvider key="ThemeProvider" />,
|
||||||
<AppStateProvider key="appStateProvider" />,
|
<AppStateProvider key="appStateProvider" />,
|
||||||
// <AppStateProvider2 key="appStateProvider2" />,
|
|
||||||
<ModalProvider key="ModalProvider" />,
|
<ModalProvider key="ModalProvider" />,
|
||||||
<ConfirmProvider key="ConfirmProvider" />,
|
<ConfirmProvider key="ConfirmProvider" />,
|
||||||
]}
|
]}
|
||||||
|
|||||||
@@ -1,183 +0,0 @@
|
|||||||
import { createContext, useContext, useEffect, useState } from 'react';
|
|
||||||
import type { PropsWithChildren } from 'react';
|
|
||||||
import { getWorkspaces, User, Workspace } from '@/hooks/mock-data/mock';
|
|
||||||
|
|
||||||
type TemporaryContextValue = {
|
|
||||||
workspaceMetaList: Workspace[];
|
|
||||||
currentWorkspace: Workspace | null;
|
|
||||||
user: User | null;
|
|
||||||
|
|
||||||
updateWorkspaceMeta: (
|
|
||||||
workspaceId: string,
|
|
||||||
workspaceData: {
|
|
||||||
name?: string;
|
|
||||||
avatar?: string;
|
|
||||||
isPublish?: boolean;
|
|
||||||
type?: 'local' | 'cloud' | 'join';
|
|
||||||
}
|
|
||||||
) => void;
|
|
||||||
|
|
||||||
createWorkspace: (workspaceName: string) => Workspace;
|
|
||||||
|
|
||||||
deleteWorkspace: (workspaceId: string) => void;
|
|
||||||
|
|
||||||
setWorkspacePublish: (id: string, isPublish: boolean) => void;
|
|
||||||
|
|
||||||
setActiveWorkspace: (workspaceData: Workspace) => void;
|
|
||||||
|
|
||||||
login: () => void;
|
|
||||||
|
|
||||||
signOut: () => void;
|
|
||||||
};
|
|
||||||
type TemporaryContextProps = PropsWithChildren<Record<string, unknown>>;
|
|
||||||
|
|
||||||
export const TemporaryContext = createContext<TemporaryContextValue>({
|
|
||||||
workspaceMetaList: [],
|
|
||||||
currentWorkspace: null,
|
|
||||||
user: null,
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
updateWorkspaceMeta: () => {},
|
|
||||||
|
|
||||||
createWorkspace: () => {
|
|
||||||
return {} as Workspace;
|
|
||||||
},
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
deleteWorkspace: () => {},
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
setWorkspacePublish: () => {},
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
setActiveWorkspace: () => {},
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
login: () => {},
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
||||||
signOut: () => {},
|
|
||||||
});
|
|
||||||
|
|
||||||
export const useTemporaryHelper = () => useContext(TemporaryContext);
|
|
||||||
|
|
||||||
export const TemporaryHelperProvider = ({
|
|
||||||
children,
|
|
||||||
}: PropsWithChildren<TemporaryContextProps>) => {
|
|
||||||
const [workspaceMetaList, setWorkspaceMetaList] = useState<Workspace[]>([]);
|
|
||||||
const [currentWorkspace, setCurrentWorkspace] = useState<Workspace | null>(
|
|
||||||
null
|
|
||||||
);
|
|
||||||
const [user, setUser] = useState<User | null>(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setWorkspaceMetaList(getWorkspaces());
|
|
||||||
setCurrentWorkspace(
|
|
||||||
JSON.parse(localStorage.getItem('affine-active-workspace') ?? '{}')
|
|
||||||
);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TemporaryContext.Provider
|
|
||||||
value={{
|
|
||||||
workspaceMetaList,
|
|
||||||
currentWorkspace,
|
|
||||||
user,
|
|
||||||
|
|
||||||
updateWorkspaceMeta: (workspaceId, workspaceData) => {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.map(
|
|
||||||
(workspace: Workspace) => {
|
|
||||||
if (workspace.id === workspaceId) {
|
|
||||||
const workspaceObj = Object.assign(workspace, workspaceData);
|
|
||||||
return workspaceObj;
|
|
||||||
}
|
|
||||||
return workspace;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-workspace',
|
|
||||||
JSON.stringify(newWorkspacesMeta)
|
|
||||||
);
|
|
||||||
setWorkspaceMetaList(newWorkspacesMeta);
|
|
||||||
if (workspaceId === currentWorkspace?.id) {
|
|
||||||
setCurrentWorkspace(
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
newWorkspacesMeta.find(v => v.id === currentWorkspace.id)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
createWorkspace: workspaceName => {
|
|
||||||
const workspaceData = {
|
|
||||||
name: workspaceName,
|
|
||||||
id: 'workspace-' + Date.now(),
|
|
||||||
isPublish: false,
|
|
||||||
isLocal: true,
|
|
||||||
avatar: '',
|
|
||||||
type: 'local',
|
|
||||||
} as Workspace;
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
workspacesMeta.push(workspaceData);
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-workspace',
|
|
||||||
JSON.stringify(workspacesMeta)
|
|
||||||
);
|
|
||||||
|
|
||||||
setWorkspaceMetaList([...workspacesMeta]);
|
|
||||||
return workspaceData;
|
|
||||||
},
|
|
||||||
deleteWorkspace: workspaceId => {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.filter(() => {
|
|
||||||
return workspaceId !== workspaceId;
|
|
||||||
});
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-workspace',
|
|
||||||
JSON.stringify(newWorkspacesMeta)
|
|
||||||
);
|
|
||||||
setWorkspaceMetaList(workspacesMeta);
|
|
||||||
},
|
|
||||||
|
|
||||||
setWorkspacePublish: (id, isPublish) => {
|
|
||||||
const workspacesMeta = getWorkspaces();
|
|
||||||
const newWorkspacesMeta = workspacesMeta.map(
|
|
||||||
(workspace: Workspace) => {
|
|
||||||
if (workspace.id === id) {
|
|
||||||
workspace.isPublish = isPublish;
|
|
||||||
}
|
|
||||||
return workspace;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-workspace',
|
|
||||||
JSON.stringify(newWorkspacesMeta)
|
|
||||||
);
|
|
||||||
setWorkspaceMetaList(workspacesMeta);
|
|
||||||
},
|
|
||||||
setActiveWorkspace(workspaceData) {
|
|
||||||
localStorage.setItem(
|
|
||||||
'affine-active-workspace',
|
|
||||||
JSON.stringify(workspaceData)
|
|
||||||
);
|
|
||||||
setCurrentWorkspace(workspaceData);
|
|
||||||
},
|
|
||||||
|
|
||||||
login: () => {
|
|
||||||
const userInfo = {
|
|
||||||
name: 'Diamond',
|
|
||||||
id: 'ttt',
|
|
||||||
email: 'diamond.shx@gmail.com',
|
|
||||||
avatar: 'string',
|
|
||||||
};
|
|
||||||
localStorage.setItem('affine-user', JSON.stringify(userInfo));
|
|
||||||
setUser(userInfo);
|
|
||||||
},
|
|
||||||
|
|
||||||
signOut(): void {
|
|
||||||
localStorage.removeItem('affine-user');
|
|
||||||
setUser(null);
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</TemporaryContext.Provider>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default TemporaryHelperProvider;
|
|
||||||
Reference in New Issue
Block a user