mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-22 12:32:00 +08:00
feat: bump blocksuite (#5953)
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
StaticBlobStorage,
|
||||
} from '@affine/workspace-impl';
|
||||
import { Logo1Icon } from '@blocksuite/icons';
|
||||
import type { Page } from '@toeverything/infra';
|
||||
import type { Doc } from '@toeverything/infra';
|
||||
import {
|
||||
EmptyBlobStorage,
|
||||
LocalBlobStorage,
|
||||
@@ -130,7 +130,7 @@ export const Component = () => {
|
||||
|
||||
const currentWorkspace = useService(CurrentWorkspaceService);
|
||||
const t = useAFFiNEI18N();
|
||||
const [page, setPage] = useState<Page | null>(null);
|
||||
const [page, setPage] = useState<Doc | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
// create a workspace for share page
|
||||
@@ -163,7 +163,7 @@ export const Component = () => {
|
||||
const { page } = workspace.services.get(PageManager).open(pageId);
|
||||
|
||||
workspace.blockSuiteWorkspace.awarenessStore.setReadonly(
|
||||
page.blockSuitePage,
|
||||
page.blockSuiteDoc,
|
||||
true
|
||||
);
|
||||
|
||||
@@ -200,14 +200,14 @@ export const Component = () => {
|
||||
<ShareHeader
|
||||
pageId={page.id}
|
||||
publishMode={publishMode}
|
||||
blockSuiteWorkspace={page.blockSuitePage.workspace}
|
||||
blockSuiteWorkspace={page.blockSuiteDoc.workspace}
|
||||
/>
|
||||
<Scrollable.Root>
|
||||
<Scrollable.Viewport className={styles.editorContainer}>
|
||||
<PageDetailEditor
|
||||
isPublic
|
||||
publishMode={publishMode}
|
||||
workspace={page.blockSuitePage.workspace}
|
||||
workspace={page.blockSuiteDoc.workspace}
|
||||
pageId={page.id}
|
||||
onLoad={() => noop}
|
||||
/>
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
useFilteredPageMetas,
|
||||
VirtualizedPageList,
|
||||
} from '@affine/core/components/page-list';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper';
|
||||
import { performanceRenderLogger } from '@affine/core/shared';
|
||||
import type { Filter } from '@affine/env/filter';
|
||||
@@ -18,7 +18,7 @@ import { AllPageHeader } from './all-page-header';
|
||||
|
||||
export const AllPage = () => {
|
||||
const currentWorkspace = useService(Workspace);
|
||||
const pageMetas = useBlockSuitePageMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
const pageMetas = useBlockSuiteDocMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
const [hideHeaderCreateNew, setHideHeaderCreateNew] = useState(true);
|
||||
|
||||
const [filters, setFilters] = useState<Filter[]>([]);
|
||||
@@ -58,10 +58,10 @@ export const Component = () => {
|
||||
|
||||
useEffect(() => {
|
||||
function checkJumpOnce() {
|
||||
for (const [pageId] of currentWorkspace.blockSuiteWorkspace.pages) {
|
||||
const page = currentWorkspace.blockSuiteWorkspace.getPage(pageId);
|
||||
if (page && page.meta.jumpOnce) {
|
||||
currentWorkspace.blockSuiteWorkspace.meta.setPageMeta(page.id, {
|
||||
for (const [pageId] of currentWorkspace.blockSuiteWorkspace.docs) {
|
||||
const page = currentWorkspace.blockSuiteWorkspace.getDoc(pageId);
|
||||
if (page && page.meta?.jumpOnce) {
|
||||
currentWorkspace.blockSuiteWorkspace.meta.setDocMeta(page.id, {
|
||||
jumpOnce: false,
|
||||
});
|
||||
navigateHelper.jumpToPage(currentWorkspace.id, pageId);
|
||||
@@ -69,7 +69,7 @@ export const Component = () => {
|
||||
}
|
||||
}
|
||||
checkJumpOnce();
|
||||
return currentWorkspace.blockSuiteWorkspace.slots.pagesUpdated.on(
|
||||
return currentWorkspace.blockSuiteWorkspace.slots.docUpdated.on(
|
||||
checkJumpOnce
|
||||
).dispose;
|
||||
}, [
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
TagListHeader,
|
||||
VirtualizedTagList,
|
||||
} from '@affine/core/components/page-list/tags';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useService } from '@toeverything/infra';
|
||||
import { Workspace } from '@toeverything/infra';
|
||||
|
||||
@@ -14,7 +14,7 @@ import { AllTagHeader } from './header';
|
||||
|
||||
export const AllTag = () => {
|
||||
const currentWorkspace = useService(Workspace);
|
||||
const pageMetas = useBlockSuitePageMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
const pageMetas = useBlockSuiteDocMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
|
||||
const { tags, tagMetas, deleteTags } = useTagMetas(
|
||||
currentWorkspace.blockSuiteWorkspace,
|
||||
|
||||
@@ -12,7 +12,7 @@ import { PageHeaderMenuButton } from '@affine/core/components/blocksuite/block-s
|
||||
import { EditorModeSwitch } from '@affine/core/components/blocksuite/block-suite-mode-switch';
|
||||
import { useJournalInfoHelper } from '@affine/core/hooks/use-journal';
|
||||
import { RightSidebarIcon } from '@blocksuite/icons';
|
||||
import type { Page } from '@blocksuite/store';
|
||||
import type { Doc } from '@blocksuite/store';
|
||||
import type { Workspace } from '@toeverything/infra';
|
||||
import { useAtomValue, useSetAtom } from 'jotai';
|
||||
import { useCallback, useRef } from 'react';
|
||||
@@ -104,7 +104,7 @@ function Header({
|
||||
}
|
||||
|
||||
interface PageHeaderProps {
|
||||
page: Page;
|
||||
page: Doc;
|
||||
workspace: Workspace;
|
||||
showSidebarSwitch?: boolean;
|
||||
}
|
||||
@@ -178,7 +178,7 @@ export function NormalPageHeader({
|
||||
export function DetailPageHeader(props: PageHeaderProps) {
|
||||
const { page } = props;
|
||||
const { isJournal } = useJournalInfoHelper(page.workspace, page.id);
|
||||
const isInTrash = page.meta.trash;
|
||||
const isInTrash = page.meta?.trash;
|
||||
|
||||
return isJournal && !isInTrash ? (
|
||||
<JournalPageHeader {...props} />
|
||||
@@ -189,7 +189,7 @@ export function DetailPageHeader(props: PageHeaderProps) {
|
||||
|
||||
interface SidebarHeaderProps {
|
||||
workspace: Workspace;
|
||||
page: Page;
|
||||
page: Doc;
|
||||
}
|
||||
function WindowsSidebarHeader(props: SidebarHeaderProps) {
|
||||
return (
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Scrollable } from '@affine/component';
|
||||
import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton';
|
||||
import { ResizePanel } from '@affine/component/resize-panel';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import type { PageService } from '@blocksuite/blocks';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import {
|
||||
BookmarkService,
|
||||
customImageProxyMiddleware,
|
||||
@@ -12,10 +11,10 @@ import {
|
||||
ImageService,
|
||||
} from '@blocksuite/blocks';
|
||||
import type { AffineEditorContainer } from '@blocksuite/presets';
|
||||
import type { Page as BlockSuitePage } from '@blocksuite/store';
|
||||
import type { Doc as BlockSuiteDoc } from '@blocksuite/store';
|
||||
import {
|
||||
Doc,
|
||||
globalBlockSuiteSchema,
|
||||
Page,
|
||||
PageManager,
|
||||
PageRecordList,
|
||||
ServiceProviderContext,
|
||||
@@ -109,14 +108,14 @@ const DetailPageLayout = ({
|
||||
};
|
||||
|
||||
const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
const page = useService(Page);
|
||||
const page = useService(Doc);
|
||||
const pageRecordList = useService(PageRecordList);
|
||||
const currentPageId = page.id;
|
||||
const { openPage, jumpToTag } = useNavigateHelper();
|
||||
const currentWorkspace = useService(Workspace);
|
||||
const blockSuiteWorkspace = currentWorkspace.blockSuiteWorkspace;
|
||||
|
||||
const pageMeta = useBlockSuitePageMeta(blockSuiteWorkspace).find(
|
||||
const pageMeta = useBlockSuiteDocMeta(blockSuiteWorkspace).find(
|
||||
meta => meta.id === page.id
|
||||
);
|
||||
|
||||
@@ -128,7 +127,7 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
usePageDocumentTitle(title);
|
||||
|
||||
const onLoad = useCallback(
|
||||
(bsPage: BlockSuitePage, editor: AffineEditorContainer) => {
|
||||
(bsPage: BlockSuiteDoc, editor: AffineEditorContainer) => {
|
||||
try {
|
||||
// todo(joooye34): improve the following migration code
|
||||
const surfaceBlock = bsPage.getBlockByFlavour('affine:surface')[0];
|
||||
@@ -139,7 +138,7 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
'type'
|
||||
) !== '$blocksuite:internal:native$'
|
||||
) {
|
||||
globalBlockSuiteSchema.upgradePage(
|
||||
globalBlockSuiteSchema.upgradeDoc(
|
||||
0,
|
||||
{
|
||||
'affine:surface': 3,
|
||||
@@ -165,12 +164,10 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
EmbedLoomService.setLinkPreviewEndpoint(runtimeConfig.linkPreviewUrl);
|
||||
|
||||
// provide page mode and updated date to blocksuite
|
||||
const pageService = editorHost.std.spec.getService(
|
||||
'affine:page'
|
||||
) as PageService;
|
||||
pageService.getPageMode = (pageId: string) =>
|
||||
const pageService = editorHost.std.spec.getService('affine:page');
|
||||
pageService.getEditorMode = (pageId: string) =>
|
||||
pageRecordList.record(pageId).value?.mode.value ?? 'page';
|
||||
pageService.getPageUpdatedAt = (pageId: string) => {
|
||||
pageService.getDocUpdatedAt = (pageId: string) => {
|
||||
const linkedPage = pageRecordList.record(pageId).value;
|
||||
if (!linkedPage) return new Date();
|
||||
|
||||
@@ -181,8 +178,8 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
|
||||
page.setMode(mode);
|
||||
// fixme: it seems pageLinkClicked is not triggered sometimes?
|
||||
const dispose = editor.slots.pageLinkClicked.on(({ pageId }) => {
|
||||
return openPage(blockSuiteWorkspace.id, pageId);
|
||||
const dispose = editor.slots.docLinkClicked.on(({ docId }) => {
|
||||
return openPage(blockSuiteWorkspace.id, docId);
|
||||
});
|
||||
const disposeTagClick = editor.slots.tagClicked.on(({ tagId }) => {
|
||||
jumpToTag(currentWorkspace.id, tagId);
|
||||
@@ -209,7 +206,7 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
header={
|
||||
<>
|
||||
<DetailPageHeader
|
||||
page={page.blockSuitePage}
|
||||
page={page.blockSuiteDoc}
|
||||
workspace={currentWorkspace}
|
||||
showSidebarSwitch={!isInTrash}
|
||||
/>
|
||||
@@ -238,11 +235,11 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
||||
<div className={styles.sidebarContainerInner}>
|
||||
<RightSidebarHeader
|
||||
workspace={currentWorkspace}
|
||||
page={page.blockSuitePage}
|
||||
page={page.blockSuiteDoc}
|
||||
/>
|
||||
<EditorSidebar
|
||||
workspace={blockSuiteWorkspace}
|
||||
page={page.blockSuitePage}
|
||||
page={page.blockSuiteDoc}
|
||||
/>
|
||||
</div>
|
||||
) : null
|
||||
@@ -271,7 +268,7 @@ export const DetailPage = ({ pageId }: { pageId: string }): ReactElement => {
|
||||
|
||||
const pageManager = useService(PageManager);
|
||||
|
||||
const [page, setPage] = useState<Page | null>(null);
|
||||
const [page, setPage] = useState<Doc | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (!pageRecord) {
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@ import { IconButton } from '@affine/component';
|
||||
import { useJournalInfoHelper } from '@affine/core/hooks/use-journal';
|
||||
import { useWorkspaceEnabledFeatures } from '@affine/core/hooks/use-workspace-features';
|
||||
import { FeatureType } from '@affine/graphql';
|
||||
import type { Page } from '@blocksuite/store';
|
||||
import type { Doc } from '@blocksuite/store';
|
||||
import type { Workspace } from '@toeverything/infra';
|
||||
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
||||
import { useAtom, useAtomValue } from 'jotai';
|
||||
@@ -16,7 +16,7 @@ import * as styles from './extensions.css';
|
||||
|
||||
export interface ExtensionTabsProps {
|
||||
workspace: Workspace;
|
||||
page: Page;
|
||||
page: Doc;
|
||||
}
|
||||
|
||||
// provide a switcher for active extensions
|
||||
|
||||
+9
-9
@@ -7,7 +7,7 @@ import {
|
||||
} from '@affine/component';
|
||||
import { MoveToTrash } from '@affine/core/components/page-list';
|
||||
import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteWorkspacePageTitle } from '@affine/core/hooks/use-block-suite-workspace-page-title';
|
||||
import {
|
||||
useJournalHelper,
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
PageIcon,
|
||||
TodayIcon,
|
||||
} from '@blocksuite/icons';
|
||||
import type { Page, PageMeta } from '@blocksuite/store';
|
||||
import type { Doc, DocMeta } from '@blocksuite/store';
|
||||
import { assignInlineVars } from '@vanilla-extract/dynamic';
|
||||
import clsx from 'clsx';
|
||||
import dayjs from 'dayjs';
|
||||
@@ -44,7 +44,7 @@ const CountDisplay = ({
|
||||
return <span {...attrs}>{count > max ? `${max}+` : count}</span>;
|
||||
};
|
||||
interface PageItemProps extends HTMLAttributes<HTMLDivElement> {
|
||||
pageMeta: PageMeta;
|
||||
pageMeta: DocMeta;
|
||||
workspace: BlockSuiteWorkspace;
|
||||
right?: ReactNode;
|
||||
}
|
||||
@@ -156,7 +156,7 @@ const EditorJournalPanel = (props: EditorExtensionProps) => {
|
||||
};
|
||||
|
||||
const sortPagesByDate = (
|
||||
pages: PageMeta[],
|
||||
pages: DocMeta[],
|
||||
field: 'updatedDate' | 'createDate',
|
||||
order: 'asc' | 'desc' = 'desc'
|
||||
) => {
|
||||
@@ -180,7 +180,7 @@ const JournalDailyCountBlock = ({ workspace, date }: JournalBlockProps) => {
|
||||
const nodeRef = useRef<HTMLDivElement>(null);
|
||||
const t = useAFFiNEI18N();
|
||||
const [activeItem, setActiveItem] = useState<NavItemName>('createdToday');
|
||||
const pageMetas = useBlockSuitePageMeta(workspace);
|
||||
const pageMetas = useBlockSuiteDocMeta(workspace);
|
||||
|
||||
const navigateHelper = useNavigateHelper();
|
||||
|
||||
@@ -289,7 +289,7 @@ interface ConflictListProps
|
||||
extends JournalBlockProps,
|
||||
PropsWithChildren,
|
||||
HTMLAttributes<HTMLDivElement> {
|
||||
pages: Page[];
|
||||
pages: Doc[];
|
||||
}
|
||||
const ConflictList = ({
|
||||
page: currentPage,
|
||||
@@ -303,7 +303,7 @@ const ConflictList = ({
|
||||
const { setTrashModal } = useTrashModalHelper(workspace);
|
||||
|
||||
const handleOpenTrashModal = useCallback(
|
||||
(page: Page) => {
|
||||
(page: Doc) => {
|
||||
if (!page.meta) return;
|
||||
setTrashModal({
|
||||
open: true,
|
||||
@@ -320,9 +320,9 @@ const ConflictList = ({
|
||||
const isCurrent = page.id === currentPage.id;
|
||||
return (
|
||||
<PageItem
|
||||
aria-label={page.meta.title}
|
||||
aria-label={page.meta?.title}
|
||||
aria-selected={isCurrent}
|
||||
pageMeta={page.meta}
|
||||
pageMeta={page.meta as DocMeta}
|
||||
workspace={workspace}
|
||||
key={page.id}
|
||||
right={
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import type { BlockSuiteWorkspace } from '@affine/core/shared';
|
||||
import type { Page } from '@blocksuite/store';
|
||||
import type { Doc } from '@blocksuite/store';
|
||||
|
||||
export type EditorExtensionName = 'outline' | 'frame' | 'copilot' | 'journal';
|
||||
|
||||
export interface EditorExtensionProps {
|
||||
workspace: BlockSuiteWorkspace;
|
||||
page: Page;
|
||||
page: Doc;
|
||||
}
|
||||
|
||||
export interface EditorExtension {
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
useTagMetas,
|
||||
VirtualizedPageList,
|
||||
} from '@affine/core/components/page-list';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useService } from '@toeverything/infra';
|
||||
import { Workspace } from '@toeverything/infra';
|
||||
import { useMemo } from 'react';
|
||||
@@ -17,7 +17,7 @@ import { TagDetailHeader } from './header';
|
||||
|
||||
export const TagDetail = ({ tagId }: { tagId?: string }) => {
|
||||
const currentWorkspace = useService(Workspace);
|
||||
const pageMetas = useBlockSuitePageMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
const pageMetas = useBlockSuiteDocMeta(currentWorkspace.blockSuiteWorkspace);
|
||||
|
||||
const { tags, filterPageMetaByTag } = useTagMetas(
|
||||
currentWorkspace.blockSuiteWorkspace,
|
||||
|
||||
@@ -12,11 +12,11 @@ import { pageHeaderColsDef } from '@affine/core/components/page-list/header-col-
|
||||
import { Header } from '@affine/core/components/pure/header';
|
||||
import { WindowsAppControls } from '@affine/core/components/pure/header/windows-app-controls';
|
||||
import { useBlockSuiteMetaHelper } from '@affine/core/hooks/affine/use-block-suite-meta-helper';
|
||||
import { useBlockSuitePageMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta';
|
||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
import { DeleteIcon } from '@blocksuite/icons';
|
||||
import type { PageMeta } from '@blocksuite/store';
|
||||
import type { DocMeta } from '@blocksuite/store';
|
||||
import { Workspace } from '@toeverything/infra';
|
||||
import { useService } from '@toeverything/infra/di';
|
||||
import { useCallback } from 'react';
|
||||
@@ -51,7 +51,7 @@ export const TrashPage = () => {
|
||||
const blockSuiteWorkspace = currentWorkspace.blockSuiteWorkspace;
|
||||
assertExists(blockSuiteWorkspace);
|
||||
|
||||
const pageMetas = useBlockSuitePageMeta(blockSuiteWorkspace);
|
||||
const pageMetas = useBlockSuiteDocMeta(blockSuiteWorkspace);
|
||||
const filteredPageMetas = useFilteredPageMetas(currentWorkspace, pageMetas, {
|
||||
trash: true,
|
||||
});
|
||||
@@ -63,7 +63,7 @@ export const TrashPage = () => {
|
||||
|
||||
const pageOperationsRenderer = useCallback(
|
||||
(item: ListItem) => {
|
||||
const page = item as PageMeta;
|
||||
const page = item as DocMeta;
|
||||
const onRestorePage = () => {
|
||||
restoreFromTrash(page.id);
|
||||
toast(
|
||||
|
||||
Reference in New Issue
Block a user