fix(mobile): workspace selector in app-fallback may crash (#9293)

This commit is contained in:
CatsJuice
2024-12-25 01:59:16 +00:00
parent 727f21d78f
commit a29519a9fc
2 changed files with 9 additions and 5 deletions

View File

@@ -8,7 +8,11 @@ import {
WorkspacesService, WorkspacesService,
} from '@affine/core/modules/workspace'; } from '@affine/core/modules/workspace';
import { CloseIcon, CollaborationIcon } from '@blocksuite/icons/rc'; import { CloseIcon, CollaborationIcon } from '@blocksuite/icons/rc';
import { useLiveData, useService } from '@toeverything/infra'; import {
useLiveData,
useService,
useServiceOptional,
} from '@toeverything/infra';
import clsx from 'clsx'; import clsx from 'clsx';
import { type HTMLAttributes, useCallback, useMemo } from 'react'; import { type HTMLAttributes, useCallback, useMemo } from 'react';
@@ -54,17 +58,17 @@ const WorkspaceList = ({
list: WorkspaceMetadata[]; list: WorkspaceMetadata[];
onClose?: () => void; onClose?: () => void;
}) => { }) => {
const currentWorkspace = useService(WorkspaceService).workspace; const currentWorkspace = useServiceOptional(WorkspaceService)?.workspace;
const { jumpToPage } = useNavigateHelper(); const { jumpToPage } = useNavigateHelper();
const toggleWorkspace = useCallback( const toggleWorkspace = useCallback(
(id: string) => { (id: string) => {
if (id !== currentWorkspace.id) { if (id !== currentWorkspace?.id) {
jumpToPage(id, 'home'); jumpToPage(id, 'home');
} }
onClose?.(); onClose?.();
}, },
[currentWorkspace.id, jumpToPage, onClose] [currentWorkspace?.id, jumpToPage, onClose]
); );
if (!list.length) return null; if (!list.length) return null;

View File

@@ -5,7 +5,7 @@ import type { RouteObject } from 'react-router-dom';
import { import {
createBrowserRouter as reactRouterCreateBrowserRouter, createBrowserRouter as reactRouterCreateBrowserRouter,
redirect, redirect,
// eslint-disable-next-line @typescript-eslint/no-restricted-imports // oxlint-disable-next-line @typescript-eslint/no-restricted-imports
useNavigate, useNavigate,
} from 'react-router-dom'; } from 'react-router-dom';