refactor(store): extract workspace out of AppState (#1037)

This commit is contained in:
Himself65
2023-02-15 21:41:43 -06:00
committed by GitHub
parent a4d0813354
commit cdc2b449a9
30 changed files with 323 additions and 245 deletions
+2 -1
View File
@@ -22,7 +22,8 @@ import Head from 'next/head';
import '@affine/i18n';
import { useTranslation } from '@affine/i18n';
import React from 'react';
import { DataCenterLoader, GlobalAppProvider } from '@/store/app';
import { GlobalAppProvider } from '@/store/app';
import { DataCenterLoader } from '@/store/app/datacenter';
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
ssr: false,
@@ -1,7 +1,12 @@
import { PropsWithChildren, ReactElement, useEffect, useState } from 'react';
import {
PropsWithChildren,
ReactElement,
useCallback,
useEffect,
useState,
} from 'react';
import { EditorHeader } from '@/components/header';
import MobileModal from '@/components/mobile-modal';
import { useAppState } from '@/providers/app-state-provider';
import type { NextPageWithLayout } from '../..//_app';
import WorkspaceLayout from '@/components/workspace-layout';
import { useRouter } from 'next/router';
@@ -53,7 +58,9 @@ const BlockHubAppender = () => {
const Page: NextPageWithLayout = () => {
const currentPage = useGlobalState(store => store.currentPage);
const setEditor = useGlobalState(store => store.setEditor);
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { t } = useTranslation();
@@ -95,7 +102,9 @@ const PageDefender = ({ children }: PropsWithChildren) => {
const router = useRouter();
const [pageLoaded, setPageLoaded] = useState(false);
const loadPage = useGlobalState(store => store.loadPage);
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { createPage } = usePageHelper();
useEffect(() => {
@@ -1,14 +1,17 @@
import { PageList } from '@/components/page-list';
import { AllPagesIcon } from '@blocksuite/icons';
import { PageListHeader } from '@/components/header';
import { ReactElement } from 'react';
import { ReactElement, useCallback } from 'react';
import WorkspaceLayout from '@/components/workspace-layout';
import { useTranslation } from '@affine/i18n';
import { PageMeta, useAppState } from '@/providers/app-state-provider';
import { PageMeta } from '@/providers/app-state-provider';
import Head from 'next/head';
import { useGlobalState } from '@/store/app';
const All = () => {
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const pageList = (currentWorkspace?.blocksuiteWorkspace?.meta.pageMetas ||
[]) as PageMeta[];
const { t } = useTranslation();
@@ -4,10 +4,11 @@ import { FavouritesIcon } from '@blocksuite/icons';
import { ReactElement } from 'react';
import WorkspaceLayout from '@/components/workspace-layout';
import { useTranslation } from '@affine/i18n';
import { useAppState } from '@/providers/app-state-provider';
import Head from 'next/head';
import { useGlobalState } from '@/store/app';
export const Favorite = () => {
const { pageList } = useAppState();
const pageList = useGlobalState(store => store.dataCenterPageList);
const { t } = useTranslation();
return (
<>
@@ -1,13 +1,15 @@
import { useEffect } from 'react';
import { useCallback, useEffect } from 'react';
import { useRouter } from 'next/router';
import { useAppState } from '@/providers/app-state-provider';
import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import { PageLoading } from '@/components/loading';
import usePageHelper from '@/hooks/use-page-helper';
import { useGlobalState } from '@/store/app';
const WorkspaceIndex = () => {
const router = useRouter();
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { createPage } = usePageHelper();
const { workspaceLoaded, activeWorkspaceId } = useEnsureWorkspace();
@@ -10,6 +10,7 @@ import {
CSSProperties,
useEffect,
startTransition,
useCallback,
} from 'react';
import {
GeneralPage,
@@ -18,7 +19,6 @@ import {
ExportPage,
} from '@/components/workspace-setting';
import { SettingsIcon } from '@blocksuite/icons';
import { useAppState } from '@/providers/app-state-provider';
import WorkspaceLayout from '@/components/workspace-layout';
import { WorkspaceUnit } from '@affine/datacenter';
import { useTranslation } from '@affine/i18n';
@@ -98,7 +98,9 @@ const StyledTabButtonWrapper = styled.div(() => {
});
const WorkspaceSetting = () => {
const { t } = useTranslation();
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { activeTabPanelRender, tableArr, handleTabChange, activeTab } =
useTabMap();
const [indicatorState, setIndicatorState] = useState<
@@ -4,10 +4,10 @@ import { TrashIcon } from '@blocksuite/icons';
import { ReactElement } from 'react';
import WorkspaceLayout from '@/components/workspace-layout';
import { useTranslation } from '@affine/i18n';
import { useAppState } from '@/providers/app-state-provider';
import Head from 'next/head';
import { useGlobalState } from '@/store/app';
export const Trash = () => {
const { pageList } = useAppState();
const pageList = useGlobalState(store => store.dataCenterPageList);
const { t } = useTranslation();
return (
<>
+5 -3
View File
@@ -1,12 +1,14 @@
import { useEffect } from 'react';
import { useCallback, useEffect } from 'react';
import { useRouter } from 'next/router';
import { useAppState } from '@/providers/app-state-provider';
import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import { PageLoading } from '@/components/loading';
import { useGlobalState } from '@/store/app';
export const WorkspaceIndex = () => {
const router = useRouter();
const { currentWorkspace } = useAppState();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { workspaceLoaded } = useEnsureWorkspace();
useEffect(() => {