fix:delete workspace will jump to 404

This commit is contained in:
DiamondThree
2023-02-07 20:01:25 +08:00
parent 028fdae8b1
commit d9d60197f2
3 changed files with 6 additions and 10 deletions
@@ -132,7 +132,6 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
onClose={async wait => { onClose={async wait => {
if (!wait) { if (!wait) {
await logout(); await logout();
router.push(`/workspace`);
} }
setLogoutOpen(false); setLogoutOpen(false);
}} }}
@@ -11,7 +11,6 @@ import {
import { useState } from 'react'; import { useState } from 'react';
import { ModalCloseButton } from '@/ui/modal'; import { ModalCloseButton } from '@/ui/modal';
import { Button } from '@/ui/button'; import { Button } from '@/ui/button';
import { useRouter } from 'next/router';
import { WorkspaceUnit } from '@affine/datacenter'; import { WorkspaceUnit } from '@affine/datacenter';
import { Trans, useTranslation } from '@affine/i18n'; import { Trans, useTranslation } from '@affine/i18n';
@@ -30,7 +29,6 @@ export const WorkspaceDelete = ({
}: WorkspaceDeleteProps) => { }: WorkspaceDeleteProps) => {
const [deleteStr, setDeleteStr] = useState<string>(''); const [deleteStr, setDeleteStr] = useState<string>('');
const { t } = useTranslation(); const { t } = useTranslation();
const router = useRouter();
const { deleteWorkSpace } = useWorkspaceHelper(); const { deleteWorkSpace } = useWorkspaceHelper();
const handlerInputChange = (workspaceName: string) => { const handlerInputChange = (workspaceName: string) => {
setDeleteStr(workspaceName); setDeleteStr(workspaceName);
@@ -39,7 +37,6 @@ export const WorkspaceDelete = ({
const handleDelete = async () => { const handleDelete = async () => {
await deleteWorkSpace(); await deleteWorkSpace();
onClose(); onClose();
router.push(`/workspace`);
}; };
return ( return (
@@ -5,7 +5,7 @@ import { useRouter } from 'next/router';
// Cause it not just ensure workspace loaded, but also have router change. // Cause it not just ensure workspace loaded, but also have router change.
export const useEnsureWorkspace = () => { export const useEnsureWorkspace = () => {
const [workspaceLoaded, setWorkspaceLoaded] = useState(false); const [workspaceLoaded, setWorkspaceLoaded] = useState(false);
const { workspaceList, loadWorkspace, user } = useAppState(); const { dataCenter, loadWorkspace, user } = useAppState();
const router = useRouter(); const router = useRouter();
const [activeWorkspaceId, setActiveWorkspaceId] = useState( const [activeWorkspaceId, setActiveWorkspaceId] = useState(
router.query.workspaceId as string router.query.workspaceId as string
@@ -17,14 +17,14 @@ export const useEnsureWorkspace = () => {
// If router.query.workspaceId is not in workspace list, jump to 404 page // If router.query.workspaceId is not in workspace list, jump to 404 page
// If workspaceList is empty, we need to create a default workspace but not jump to 404 // If workspaceList is empty, we need to create a default workspace but not jump to 404
if ( if (
workspaceList.length && dataCenter.workspaces.length &&
// FIXME: router is not ready when this hook is called // FIXME: router is not ready when this hook is called
location.pathname.startsWith(`/workspace/${router.query.workspaceId}`) && location.pathname.startsWith(`/workspace/${router.query.workspaceId}`) &&
workspaceList.findIndex( dataCenter.workspaces.findIndex(
meta => meta.id.toString() === router.query.workspaceId meta => meta.id.toString() === router.query.workspaceId
) === -1 ) === -1
) { ) {
router.push('/404'); router.push(`/workspace/${dataCenter.workspaces[0].id}`);
return; return;
} }
// If user is not login and input a custom workspaceId, jump to 404 page // If user is not login and input a custom workspaceId, jump to 404 page
@@ -37,12 +37,12 @@ export const useEnsureWorkspace = () => {
// return; // return;
// } // }
const workspaceId = const workspaceId =
(router.query.workspaceId as string) || workspaceList[0]?.id; (router.query.workspaceId as string) || dataCenter.workspaces[0]?.id;
loadWorkspace.current(workspaceId).finally(() => { loadWorkspace.current(workspaceId).finally(() => {
setWorkspaceLoaded(true); setWorkspaceLoaded(true);
setActiveWorkspaceId(activeWorkspaceId); setActiveWorkspaceId(activeWorkspaceId);
}); });
}, [loadWorkspace, router, user, workspaceList, activeWorkspaceId]); }, [loadWorkspace, router, user, dataCenter.workspaces, activeWorkspaceId]);
return { return {
workspaceLoaded, workspaceLoaded,