mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-27 02:42:25 +08:00
refactor: move affine utils into @affine/workspace (#2611)
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
import { Unreachable } from '@affine/env/constant';
|
import { Unreachable } from '@affine/env/constant';
|
||||||
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import { rootStore } from '@affine/workspace/atom';
|
import { rootStore } from '@affine/workspace/atom';
|
||||||
|
import { createAffineProviders } from '@affine/workspace/providers';
|
||||||
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
|
|
||||||
import { workspacesAtom } from '../../atoms';
|
import { workspacesAtom } from '../../atoms';
|
||||||
import { createAffineProviders } from '../../blocksuite';
|
|
||||||
import { affineApis } from '../../shared/apis';
|
|
||||||
|
|
||||||
type Query = (typeof QueryKey)[keyof typeof QueryKey];
|
type Query = (typeof QueryKey)[keyof typeof QueryKey];
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,13 @@ import {
|
|||||||
setLoginStorage,
|
setLoginStorage,
|
||||||
SignMethod,
|
SignMethod,
|
||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
|
import { affineApis, affineAuth } from '@affine/workspace/affine/shared';
|
||||||
import { rootStore, rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
import { rootStore, rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||||
import { createIndexedDBBackgroundProvider } from '@affine/workspace/providers';
|
import {
|
||||||
|
createAffineProviders,
|
||||||
|
createIndexedDBBackgroundProvider,
|
||||||
|
} from '@affine/workspace/providers';
|
||||||
|
import { createAffineDownloadProvider } from '@affine/workspace/providers';
|
||||||
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
||||||
import {
|
import {
|
||||||
LoadPriority,
|
LoadPriority,
|
||||||
@@ -32,12 +37,9 @@ import { Suspense, useEffect } from 'react';
|
|||||||
import { mutate } from 'swr';
|
import { mutate } from 'swr';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
import { createAffineProviders } from '../../blocksuite';
|
|
||||||
import { createAffineDownloadProvider } from '../../blocksuite/providers/affine';
|
|
||||||
import { PageLoading } from '../../components/pure/loading';
|
import { PageLoading } from '../../components/pure/loading';
|
||||||
import { useAffineRefreshAuthToken } from '../../hooks/affine/use-affine-refresh-auth-token';
|
import { useAffineRefreshAuthToken } from '../../hooks/affine/use-affine-refresh-auth-token';
|
||||||
import { BlockSuiteWorkspace } from '../../shared';
|
import { BlockSuiteWorkspace } from '../../shared';
|
||||||
import { affineApis, affineAuth } from '../../shared/apis';
|
|
||||||
import { toast } from '../../utils';
|
import { toast } from '../../utils';
|
||||||
import {
|
import {
|
||||||
BlockSuitePageList,
|
BlockSuitePageList,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import type { BlockSuiteFeatureFlags } from '@affine/env';
|
import type { BlockSuiteFeatureFlags } from '@affine/env';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import type { AffinePublicWorkspace } from '@affine/workspace/type';
|
import type { AffinePublicWorkspace } from '@affine/workspace/type';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { atom } from 'jotai';
|
import { atom } from 'jotai';
|
||||||
|
|
||||||
import { BlockSuiteWorkspace } from '../../shared';
|
import { BlockSuiteWorkspace } from '../../shared';
|
||||||
import { affineApis } from '../../shared/apis';
|
|
||||||
|
|
||||||
function createPublicWorkspace(
|
function createPublicWorkspace(
|
||||||
workspaceId: string,
|
workspaceId: string,
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
import { config } from '@affine/env';
|
|
||||||
import {
|
|
||||||
createIndexedDBDownloadProvider,
|
|
||||||
createLocalProviders,
|
|
||||||
} from '@affine/workspace/providers';
|
|
||||||
import {
|
|
||||||
createAffineWebSocketProvider,
|
|
||||||
createBroadCastChannelProvider,
|
|
||||||
} from '@affine/workspace/providers';
|
|
||||||
import type { Provider } from '@affine/workspace/type';
|
|
||||||
|
|
||||||
import type { BlockSuiteWorkspace } from '../shared';
|
|
||||||
import { createAffineDownloadProvider } from './providers/affine';
|
|
||||||
|
|
||||||
export const createAffineProviders = (
|
|
||||||
blockSuiteWorkspace: BlockSuiteWorkspace
|
|
||||||
): Provider[] => {
|
|
||||||
return (
|
|
||||||
[
|
|
||||||
createAffineDownloadProvider(blockSuiteWorkspace),
|
|
||||||
createAffineWebSocketProvider(blockSuiteWorkspace),
|
|
||||||
config.enableBroadCastChannelProvider &&
|
|
||||||
createBroadCastChannelProvider(blockSuiteWorkspace),
|
|
||||||
createIndexedDBDownloadProvider(blockSuiteWorkspace),
|
|
||||||
] as any[]
|
|
||||||
).filter(v => Boolean(v));
|
|
||||||
};
|
|
||||||
|
|
||||||
export { createLocalProviders };
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
|
||||||
|
|
||||||
export const providerLogger = new DebugLogger('provider');
|
|
||||||
@@ -6,6 +6,7 @@ import {
|
|||||||
setLoginStorage,
|
setLoginStorage,
|
||||||
SignMethod,
|
SignMethod,
|
||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
|
import { affineAuth } from '@affine/workspace/affine/shared';
|
||||||
import type { LocalWorkspace } from '@affine/workspace/type';
|
import type { LocalWorkspace } from '@affine/workspace/type';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||||
import {
|
import {
|
||||||
@@ -20,7 +21,6 @@ import React, { useEffect, useState } from 'react';
|
|||||||
import { useCurrentWorkspace } from '../../../../hooks/current/use-current-workspace';
|
import { useCurrentWorkspace } from '../../../../hooks/current/use-current-workspace';
|
||||||
import { useTransformWorkspace } from '../../../../hooks/use-transform-workspace';
|
import { useTransformWorkspace } from '../../../../hooks/use-transform-workspace';
|
||||||
import type { AffineOfficialWorkspace } from '../../../../shared';
|
import type { AffineOfficialWorkspace } from '../../../../shared';
|
||||||
import { affineAuth } from '../../../../shared/apis';
|
|
||||||
import { TransformWorkspaceToAffineModal } from '../../../affine/transform-workspace-to-affine-modal';
|
import { TransformWorkspaceToAffineModal } from '../../../affine/transform-workspace-to-affine-modal';
|
||||||
|
|
||||||
const IconWrapper = styled('div')(() => {
|
const IconWrapper = styled('div')(() => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { MessageCode, Messages } from '@affine/env/constant';
|
import { MessageCode, Messages } from '@affine/env/constant';
|
||||||
import { setLoginStorage, SignMethod } from '@affine/workspace/affine/login';
|
import { setLoginStorage, SignMethod } from '@affine/workspace/affine/login';
|
||||||
import type React from 'react';
|
import { affineAuth } from '@affine/workspace/affine/shared';
|
||||||
|
import type { FC } from 'react';
|
||||||
import { memo, useEffect, useState } from 'react';
|
import { memo, useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { useAffineLogOut } from '../../../hooks/affine/use-affine-log-out';
|
import { useAffineLogOut } from '../../../hooks/affine/use-affine-log-out';
|
||||||
import { affineAuth } from '../../../shared/apis';
|
|
||||||
import { toast } from '../../../utils';
|
import { toast } from '../../../utils';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -15,7 +15,7 @@ declare global {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const MessageCenter: React.FC = memo(function MessageCenter() {
|
export const MessageCenter: FC = memo(function MessageCenter() {
|
||||||
const [popup, setPopup] = useState(false);
|
const [popup, setPopup] = useState(false);
|
||||||
const onLogout = useAffineLogOut();
|
const onLogout = useAffineLogOut();
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -6,10 +6,9 @@ import {
|
|||||||
setLoginStorage,
|
setLoginStorage,
|
||||||
storageChangeSlot,
|
storageChangeSlot,
|
||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
|
import { affineAuth } from '@affine/workspace/affine/shared';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
|
|
||||||
import { affineAuth } from '../../shared/apis';
|
|
||||||
|
|
||||||
const logger = new DebugLogger('auth-token');
|
const logger = new DebugLogger('auth-token');
|
||||||
|
|
||||||
const revalidate = async () => {
|
const revalidate = async () => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import type { Member } from '@affine/workspace/affine/api';
|
import type { Member } from '@affine/workspace/affine/api';
|
||||||
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
|
|
||||||
import { QueryKey } from '../../adapters/affine/fetcher';
|
import { QueryKey } from '../../adapters/affine/fetcher';
|
||||||
import { affineApis } from '../../shared/apis';
|
|
||||||
|
|
||||||
export function useMembers(workspaceId: string) {
|
export function useMembers(workspaceId: string) {
|
||||||
const { data, mutate } = useSWR<Member[]>(
|
const { data, mutate } = useSWR<Member[]>(
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import { rootStore, rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
import { rootStore, rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||||
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
|
|
||||||
import { QueryKey } from '../../adapters/affine/fetcher';
|
import { QueryKey } from '../../adapters/affine/fetcher';
|
||||||
import { affineApis } from '../../shared/apis';
|
|
||||||
|
|
||||||
export function useToggleWorkspacePublish(
|
export function useToggleWorkspacePublish(
|
||||||
workspace: AffineLegacyCloudWorkspace
|
workspace: AffineLegacyCloudWorkspace
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ import {
|
|||||||
SignMethod,
|
SignMethod,
|
||||||
storageChangeSlot,
|
storageChangeSlot,
|
||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
|
import { affineAuth } from '@affine/workspace/affine/shared';
|
||||||
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
|
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
|
||||||
import type { WorkspaceRegistry } from '@affine/workspace/type';
|
import type { WorkspaceRegistry } from '@affine/workspace/type';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||||
import { useSetAtom } from 'jotai';
|
import { useSetAtom } from 'jotai';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import { affineAuth } from '../../shared/apis';
|
|
||||||
import { useTransformWorkspace } from '../use-transform-workspace';
|
import { useTransformWorkspace } from '../use-transform-workspace';
|
||||||
|
|
||||||
export function useOnTransformWorkspace() {
|
export function useOnTransformWorkspace() {
|
||||||
|
|||||||
@@ -2,16 +2,15 @@
|
|||||||
* @vitest-environment node
|
* @vitest-environment node
|
||||||
*/
|
*/
|
||||||
import { loginResponseSchema } from '@affine/workspace/affine/login';
|
import { loginResponseSchema } from '@affine/workspace/affine/login';
|
||||||
|
import type { affineApis as API } from '@affine/workspace/affine/shared';
|
||||||
import { beforeAll, describe, expect, it, vi } from 'vitest';
|
import { beforeAll, describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import type { affineApis as API } from '../apis';
|
|
||||||
|
|
||||||
let affineApis: typeof API;
|
let affineApis: typeof API;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
globalThis.window = undefined;
|
globalThis.window = undefined;
|
||||||
affineApis = (await import('../apis')).affineApis;
|
affineApis = (await import('@affine/workspace/affine/shared')).affineApis;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('apis', () => {
|
describe('apis', () => {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
"./providers": "./src/providers/index.ts",
|
"./providers": "./src/providers/index.ts",
|
||||||
"./affine/*": "./src/affine/*.ts",
|
"./affine/*": "./src/affine/*.ts",
|
||||||
"./affine/api": "./src/affine/api/index.ts",
|
"./affine/api": "./src/affine/api/index.ts",
|
||||||
"./affine/sync": "./src/affine/sync.js",
|
|
||||||
"./affine/keck": "./src/affine/keck/index.ts"
|
"./affine/keck": "./src/affine/keck/index.ts"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ import { uuidv4, Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
|||||||
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
||||||
import { WebSocket } from 'ws';
|
import { WebSocket } from 'ws';
|
||||||
|
|
||||||
|
declare module '@blocksuite/store' {
|
||||||
|
interface PageMeta {
|
||||||
|
foo: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
globalThis.WebSocket = WebSocket;
|
globalThis.WebSocket = WebSocket;
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,10 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
|
||||||
import { prefixUrl } from '@affine/env';
|
import { prefixUrl } from '@affine/env';
|
||||||
import {
|
|
||||||
createUserApis,
|
import { rootStore } from '../atom';
|
||||||
createWorkspaceApis,
|
import { createUserApis, createWorkspaceApis } from './api/index';
|
||||||
} from '@affine/workspace/affine/api';
|
import { currentAffineUserAtom } from './atom';
|
||||||
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
|
import type { LoginResponse } from './login';
|
||||||
import type { LoginResponse } from '@affine/workspace/affine/login';
|
import { createAffineAuth, parseIdToken, setLoginStorage } from './login';
|
||||||
import {
|
|
||||||
createAffineAuth,
|
|
||||||
parseIdToken,
|
|
||||||
setLoginStorage,
|
|
||||||
} from '@affine/workspace/affine/login';
|
|
||||||
import { rootStore } from '@affine/workspace/atom';
|
|
||||||
|
|
||||||
export const affineAuth = createAffineAuth(prefixUrl);
|
export const affineAuth = createAffineAuth(prefixUrl);
|
||||||
const affineApis = {} as ReturnType<typeof createUserApis> &
|
const affineApis = {} as ReturnType<typeof createUserApis> &
|
||||||
@@ -19,8 +12,6 @@ const affineApis = {} as ReturnType<typeof createUserApis> &
|
|||||||
Object.assign(affineApis, createUserApis(prefixUrl));
|
Object.assign(affineApis, createUserApis(prefixUrl));
|
||||||
Object.assign(affineApis, createWorkspaceApis(prefixUrl));
|
Object.assign(affineApis, createWorkspaceApis(prefixUrl));
|
||||||
|
|
||||||
const _debugLogger = new DebugLogger('affine-debug-apis');
|
|
||||||
|
|
||||||
if (!globalThis.AFFINE_APIS) {
|
if (!globalThis.AFFINE_APIS) {
|
||||||
globalThis.AFFINE_APIS = affineApis;
|
globalThis.AFFINE_APIS = affineApis;
|
||||||
globalThis.setLogin = (response: LoginResponse) => {
|
globalThis.setLogin = (response: LoginResponse) => {
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
|
import type { createWorkspaceApis } from '@affine/workspace/affine/api';
|
||||||
import type { BlobStorage } from '@blocksuite/store';
|
import type { BlobStorage } from '@blocksuite/store';
|
||||||
import { createIndexeddbStorage } from '@blocksuite/store';
|
import { createIndexeddbStorage } from '@blocksuite/store';
|
||||||
import { openDB } from 'idb';
|
import { openDB } from 'idb';
|
||||||
import type { DBSchema } from 'idb/build/entry';
|
import type { DBSchema } from 'idb/build/entry';
|
||||||
|
|
||||||
import type { createWorkspaceApis } from '../affine/api';
|
|
||||||
|
|
||||||
type UploadingBlob = {
|
type UploadingBlob = {
|
||||||
key: string;
|
key: string;
|
||||||
arrayBuffer: ArrayBuffer;
|
arrayBuffer: ArrayBuffer;
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
import type { AffineDownloadProvider } from '@affine/workspace/type';
|
import { DebugLogger } from '@affine/debug';
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists, Workspace } from '@blocksuite/store';
|
||||||
|
|
||||||
import { BlockSuiteWorkspace } from '../../../shared';
|
import { affineApis } from '../affine/shared';
|
||||||
import { affineApis } from '../../../shared/apis';
|
import type { AffineDownloadProvider } from '../type';
|
||||||
import { providerLogger } from '../../logger';
|
|
||||||
|
|
||||||
const hashMap = new Map<string, ArrayBuffer>();
|
const hashMap = new Map<string, ArrayBuffer>();
|
||||||
|
|
||||||
|
const logger = new DebugLogger('affine:workspace:download-provider');
|
||||||
|
|
||||||
export const createAffineDownloadProvider = (
|
export const createAffineDownloadProvider = (
|
||||||
blockSuiteWorkspace: BlockSuiteWorkspace
|
blockSuiteWorkspace: Workspace
|
||||||
): AffineDownloadProvider => {
|
): AffineDownloadProvider => {
|
||||||
assertExists(blockSuiteWorkspace.id);
|
assertExists(blockSuiteWorkspace.id);
|
||||||
const id = blockSuiteWorkspace.id;
|
const id = blockSuiteWorkspace.id;
|
||||||
@@ -22,10 +23,10 @@ export const createAffineDownloadProvider = (
|
|||||||
},
|
},
|
||||||
callbacks,
|
callbacks,
|
||||||
connect: () => {
|
connect: () => {
|
||||||
providerLogger.info('connect download provider', id);
|
logger.info('connect download provider', id);
|
||||||
if (hashMap.has(id)) {
|
if (hashMap.has(id)) {
|
||||||
providerLogger.debug('applyUpdate');
|
logger.debug('applyUpdate');
|
||||||
BlockSuiteWorkspace.Y.applyUpdate(
|
Workspace.Y.applyUpdate(
|
||||||
blockSuiteWorkspace.doc,
|
blockSuiteWorkspace.doc,
|
||||||
new Uint8Array(hashMap.get(id) as ArrayBuffer)
|
new Uint8Array(hashMap.get(id) as ArrayBuffer)
|
||||||
);
|
);
|
||||||
@@ -37,8 +38,8 @@ export const createAffineDownloadProvider = (
|
|||||||
.downloadWorkspace(id, false)
|
.downloadWorkspace(id, false)
|
||||||
.then(binary => {
|
.then(binary => {
|
||||||
hashMap.set(id, binary);
|
hashMap.set(id, binary);
|
||||||
providerLogger.debug('applyUpdate');
|
logger.debug('applyUpdate');
|
||||||
BlockSuiteWorkspace.Y.applyUpdate(
|
Workspace.Y.applyUpdate(
|
||||||
blockSuiteWorkspace.doc,
|
blockSuiteWorkspace.doc,
|
||||||
new Uint8Array(binary)
|
new Uint8Array(binary)
|
||||||
);
|
);
|
||||||
@@ -46,11 +47,11 @@ export const createAffineDownloadProvider = (
|
|||||||
callbacks.forEach(cb => cb());
|
callbacks.forEach(cb => cb());
|
||||||
})
|
})
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
providerLogger.error('downloadWorkspace', e);
|
logger.error('downloadWorkspace', e);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
disconnect: () => {
|
disconnect: () => {
|
||||||
providerLogger.info('disconnect download provider', id);
|
logger.info('disconnect download provider', id);
|
||||||
connected = false;
|
connected = false;
|
||||||
},
|
},
|
||||||
cleanup: () => {
|
cleanup: () => {
|
||||||
@@ -1,17 +1,4 @@
|
|||||||
import { config, websocketPrefixUrl } from '@affine/env';
|
import { config, websocketPrefixUrl } from '@affine/env';
|
||||||
import { KeckProvider } from '@affine/workspace/affine/keck';
|
|
||||||
import {
|
|
||||||
getLoginStorage,
|
|
||||||
storageChangeSlot,
|
|
||||||
} from '@affine/workspace/affine/login';
|
|
||||||
import type {
|
|
||||||
AffineWebSocketProvider,
|
|
||||||
LocalIndexedDBBackgroundProvider,
|
|
||||||
LocalIndexedDBDownloadProvider,
|
|
||||||
Provider,
|
|
||||||
SQLiteProvider,
|
|
||||||
} from '@affine/workspace/type';
|
|
||||||
import { CallbackSet } from '@affine/workspace/utils';
|
|
||||||
import type { BlobManager, Disposable } from '@blocksuite/store';
|
import type { BlobManager, Disposable } from '@blocksuite/store';
|
||||||
import {
|
import {
|
||||||
assertExists,
|
assertExists,
|
||||||
@@ -23,6 +10,17 @@ import {
|
|||||||
EarlyDisconnectError,
|
EarlyDisconnectError,
|
||||||
} from '@toeverything/y-indexeddb';
|
} from '@toeverything/y-indexeddb';
|
||||||
|
|
||||||
|
import { KeckProvider } from '../affine/keck';
|
||||||
|
import { getLoginStorage, storageChangeSlot } from '../affine/login';
|
||||||
|
import type {
|
||||||
|
AffineWebSocketProvider,
|
||||||
|
LocalIndexedDBBackgroundProvider,
|
||||||
|
LocalIndexedDBDownloadProvider,
|
||||||
|
Provider,
|
||||||
|
SQLiteProvider,
|
||||||
|
} from '../type';
|
||||||
|
import { CallbackSet } from '../utils';
|
||||||
|
import { createAffineDownloadProvider } from './affine-download';
|
||||||
import { createBroadCastChannelProvider } from './broad-cast-channel';
|
import { createBroadCastChannelProvider } from './broad-cast-channel';
|
||||||
import { localProviderLogger as logger } from './logger';
|
import { localProviderLogger as logger } from './logger';
|
||||||
|
|
||||||
@@ -258,6 +256,7 @@ const createSQLiteProvider = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
createAffineDownloadProvider,
|
||||||
createAffineWebSocketProvider,
|
createAffineWebSocketProvider,
|
||||||
createBroadCastChannelProvider,
|
createBroadCastChannelProvider,
|
||||||
createIndexedDBBackgroundProvider,
|
createIndexedDBBackgroundProvider,
|
||||||
@@ -278,3 +277,17 @@ export const createLocalProviders = (
|
|||||||
] as any[]
|
] as any[]
|
||||||
).filter(v => Boolean(v));
|
).filter(v => Boolean(v));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const createAffineProviders = (
|
||||||
|
blockSuiteWorkspace: BlockSuiteWorkspace
|
||||||
|
): Provider[] => {
|
||||||
|
return (
|
||||||
|
[
|
||||||
|
createAffineDownloadProvider(blockSuiteWorkspace),
|
||||||
|
createAffineWebSocketProvider(blockSuiteWorkspace),
|
||||||
|
config.enableBroadCastChannelProvider &&
|
||||||
|
createBroadCastChannelProvider(blockSuiteWorkspace),
|
||||||
|
createIndexedDBDownloadProvider(blockSuiteWorkspace),
|
||||||
|
] as any[]
|
||||||
|
).filter(v => Boolean(v));
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user