diff --git a/packages/frontend/core/src/components/pure/workspace-slider-bar/components/reference-page.tsx b/packages/frontend/core/src/components/pure/workspace-slider-bar/components/reference-page.tsx
index 12f7233c1..7ffe6c1e0 100644
--- a/packages/frontend/core/src/components/pure/workspace-slider-bar/components/reference-page.tsx
+++ b/packages/frontend/core/src/components/pure/workspace-slider-bar/components/reference-page.tsx
@@ -1,7 +1,7 @@
import { MenuLinkItem } from '@affine/component/app-sidebar';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
-import type { PageMeta, Workspace } from '@blocksuite/store';
+import { type PageMeta, type Workspace } from '@blocksuite/store';
import * as Collapsible from '@radix-ui/react-collapsible';
import { useBlockSuitePageReferences } from '@toeverything/hooks/use-block-suite-page-references';
import { useAtomValue } from 'jotai/react';
@@ -9,6 +9,7 @@ import { useMemo, useState } from 'react';
import { useParams } from 'react-router-dom';
import { pageSettingFamily } from '../../../../atoms';
+import { AddFavouriteButton } from '../favorite/add-favourite-button';
import * as styles from '../favorite/styles.css';
interface ReferencePageProps {
workspace: Workspace;
@@ -54,6 +55,7 @@ export const ReferencePage = ({
icon={icon}
collapsed={collapsible ? collapsed : undefined}
onCollapsedChange={setCollapsed}
+ postfix={}
>
{metaMapping[pageId]?.title || t['Untitled']()}
diff --git a/packages/frontend/core/src/components/pure/workspace-slider-bar/favorite/add-favourite-button.tsx b/packages/frontend/core/src/components/pure/workspace-slider-bar/favorite/add-favourite-button.tsx
index 4db8ff54b..05bb8dd86 100644
--- a/packages/frontend/core/src/components/pure/workspace-slider-bar/favorite/add-favourite-button.tsx
+++ b/packages/frontend/core/src/components/pure/workspace-slider-bar/favorite/add-favourite-button.tsx
@@ -8,16 +8,48 @@ import { usePageHelper } from '../../../blocksuite/block-suite-page-list/utils';
type AddFavouriteButtonProps = {
workspace: Workspace;
+ pageId?: string;
};
-export const AddFavouriteButton = ({ workspace }: AddFavouriteButtonProps) => {
+export const AddFavouriteButton = ({
+ workspace,
+ pageId,
+}: AddFavouriteButtonProps) => {
const { createPage } = usePageHelper(workspace);
const { setPageMeta } = usePageMetaHelper(workspace);
- const handleAddFavorite = useAsyncCallback(async () => {
- const page = createPage();
- await page.waitForLoaded();
- setPageMeta(page.id, { favorite: true });
- }, [createPage, setPageMeta]);
+ const handleAddFavorite = useAsyncCallback(
+ async e => {
+ if (pageId) {
+ e.stopPropagation();
+ e.preventDefault();
+ const page = createPage();
+ await page.load();
+ const parentPage = workspace.getPage(pageId);
+ if (parentPage) {
+ await parentPage.load();
+ const text = parentPage.Text.fromDelta([
+ {
+ insert: ' ',
+ attributes: {
+ reference: {
+ type: 'LinkedPage',
+ pageId: page.id,
+ },
+ },
+ },
+ ]);
+ const [frame] = parentPage.getBlockByFlavour('affine:note');
+ frame && parentPage.addBlock('affine:paragraph', { text }, frame.id);
+ setPageMeta(page.id, {});
+ }
+ } else {
+ const page = createPage();
+ await page.load();
+ setPageMeta(page.id, { favorite: true });
+ }
+ },
+ [createPage, setPageMeta, workspace, pageId]
+ );
return (
{
await openHomePage(page);
await waitForEditorLoad(page);
- await page.getByTestId('slider-bar-add-favorite-button').click();
+ await page.getByTestId('slider-bar-add-favorite-button').first().click();
await waitForEditorLoad(page);
// enter random page title