fix: use push when switch workspace (#1049)
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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}</>;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user