fix: use push when switch workspace (#1049)

This commit is contained in:
Himself65
2023-02-16 00:23:49 -06:00
committed by GitHub
parent fe8831f7ae
commit f6378e8c3b
3 changed files with 10 additions and 10 deletions

View File

@@ -86,7 +86,7 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
<WorkspaceCard <WorkspaceCard
workspaceData={item} workspaceData={item}
onClick={workspaceData => { onClick={workspaceData => {
router.replace(`/workspace/${workspaceData.id}/all`); router.push(`/workspace/${workspaceData.id}/all`);
onClose(); onClose();
}} }}
key={index} key={index}

View File

@@ -23,7 +23,7 @@ import '@affine/i18n';
import { useTranslation } from '@affine/i18n'; import { useTranslation } from '@affine/i18n';
import React from 'react'; import React from 'react';
import { GlobalAppProvider } from '@/store/app'; import { GlobalAppProvider } from '@/store/app';
import { DataCenterLoader } from '@/store/app/datacenter'; import { DataCenterPreloader } from '@/store/app/datacenter';
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), { const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
ssr: false, ssr: false,
@@ -81,11 +81,11 @@ const App = ({ Component, pageProps }: AppPropsWithLayout) => {
getLayout(<Component {...pageProps} />) getLayout(<Component {...pageProps} />)
) : ( ) : (
<Suspense fallback={<PageLoading />}> <Suspense fallback={<PageLoading />}>
{/* we should put this before every component in case of they read a null value */} <DataCenterPreloader>
<DataCenterLoader /> <AppDefender>
<AppDefender> {getLayout(<Component {...pageProps} />)}
{getLayout(<Component {...pageProps} />)} </AppDefender>
</AppDefender> </DataCenterPreloader>
</Suspense> </Suspense>
)} )}
</ProviderComposer> </ProviderComposer>

View File

@@ -7,7 +7,7 @@ import type { DataCenter } from '@affine/datacenter';
import { PageMeta } from '@/providers/app-state-provider'; import { PageMeta } from '@/providers/app-state-provider';
import { getDataCenter, WorkspaceUnit } from '@affine/datacenter'; import { getDataCenter, WorkspaceUnit } from '@affine/datacenter';
import { createDefaultWorkspace } from '@/providers/app-state-provider/utils'; import { createDefaultWorkspace } from '@/providers/app-state-provider/utils';
import { useCallback, useEffect } from 'react'; import React, { useCallback, useEffect } from 'react';
import { DisposableGroup } from '@blocksuite/global/utils'; import { DisposableGroup } from '@blocksuite/global/utils';
export type DataCenterState = { export type DataCenterState = {
@@ -80,7 +80,7 @@ export const createDataCenterActions: GlobalActionsCreator<
}, },
}); });
export function DataCenterLoader() { export function DataCenterPreloader({ children }: React.PropsWithChildren) {
const dataCenter = useGlobalState(useCallback(store => store.dataCenter, [])); const dataCenter = useGlobalState(useCallback(store => store.dataCenter, []));
const dataCenterPromise = useGlobalState( const dataCenterPromise = useGlobalState(
useCallback(store => store.dataCenterPromise, []) useCallback(store => store.dataCenterPromise, [])
@@ -135,5 +135,5 @@ export function DataCenterLoader() {
if (!dataCenter) { if (!dataCenter) {
throw dataCenterPromise; throw dataCenterPromise;
} }
return null; return <>{children}</>;
} }