fix(component): cmdk flaky (#4512)

This commit is contained in:
Peng Xiao
2023-09-27 09:37:00 +08:00
committed by GitHub
parent 4a03fa65d1
commit 369db3fea5
4 changed files with 23 additions and 18 deletions

View File

@@ -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]
);

View File

@@ -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 />,
});

View File

@@ -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 (