mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-17 14:27:02 +08:00
refactor: remove sync binary (#1297)
This commit is contained in:
@@ -10,6 +10,11 @@ export function useBlockSuiteWorkspaceName(
|
||||
const [name, set] = useState(
|
||||
() => blockSuiteWorkspace?.meta.name ?? DEFAULT_WORKSPACE_NAME
|
||||
);
|
||||
if (blockSuiteWorkspace) {
|
||||
if (blockSuiteWorkspace.meta.name !== name) {
|
||||
set(blockSuiteWorkspace.meta.name);
|
||||
}
|
||||
}
|
||||
useEffect(() => {
|
||||
if (blockSuiteWorkspace) {
|
||||
set(blockSuiteWorkspace.meta.name);
|
||||
@@ -24,8 +29,8 @@ export function useBlockSuiteWorkspaceName(
|
||||
const setName = useCallback(
|
||||
(name: string) => {
|
||||
assertExists(blockSuiteWorkspace);
|
||||
set(name);
|
||||
blockSuiteWorkspace.meta.setName(name);
|
||||
set(name);
|
||||
},
|
||||
[blockSuiteWorkspace]
|
||||
);
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { RemWorkspace, RemWorkspaceFlavour } from '../shared';
|
||||
|
||||
export function useLoadWorkspace(workspace: RemWorkspace | null | undefined) {
|
||||
useEffect(() => {
|
||||
if (workspace?.flavour === RemWorkspaceFlavour.AFFINE) {
|
||||
if (!workspace.firstBinarySynced) {
|
||||
workspace.syncBinary();
|
||||
}
|
||||
}
|
||||
}, [workspace]);
|
||||
}
|
||||
@@ -12,18 +12,13 @@ export function findSuitablePageId(
|
||||
): string | null {
|
||||
switch (workspace.flavour) {
|
||||
case RemWorkspaceFlavour.AFFINE: {
|
||||
if (workspace.firstBinarySynced) {
|
||||
return (
|
||||
workspace.blockSuiteWorkspace.meta.pageMetas.find(
|
||||
page => page.id === targetId
|
||||
)?.id ??
|
||||
workspace.blockSuiteWorkspace.meta.pageMetas.at(0)?.id ??
|
||||
null
|
||||
);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
break;
|
||||
return (
|
||||
workspace.blockSuiteWorkspace.meta.pageMetas.find(
|
||||
page => page.id === targetId
|
||||
)?.id ??
|
||||
workspace.blockSuiteWorkspace.meta.pageMetas.at(0)?.id ??
|
||||
null
|
||||
);
|
||||
}
|
||||
case RemWorkspaceFlavour.LOCAL: {
|
||||
return (
|
||||
|
||||
@@ -2,12 +2,10 @@ import { NextRouter } from 'next/router';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { useCurrentWorkspace } from './current/use-current-workspace';
|
||||
import { useLoadWorkspace } from './use-load-workspace';
|
||||
import { useWorkspaces } from './use-workspaces';
|
||||
|
||||
export function useSyncRouterWithCurrentWorkspace(router: NextRouter) {
|
||||
const [currentWorkspace, setCurrentWorkspaceId] = useCurrentWorkspace();
|
||||
useLoadWorkspace(currentWorkspace);
|
||||
const workspaces = useWorkspaces();
|
||||
useEffect(() => {
|
||||
const listener: Parameters<typeof router.events.on>[1] = (url: string) => {
|
||||
|
||||
@@ -3,7 +3,6 @@ import { config, getEnvironment } from '@affine/env';
|
||||
import { nanoid } from '@blocksuite/store';
|
||||
import { useCallback, useMemo, useSyncExternalStore } from 'react';
|
||||
import useSWR from 'swr';
|
||||
import { IndexeddbPersistence } from 'y-indexeddb';
|
||||
|
||||
import { lockMutex } from '../atoms';
|
||||
import { createLocalProviders } from '../blocksuite';
|
||||
@@ -47,23 +46,6 @@ function createRemLocalWorkspace(name: string) {
|
||||
flavour: RemWorkspaceFlavour.LOCAL,
|
||||
blockSuiteWorkspace: blockSuiteWorkspace,
|
||||
providers: [...createLocalProviders(blockSuiteWorkspace)],
|
||||
syncBinary: async () => {
|
||||
if (!config.enableIndexedDBProvider) {
|
||||
return {
|
||||
...workspace,
|
||||
};
|
||||
}
|
||||
const persistence = new IndexeddbPersistence(
|
||||
blockSuiteWorkspace.room as string,
|
||||
blockSuiteWorkspace.doc
|
||||
);
|
||||
return persistence.whenSynced.then(() => {
|
||||
persistence.destroy();
|
||||
return {
|
||||
...workspace,
|
||||
};
|
||||
});
|
||||
},
|
||||
id,
|
||||
};
|
||||
if (config.enableIndexedDBProvider) {
|
||||
@@ -111,6 +93,7 @@ export async function refreshDataCenter(signal?: AbortSignal) {
|
||||
break;
|
||||
}
|
||||
const oldData = dataCenter.workspaces;
|
||||
oldData.forEach(d => console.log(d.blockSuiteWorkspace.doc.toJSON()));
|
||||
await plugin.prefetchData(dataCenter, signal);
|
||||
const newData = dataCenter.workspaces;
|
||||
if (!Object.is(oldData, newData)) {
|
||||
|
||||
Reference in New Issue
Block a user