mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 17:16:16 +08:00
fix(component): cmdk flaky (#4512)
This commit is contained in:
@@ -19,14 +19,14 @@ export const usePageHelper = (blockSuiteWorkspace: BlockSuiteWorkspace) => {
|
||||
);
|
||||
const setPageMode = useSetAtom(setPageModeAtom);
|
||||
const createPageAndOpen = useCallback(
|
||||
(id?: string, mode?: 'page' | 'edgeless'): string => {
|
||||
(id?: string, mode?: 'page' | 'edgeless') => {
|
||||
const page = createPage(id);
|
||||
initEmptyPage(page).catch(error => {
|
||||
toast(`Failed to initialize Page: ${error.message}`);
|
||||
});
|
||||
setPageMode(page.id, mode || 'page');
|
||||
openPage(blockSuiteWorkspace.id, page.id);
|
||||
return page.id;
|
||||
return page;
|
||||
},
|
||||
[blockSuiteWorkspace.id, createPage, openPage, setPageMode]
|
||||
);
|
||||
|
||||
@@ -243,12 +243,10 @@ export const usePageCommands = () => {
|
||||
),
|
||||
value: 'affine::create-page' + query, // hack to make the page always showing in the search result
|
||||
category: 'affine:creation',
|
||||
run: () => {
|
||||
const pageId = pageHelper.createPage();
|
||||
// need to wait for the page to be created
|
||||
setTimeout(() => {
|
||||
pageMetaHelper.setPageTitle(pageId, query);
|
||||
});
|
||||
run: async () => {
|
||||
const page = pageHelper.createPage();
|
||||
await page.waitForLoaded();
|
||||
pageMetaHelper.setPageTitle(page.id, query);
|
||||
},
|
||||
icon: <PageIcon />,
|
||||
});
|
||||
@@ -265,12 +263,10 @@ export const usePageCommands = () => {
|
||||
),
|
||||
value: 'affine::create-edgeless' + query, // hack to make the page always showing in the search result
|
||||
category: 'affine:creation',
|
||||
run: () => {
|
||||
const pageId = pageHelper.createEdgeless();
|
||||
// need to wait for the page to be created
|
||||
setTimeout(() => {
|
||||
pageMetaHelper.setPageTitle(pageId, query);
|
||||
});
|
||||
run: async () => {
|
||||
const page = pageHelper.createEdgeless();
|
||||
await page.waitForLoaded();
|
||||
pageMetaHelper.setPageTitle(page.id, query);
|
||||
},
|
||||
icon: <EdgelessIcon />,
|
||||
});
|
||||
|
||||
+3
-2
@@ -14,8 +14,9 @@ export const AddFavouriteButton = ({ workspace }: AddFavouriteButtonProps) => {
|
||||
const { createPage } = usePageHelper(workspace);
|
||||
const { setPageMeta } = usePageMetaHelper(workspace);
|
||||
const handleAddFavorite = useCallback(async () => {
|
||||
const id = createPage();
|
||||
setPageMeta(id, { favorite: true });
|
||||
const page = createPage();
|
||||
await page.waitForLoaded();
|
||||
setPageMeta(page.id, { favorite: true });
|
||||
}, [createPage, setPageMeta]);
|
||||
|
||||
return (
|
||||
|
||||
@@ -3,6 +3,7 @@ import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||
import { getOrCreateWorkspace } from '@affine/workspace/manager';
|
||||
import type { Page } from '@blocksuite/store';
|
||||
import type { Meta, StoryFn } from '@storybook/react';
|
||||
import { currentWorkspaceIdAtom } from '@toeverything/infra/atom';
|
||||
import {
|
||||
@@ -21,6 +22,13 @@ export default {
|
||||
},
|
||||
} satisfies Meta;
|
||||
|
||||
const createMockedPage = () => {
|
||||
return {
|
||||
id: 'test-page',
|
||||
waitForLoaded: () => Promise.resolve(),
|
||||
} as any as Page;
|
||||
};
|
||||
|
||||
function useRegisterCommands() {
|
||||
const t = useAFFiNEI18N();
|
||||
const store = useStore();
|
||||
@@ -39,8 +47,8 @@ function useRegisterCommands() {
|
||||
t,
|
||||
store,
|
||||
pageHelper: {
|
||||
createEdgeless: () => 'noop',
|
||||
createPage: () => 'noop',
|
||||
createEdgeless: createMockedPage,
|
||||
createPage: createMockedPage,
|
||||
importFile: () => Promise.resolve(),
|
||||
isPreferredEdgeless: () => false,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user