fix: move workspace to top level (#2717)
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
import { Unreachable } from '@affine/env/constant';
|
import { Unreachable } from '@affine/env/constant';
|
||||||
|
import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { affineApis } from '@affine/workspace/affine/shared';
|
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 { createAffineProviders } from '@affine/workspace/providers';
|
||||||
import type { AffineLegacyCloudWorkspace } 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';
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,12 @@
|
|||||||
import { AFFINE_STORAGE_KEY, config } from '@affine/env';
|
import { AFFINE_STORAGE_KEY, config } from '@affine/env';
|
||||||
import { initEmptyPage } from '@affine/env/blocksuite';
|
import { initEmptyPage } from '@affine/env/blocksuite';
|
||||||
import { PageNotFoundError } from '@affine/env/constant';
|
import { PageNotFoundError } from '@affine/env/constant';
|
||||||
|
import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace';
|
||||||
|
import {
|
||||||
|
LoadPriority,
|
||||||
|
ReleaseType,
|
||||||
|
WorkspaceFlavour,
|
||||||
|
} from '@affine/env/workspace';
|
||||||
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
|
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
|
||||||
import {
|
import {
|
||||||
clearLoginStorage,
|
clearLoginStorage,
|
||||||
@@ -21,12 +27,6 @@ import {
|
|||||||
createIndexedDBBackgroundProvider,
|
createIndexedDBBackgroundProvider,
|
||||||
} from '@affine/workspace/providers';
|
} from '@affine/workspace/providers';
|
||||||
import { createAffineDownloadProvider } from '@affine/workspace/providers';
|
import { createAffineDownloadProvider } from '@affine/workspace/providers';
|
||||||
import type { AffineLegacyCloudWorkspace } from '@affine/workspace/type';
|
|
||||||
import {
|
|
||||||
LoadPriority,
|
|
||||||
ReleaseType,
|
|
||||||
WorkspaceFlavour,
|
|
||||||
} from '@affine/workspace/type';
|
|
||||||
import {
|
import {
|
||||||
cleanupWorkspace,
|
cleanupWorkspace,
|
||||||
createEmptyBlockSuiteWorkspace,
|
createEmptyBlockSuiteWorkspace,
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ import {
|
|||||||
} from '@affine/env';
|
} from '@affine/env';
|
||||||
import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite';
|
import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite';
|
||||||
import { PageNotFoundError } from '@affine/env/constant';
|
import { PageNotFoundError } from '@affine/env/constant';
|
||||||
|
import {
|
||||||
|
LoadPriority,
|
||||||
|
ReleaseType,
|
||||||
|
WorkspaceFlavour,
|
||||||
|
} from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
CRUD,
|
CRUD,
|
||||||
saveWorkspaceToLocalStorage,
|
saveWorkspaceToLocalStorage,
|
||||||
} from '@affine/workspace/local/crud';
|
} from '@affine/workspace/local/crud';
|
||||||
import { createIndexedDBBackgroundProvider } from '@affine/workspace/providers';
|
import { createIndexedDBBackgroundProvider } from '@affine/workspace/providers';
|
||||||
import {
|
|
||||||
LoadPriority,
|
|
||||||
ReleaseType,
|
|
||||||
WorkspaceFlavour,
|
|
||||||
} from '@affine/workspace/type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { nanoid } from '@blocksuite/store';
|
import { nanoid } from '@blocksuite/store';
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import type {
|
|||||||
AppEvents,
|
AppEvents,
|
||||||
WorkspaceCRUD,
|
WorkspaceCRUD,
|
||||||
WorkspaceUISchema,
|
WorkspaceUISchema,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import type {
|
import type {
|
||||||
LoadPriority,
|
LoadPriority,
|
||||||
ReleaseType,
|
ReleaseType,
|
||||||
WorkspaceFlavour,
|
WorkspaceFlavour,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
|
|
||||||
export interface WorkspaceAdapter<Flavour extends WorkspaceFlavour> {
|
export interface WorkspaceAdapter<Flavour extends WorkspaceFlavour> {
|
||||||
releaseType: ReleaseType;
|
releaseType: ReleaseType;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Unreachable } from '@affine/env';
|
import { Unreachable } from '@affine/env';
|
||||||
import type { AppEvents, WorkspaceUISchema } from '@affine/workspace/type';
|
import type { AppEvents, WorkspaceUISchema } from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
LoadPriority,
|
LoadPriority,
|
||||||
ReleaseType,
|
ReleaseType,
|
||||||
WorkspaceFlavour,
|
WorkspaceFlavour,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
|
|
||||||
import { AffineAdapter } from './affine';
|
import { AffineAdapter } from './affine';
|
||||||
import { LocalAdapter } from './local';
|
import { LocalAdapter } from './local';
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
import 'fake-indexeddb/auto';
|
import 'fake-indexeddb/auto';
|
||||||
|
|
||||||
import { initEmptyPage } from '@affine/env/blocksuite';
|
import { initEmptyPage } from '@affine/env/blocksuite';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
rootCurrentWorkspaceIdAtom,
|
rootCurrentWorkspaceIdAtom,
|
||||||
rootWorkspacesMetadataAtom,
|
rootWorkspacesMetadataAtom,
|
||||||
} from '@affine/workspace/atom';
|
} from '@affine/workspace/atom';
|
||||||
import { createIndexedDBDownloadProvider } from '@affine/workspace/providers';
|
import { createIndexedDBDownloadProvider } from '@affine/workspace/providers';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import {
|
import {
|
||||||
_cleanupBlockSuiteWorkspaceCache,
|
_cleanupBlockSuiteWorkspaceCache,
|
||||||
createEmptyBlockSuiteWorkspace,
|
createEmptyBlockSuiteWorkspace,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import type { RootWorkspaceMetadata } from '@affine/workspace/atom';
|
import type { RootWorkspaceMetadata } from '@affine/workspace/atom';
|
||||||
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { atom } from 'jotai';
|
import { atom } from 'jotai';
|
||||||
import { atomWithStorage } from 'jotai/utils';
|
import { atomWithStorage } from 'jotai/utils';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { BlockSuiteFeatureFlags } from '@affine/env';
|
import type { BlockSuiteFeatureFlags } from '@affine/env';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import type { AffinePublicWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { affineApis } from '@affine/workspace/affine/shared';
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import type { AffinePublicWorkspace } 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';
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
//#region async atoms that to load the real workspace data
|
//#region async atoms that to load the real workspace data
|
||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import type {
|
||||||
|
NecessaryProvider,
|
||||||
|
WorkspaceRegistry,
|
||||||
|
} from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
rootCurrentWorkspaceIdAtom,
|
rootCurrentWorkspaceIdAtom,
|
||||||
rootWorkspacesMetadataAtom,
|
rootWorkspacesMetadataAtom,
|
||||||
} from '@affine/workspace/atom';
|
} from '@affine/workspace/atom';
|
||||||
import type {
|
|
||||||
NecessaryProvider,
|
|
||||||
WorkspaceRegistry,
|
|
||||||
} from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import { atom } from 'jotai';
|
import { atom } from 'jotai';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { initEmptyPage } from '@affine/env/blocksuite';
|
import { initEmptyPage } from '@affine/env/blocksuite';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import type { EditorContainer } from '@blocksuite/editor';
|
import type { EditorContainer } from '@blocksuite/editor';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import type { SettingPanel, WorkspaceRegistry } from '@affine/env/workspace';
|
||||||
|
import { settingPanel, WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import type { SettingPanel, WorkspaceRegistry } from '@affine/workspace/type';
|
|
||||||
import { settingPanel, WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import type { MouseEvent } from 'react';
|
import type { MouseEvent } from 'react';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import { Suspense, useCallback, useEffect, useMemo, useRef } from 'react';
|
import { Suspense, useCallback, useEffect, useMemo, useRef } from 'react';
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { Button, IconButton, Menu, MenuItem, Wrapper } from '@affine/component';
|
import { Button, IconButton, Menu, MenuItem, Wrapper } from '@affine/component';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
import { Unreachable } from '@affine/env/constant';
|
import { Unreachable } from '@affine/env/constant';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
|
||||||
import { PermissionType } from '@affine/workspace/affine/api';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import { PermissionType } from '@affine/env/workspace/legacy-cloud';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import {
|
import {
|
||||||
DeleteTemporarilyIcon,
|
DeleteTemporarilyIcon,
|
||||||
EmailIcon,
|
EmailIcon,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Button, Input, Modal, ModalCloseButton } from '@affine/component';
|
import { Button, Input, Modal, ModalCloseButton } from '@affine/component';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { Trans } from '@affine/i18n';
|
import { Trans } from '@affine/i18n';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
||||||
import { useCallback, useState } from 'react';
|
import { useCallback, useState } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import {
|
|||||||
} from '@affine/component';
|
} from '@affine/component';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
import { Unreachable } from '@affine/env/constant';
|
import { Unreachable } from '@affine/env/constant';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { Box } from '@mui/material';
|
import { Box } from '@mui/material';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import { useCallback, useEffect, useState } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Content, FlexWrapper, styled } from '@affine/component';
|
import { Content, FlexWrapper, styled } from '@affine/component';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { Trans } from '@affine/i18n';
|
import { Trans } from '@affine/i18n';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url';
|
import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url';
|
||||||
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
PageList,
|
PageList,
|
||||||
PageListTrashView,
|
PageListTrashView,
|
||||||
} from '@affine/component/page-list';
|
} from '@affine/component/page-list';
|
||||||
import type { View } from '@affine/component/page-list/filter/shared-types';
|
import type { View } from '@affine/env/filter';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
|
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
|
||||||
import type { PageMeta } from '@blocksuite/store';
|
import type { PageMeta } from '@blocksuite/store';
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { Unreachable } from '@affine/env/constant';
|
|||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type';
|
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { assertEquals } from '@blocksuite/store';
|
import { assertEquals } from '@blocksuite/store';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import { displayFlex, IconButton, styled, Tooltip } from '@affine/component';
|
import { displayFlex, IconButton, styled, Tooltip } from '@affine/component';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import type { LocalWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import {
|
import {
|
||||||
getLoginStorage,
|
getLoginStorage,
|
||||||
@@ -7,8 +9,6 @@ import {
|
|||||||
SignMethod,
|
SignMethod,
|
||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
import { affineAuth } from '@affine/workspace/affine/shared';
|
import { affineAuth } from '@affine/workspace/affine/shared';
|
||||||
import type { LocalWorkspace } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import {
|
import {
|
||||||
CloudWorkspaceIcon,
|
CloudWorkspaceIcon,
|
||||||
LocalWorkspaceIcon,
|
LocalWorkspaceIcon,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
appSidebarOpenAtom,
|
appSidebarOpenAtom,
|
||||||
} from '@affine/component/app-sidebar';
|
} from '@affine/component/app-sidebar';
|
||||||
import { SidebarSwitch } from '@affine/component/app-sidebar/sidebar-header';
|
import { SidebarSwitch } from '@affine/component/app-sidebar/sidebar-header';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { CloseIcon, MinusIcon, RoundedRectangleIcon } from '@blocksuite/icons';
|
import { CloseIcon, MinusIcon, RoundedRectangleIcon } from '@blocksuite/icons';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { affinePluginsAtom } from '@toeverything/plugin-infra/manager';
|
import { affinePluginsAtom } from '@toeverything/plugin-infra/manager';
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ import {
|
|||||||
Tooltip,
|
Tooltip,
|
||||||
} from '@affine/component';
|
} from '@affine/component';
|
||||||
import { WorkspaceList } from '@affine/component/workspace-list';
|
import { WorkspaceList } from '@affine/component/workspace-list';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
|
||||||
import type { AccessTokenMessage } from '@affine/workspace/affine/login';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
|
import type { AccessTokenMessage } from '@affine/workspace/affine/login';
|
||||||
import { HelpIcon, ImportIcon, PlusIcon } from '@blocksuite/icons';
|
import { HelpIcon, ImportIcon, PlusIcon } from '@blocksuite/icons';
|
||||||
import type { DragEndEvent } from '@dnd-kit/core';
|
import type { DragEndEvent } from '@dnd-kit/core';
|
||||||
import { useCallback, useRef } from 'react';
|
import { useCallback, useRef } from 'react';
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import {
|
|||||||
SidebarScrollableContainer,
|
SidebarScrollableContainer,
|
||||||
} from '@affine/component/app-sidebar';
|
} from '@affine/component/app-sidebar';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import {
|
import {
|
||||||
DeleteTemporarilyIcon,
|
DeleteTemporarilyIcon,
|
||||||
FolderIcon,
|
FolderIcon,
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
ViewList,
|
ViewList,
|
||||||
} from '@affine/component/page-list';
|
} from '@affine/component/page-list';
|
||||||
import { config } from '@affine/env';
|
import { config } from '@affine/env';
|
||||||
|
import type { WorkspaceHeaderProps } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import type { WorkspaceHeaderProps } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { SettingsIcon } from '@blocksuite/icons';
|
import { SettingsIcon } from '@blocksuite/icons';
|
||||||
import { RESET } from 'jotai/utils';
|
import { RESET } from 'jotai/utils';
|
||||||
import type { ReactElement } from 'react';
|
import type { ReactElement } from 'react';
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import 'fake-indexeddb/auto';
|
|||||||
|
|
||||||
import assert from 'node:assert';
|
import assert from 'node:assert';
|
||||||
|
|
||||||
|
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
|
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
|
||||||
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import type { PageBlockModel } from '@blocksuite/blocks';
|
import type { PageBlockModel } from '@blocksuite/blocks';
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* @vitest-environment happy-dom
|
* @vitest-environment happy-dom
|
||||||
*/
|
*/
|
||||||
|
import type { LocalWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
rootCurrentWorkspaceIdAtom,
|
rootCurrentWorkspaceIdAtom,
|
||||||
rootWorkspacesMetadataAtom,
|
rootWorkspacesMetadataAtom,
|
||||||
} from '@affine/workspace/atom';
|
} from '@affine/workspace/atom';
|
||||||
import type { LocalWorkspace } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour, WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @vitest-environment happy-dom
|
* @vitest-environment happy-dom
|
||||||
*/
|
*/
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { renderHook } from '@testing-library/react';
|
import { renderHook } from '@testing-library/react';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import routerMock from 'next-router-mock';
|
import routerMock from 'next-router-mock';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { PermissionType } from '@affine/workspace/affine/api';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { PermissionType } from '@affine/env/workspace/legacy-cloud';
|
||||||
|
|
||||||
import type { AffineOfficialWorkspace } from '../../shared';
|
import type { AffineOfficialWorkspace } from '../../shared';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Member } from '@affine/workspace/affine/api';
|
import type { Member } from '@affine/env/workspace/legacy-cloud';
|
||||||
import { affineApis } from '@affine/workspace/affine/shared';
|
import { affineApis } from '@affine/workspace/affine/shared';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import type { AffineLegacyCloudWorkspace } from '@affine/env/workspace';
|
||||||
import { affineApis } from '@affine/workspace/affine/shared';
|
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 { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import type { WorkspaceRegistry } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
|
import { currentAffineUserAtom } from '@affine/workspace/affine/atom';
|
||||||
import {
|
import {
|
||||||
getLoginStorage,
|
getLoginStorage,
|
||||||
@@ -8,8 +10,6 @@ import {
|
|||||||
} from '@affine/workspace/affine/login';
|
} from '@affine/workspace/affine/login';
|
||||||
import { affineAuth } from '@affine/workspace/affine/shared';
|
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 { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { useSetAtom } from 'jotai';
|
import { useSetAtom } from 'jotai';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { WorkspaceSubPath } from '@affine/workspace/type';
|
import type { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import type { NextRouter } from 'next/router';
|
import type { NextRouter } from 'next/router';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import type { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import type { WorkspaceRegistry } from '@affine/env/workspace';
|
||||||
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||||
import type { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import type { WorkspaceRegistry } from '@affine/workspace/type';
|
|
||||||
import { useSetAtom } from 'jotai';
|
import { useSetAtom } from 'jotai';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import type { LocalWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
|
||||||
import { saveWorkspaceToLocalStorage } from '@affine/workspace/local/crud';
|
import { saveWorkspaceToLocalStorage } from '@affine/workspace/local/crud';
|
||||||
import type { LocalWorkspace } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { nanoid } from '@blocksuite/store';
|
import { nanoid } from '@blocksuite/store';
|
||||||
import { useAtomValue, useSetAtom } from 'jotai';
|
import { useAtomValue, useSetAtom } from 'jotai';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { AppContainer, MainContainer } from '@affine/component/workspace';
|
import { AppContainer, MainContainer } from '@affine/component/workspace';
|
||||||
import type { AffinePublicWorkspace } from '@affine/workspace/type';
|
import type { AffinePublicWorkspace } from '@affine/env/workspace';
|
||||||
import { useAtom } from 'jotai';
|
import { useAtom } from 'jotai';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import {
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
import { config, DEFAULT_HELLO_WORLD_PAGE_ID } from '@affine/env';
|
import { config, DEFAULT_HELLO_WORLD_PAGE_ID } from '@affine/env';
|
||||||
import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite';
|
import { initEmptyPage, initPageWithPreloading } from '@affine/env/blocksuite';
|
||||||
|
import type { BackgroundProvider } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { setUpLanguage, useI18N } from '@affine/i18n';
|
import { setUpLanguage, useI18N } from '@affine/i18n';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { createAffineGlobalChannel } from '@affine/workspace/affine/sync';
|
import { createAffineGlobalChannel } from '@affine/workspace/affine/sync';
|
||||||
@@ -21,8 +23,6 @@ import {
|
|||||||
rootStore,
|
rootStore,
|
||||||
rootWorkspacesMetadataAtom,
|
rootWorkspacesMetadataAtom,
|
||||||
} from '@affine/workspace/atom';
|
} from '@affine/workspace/atom';
|
||||||
import type { BackgroundProvider } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { assertEquals, assertExists, nanoid } from '@blocksuite/store';
|
import { assertEquals, assertExists, nanoid } from '@blocksuite/store';
|
||||||
import type { DragEndEvent } from '@dnd-kit/core';
|
import type { DragEndEvent } from '@dnd-kit/core';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Button } from '@affine/component';
|
import { Button } from '@affine/component';
|
||||||
import { AppContainer, MainContainer } from '@affine/component/workspace';
|
import { AppContainer, MainContainer } from '@affine/component/workspace';
|
||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import type { BroadCastChannelProvider } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { createBroadCastChannelProvider } from '@affine/workspace/providers';
|
import { createBroadCastChannelProvider } from '@affine/workspace/providers';
|
||||||
import type { BroadCastChannelProvider } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { nanoid } from '@blocksuite/store';
|
import { nanoid } from '@blocksuite/store';
|
||||||
import { Typography } from '@mui/material';
|
import { Typography } from '@mui/material';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { WorkspaceFallback } from '@affine/component/workspace';
|
import { WorkspaceFallback } from '@affine/component/workspace';
|
||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import type { NextPage } from 'next';
|
import type { NextPage } from 'next';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { Suspense, useEffect } from 'react';
|
import { Suspense, useEffect } from 'react';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { displayFlex, styled } from '@affine/component';
|
import { displayFlex, styled } from '@affine/component';
|
||||||
import { Button } from '@affine/component';
|
import { Button } from '@affine/component';
|
||||||
import type { Permission } from '@affine/workspace/affine/api';
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
import type { Permission } from '@affine/env/workspace/legacy-cloud';
|
||||||
import {
|
import {
|
||||||
SucessfulDuotoneIcon,
|
SucessfulDuotoneIcon,
|
||||||
UnsucessfulDuotoneIcon,
|
UnsucessfulDuotoneIcon,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useAllPageSetting } from '@affine/component/page-list';
|
import { useAllPageSetting } from '@affine/component/page-list';
|
||||||
import { QueryParamError } from '@affine/env/constant';
|
import { QueryParamError } from '@affine/env/constant';
|
||||||
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import type { SettingPanel } from '@affine/env/workspace';
|
||||||
import type { SettingPanel } from '@affine/workspace/type';
|
|
||||||
import {
|
import {
|
||||||
settingPanel,
|
settingPanel,
|
||||||
settingPanelValues,
|
settingPanelValues,
|
||||||
WorkspaceSubPath,
|
WorkspaceSubPath,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import { useAtom } from 'jotai';
|
import { useAtom } from 'jotai';
|
||||||
import { atomWithStorage } from 'jotai/utils';
|
import { atomWithStorage } from 'jotai/utils';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { env } from '@affine/env';
|
import { env } from '@affine/env';
|
||||||
|
import { WorkspaceSubPath } from '@affine/env/workspace';
|
||||||
import {
|
import {
|
||||||
rootCurrentWorkspaceIdAtom,
|
rootCurrentWorkspaceIdAtom,
|
||||||
rootWorkspacesMetadataAtom,
|
rootWorkspacesMetadataAtom,
|
||||||
} from '@affine/workspace/atom';
|
} from '@affine/workspace/atom';
|
||||||
import { WorkspaceSubPath } from '@affine/workspace/type';
|
|
||||||
import { arrayMove } from '@dnd-kit/sortable';
|
import { arrayMove } from '@dnd-kit/sortable';
|
||||||
import { useAtom, useSetAtom } from 'jotai';
|
import { useAtom, useSetAtom } from 'jotai';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import type { AffinePublicWorkspace } from '@affine/workspace/type';
|
import type { AffinePublicWorkspace } from '@affine/env/workspace';
|
||||||
import type { WorkspaceRegistry } from '@affine/workspace/type';
|
import type { WorkspaceRegistry } from '@affine/env/workspace';
|
||||||
import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
||||||
import type { NextPage } from 'next';
|
import type { NextPage } from 'next';
|
||||||
import type { ReactElement, ReactNode } from 'react';
|
import type { ReactElement, ReactNode } from 'react';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
|
||||||
import { PermissionType } from '@affine/workspace/affine/api';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import { PermissionType } from '@affine/env/workspace/legacy-cloud';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { SettingsIcon } from '@blocksuite/icons';
|
import { SettingsIcon } from '@blocksuite/icons';
|
||||||
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
|
|||||||
@@ -3,6 +3,12 @@
|
|||||||
*/
|
*/
|
||||||
import 'fake-indexeddb/auto';
|
import 'fake-indexeddb/auto';
|
||||||
|
|
||||||
|
import type {
|
||||||
|
Filter,
|
||||||
|
LiteralValue,
|
||||||
|
Ref,
|
||||||
|
VariableMap,
|
||||||
|
} from '@affine/env/filter';
|
||||||
import { assertExists } from '@blocksuite/global/utils';
|
import { assertExists } from '@blocksuite/global/utils';
|
||||||
import { render } from '@testing-library/react';
|
import { render } from '@testing-library/react';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
@@ -10,12 +16,6 @@ import { describe, expect, test } from 'vitest';
|
|||||||
|
|
||||||
import { Condition } from '../filter/condition';
|
import { Condition } from '../filter/condition';
|
||||||
import { tBoolean, tDate } from '../filter/logical/custom-type';
|
import { tBoolean, tDate } from '../filter/logical/custom-type';
|
||||||
import type {
|
|
||||||
Filter,
|
|
||||||
LiteralValue,
|
|
||||||
Ref,
|
|
||||||
VariableMap,
|
|
||||||
} from '../filter/shared-types';
|
|
||||||
import { toLiteral } from '../filter/shared-types';
|
import { toLiteral } from '../filter/shared-types';
|
||||||
import type { FilterMatcherDataType } from '../filter/vars';
|
import type { FilterMatcherDataType } from '../filter/vars';
|
||||||
import { filterMatcher } from '../filter/vars';
|
import { filterMatcher } from '../filter/vars';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Filter, Literal } from '@affine/env/filter';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
@@ -5,7 +6,6 @@ import { Menu, MenuItem } from '../../../ui/menu';
|
|||||||
import * as styles from './index.css';
|
import * as styles from './index.css';
|
||||||
import { literalMatcher } from './literal-matcher';
|
import { literalMatcher } from './literal-matcher';
|
||||||
import type { TFunction, TType } from './logical/typesystem';
|
import type { TFunction, TType } from './logical/typesystem';
|
||||||
import type { Filter, Literal } from './shared-types';
|
|
||||||
import { filterMatcher, VariableSelect, vars } from './vars';
|
import { filterMatcher, VariableSelect, vars } from './vars';
|
||||||
|
|
||||||
export const Condition = ({
|
export const Condition = ({
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import type { Filter, Literal, Ref, VariableMap } from './shared-types';
|
import type { Filter, Literal, Ref, VariableMap } from '@affine/env/filter';
|
||||||
|
|
||||||
import { filterMatcher } from './vars';
|
import { filterMatcher } from './vars';
|
||||||
|
|
||||||
const evalRef = (ref: Ref, variableMap: VariableMap) => {
|
const evalRef = (ref: Ref, variableMap: VariableMap) => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import type { Filter } from '@affine/env/filter';
|
||||||
import { CloseIcon, PlusIcon } from '@blocksuite/icons';
|
import { CloseIcon, PlusIcon } from '@blocksuite/icons';
|
||||||
|
|
||||||
import { Menu } from '../../..';
|
import { Menu } from '../../..';
|
||||||
import { Condition } from './condition';
|
import { Condition } from './condition';
|
||||||
import * as styles from './index.css';
|
import * as styles from './index.css';
|
||||||
import type { Filter } from './shared-types';
|
|
||||||
import { CreateFilterMenu } from './vars';
|
import { CreateFilterMenu } from './vars';
|
||||||
export const FilterList = ({
|
export const FilterList = ({
|
||||||
value,
|
value,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Literal } from '@affine/env/filter';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
@@ -6,7 +7,6 @@ import { tBoolean, tDate } from './logical/custom-type';
|
|||||||
import { Matcher } from './logical/matcher';
|
import { Matcher } from './logical/matcher';
|
||||||
import type { TType } from './logical/typesystem';
|
import type { TType } from './logical/typesystem';
|
||||||
import { typesystem } from './logical/typesystem';
|
import { typesystem } from './logical/typesystem';
|
||||||
import type { Literal } from './shared-types';
|
|
||||||
|
|
||||||
export const literalMatcher = new Matcher<{
|
export const literalMatcher = new Matcher<{
|
||||||
render: (props: {
|
render: (props: {
|
||||||
|
|||||||
@@ -1,34 +1,14 @@
|
|||||||
|
import type { Literal, LiteralValue, VariableMap } from '@affine/env/filter';
|
||||||
import { DateTimeIcon, FavoritedIcon } from '@blocksuite/icons';
|
import { DateTimeIcon, FavoritedIcon } from '@blocksuite/icons';
|
||||||
import type { ReactElement } from 'react';
|
import type { ReactElement } from 'react';
|
||||||
|
|
||||||
import { tBoolean, tDate } from './logical/custom-type';
|
import { tBoolean, tDate } from './logical/custom-type';
|
||||||
import type { TType } from './logical/typesystem';
|
import type { TType } from './logical/typesystem';
|
||||||
|
|
||||||
export type Ref = {
|
|
||||||
type: 'ref';
|
|
||||||
name: keyof VariableMap;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Filter = {
|
|
||||||
type: 'filter';
|
|
||||||
left: Ref;
|
|
||||||
funcName: string;
|
|
||||||
args: Literal[];
|
|
||||||
};
|
|
||||||
export type LiteralValue =
|
|
||||||
| number
|
|
||||||
| string
|
|
||||||
| boolean
|
|
||||||
| { [K: string]: LiteralValue }
|
|
||||||
| Array<LiteralValue>;
|
|
||||||
export const toLiteral = (value: LiteralValue): Literal => ({
|
export const toLiteral = (value: LiteralValue): Literal => ({
|
||||||
type: 'literal',
|
type: 'literal',
|
||||||
value,
|
value,
|
||||||
});
|
});
|
||||||
export type Literal = {
|
|
||||||
type: 'literal';
|
|
||||||
value: LiteralValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type FilterVariable = {
|
export type FilterVariable = {
|
||||||
name: keyof VariableMap;
|
name: keyof VariableMap;
|
||||||
@@ -56,11 +36,12 @@ export const variableDefineMap = {
|
|||||||
// type: tBoolean.create(),
|
// type: tBoolean.create(),
|
||||||
// },
|
// },
|
||||||
} as const;
|
} as const;
|
||||||
export type VariableMap = {
|
|
||||||
|
export type InternalVariableMap = {
|
||||||
[K in keyof typeof variableDefineMap]: LiteralValue;
|
[K in keyof typeof variableDefineMap]: LiteralValue;
|
||||||
};
|
};
|
||||||
export type View = {
|
|
||||||
id: string;
|
declare module '@affine/env/filter' {
|
||||||
name: string;
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
filterList: Filter[];
|
interface VariableMap extends InternalVariableMap {}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Filter, LiteralValue, VariableMap } from '@affine/env/filter';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
@@ -7,12 +8,7 @@ import { tBoolean, tDate } from './logical/custom-type';
|
|||||||
import { Matcher } from './logical/matcher';
|
import { Matcher } from './logical/matcher';
|
||||||
import type { TFunction } from './logical/typesystem';
|
import type { TFunction } from './logical/typesystem';
|
||||||
import { tFunction, typesystem } from './logical/typesystem';
|
import { tFunction, typesystem } from './logical/typesystem';
|
||||||
import type {
|
import type { FilterVariable } from './shared-types';
|
||||||
Filter,
|
|
||||||
FilterVariable,
|
|
||||||
LiteralValue,
|
|
||||||
VariableMap,
|
|
||||||
} from './shared-types';
|
|
||||||
import { variableDefineMap } from './shared-types';
|
import { variableDefineMap } from './shared-types';
|
||||||
|
|
||||||
export const vars: FilterVariable[] = Object.entries(variableDefineMap).map(
|
export const vars: FilterVariable[] = Object.entries(variableDefineMap).map(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Filter, VariableMap, View } from '@affine/env/filter';
|
||||||
import type { DBSchema } from 'idb';
|
import type { DBSchema } from 'idb';
|
||||||
import { openDB } from 'idb';
|
import { openDB } from 'idb';
|
||||||
import type { IDBPDatabase } from 'idb/build/entry';
|
import type { IDBPDatabase } from 'idb/build/entry';
|
||||||
@@ -8,7 +9,6 @@ import useSWRImmutable from 'swr/immutable';
|
|||||||
import { NIL } from 'uuid';
|
import { NIL } from 'uuid';
|
||||||
|
|
||||||
import { evalFilterList } from './filter';
|
import { evalFilterList } from './filter';
|
||||||
import type { Filter, VariableMap, View } from './filter/shared-types';
|
|
||||||
|
|
||||||
type PersistenceView = View;
|
type PersistenceView = View;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
import type { Filter, View } from '@affine/env/filter';
|
||||||
import { SaveIcon } from '@blocksuite/icons';
|
import { SaveIcon } from '@blocksuite/icons';
|
||||||
import { uuidv4 } from '@blocksuite/store';
|
import { uuidv4 } from '@blocksuite/store';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import { Button, Input, Modal, ModalWrapper } from '../../..';
|
import { Button, Input, Modal, ModalWrapper } from '../../..';
|
||||||
import { FilterList } from '../filter';
|
import { FilterList } from '../filter';
|
||||||
import type { Filter, View } from '../filter/shared-types';
|
|
||||||
import * as styles from './view-list.css';
|
import * as styles from './view-list.css';
|
||||||
|
|
||||||
type CreateViewProps = {
|
type CreateViewProps = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { ExportIcon, PublishIcon, ShareIcon } from '@blocksuite/icons';
|
import { ExportIcon, PublishIcon, ShareIcon } from '@blocksuite/icons';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public';
|
import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { prefixUrl } from '@affine/env';
|
import { prefixUrl } from '@affine/env';
|
||||||
|
import type { LocalWorkspace } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { Trans } from '@affine/i18n';
|
import { Trans } from '@affine/i18n';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import type { LocalWorkspace } from '@affine/workspace/type';
|
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
|
||||||
import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public';
|
import { useBlockSuiteWorkspacePageIsPublic } from '@toeverything/hooks/use-block-suite-workspace-page-is-public';
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
|
|
||||||
import { descriptionStyle, menuItemStyle } from './index.css';
|
import { descriptionStyle, menuItemStyle } from './index.css';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type {
|
|||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
AffinePublicWorkspace,
|
AffinePublicWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import type { Workspace } from '@blocksuite/store';
|
import type { Workspace } from '@blocksuite/store';
|
||||||
import * as RadixAvatar from '@radix-ui/react-avatar';
|
import * as RadixAvatar from '@radix-ui/react-avatar';
|
||||||
import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url';
|
import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import type { DragEndEvent } from '@dnd-kit/core';
|
import type { DragEndEvent } from '@dnd-kit/core';
|
||||||
import {
|
import {
|
||||||
DndContext,
|
DndContext,
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
{
|
{
|
||||||
"extends": "../../tsconfig.json",
|
"extends": "../../tsconfig.json",
|
||||||
"exclude": [
|
"exclude": ["lib"],
|
||||||
"lib",
|
|
||||||
"./src/components/page-list/filter/shared-types.tsx",
|
|
||||||
"./src/components/page-list/filter/logic/custom-type.ts",
|
|
||||||
"./src/components/page-list/filter/logic/matcher.ts",
|
|
||||||
"./src/components/page-list/filter/logic/typesystem.ts"
|
|
||||||
],
|
|
||||||
"include": ["./src/**/*", "./src/**/*.json"],
|
"include": ["./src/**/*", "./src/**/*.json"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"composite": true,
|
"composite": true,
|
||||||
@@ -30,7 +24,6 @@
|
|||||||
{
|
{
|
||||||
"path": "../../apps/electron"
|
"path": "../../apps/electron"
|
||||||
},
|
},
|
||||||
{ "path": "./tsconfig.workspace.json" },
|
|
||||||
{ "path": "../../tests/fixtures" }
|
{ "path": "../../tests/fixtures" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
3
packages/env/package.json
vendored
3
packages/env/package.json
vendored
@@ -15,6 +15,9 @@
|
|||||||
".": "./src/index.ts",
|
".": "./src/index.ts",
|
||||||
"./config": "./src/config.ts",
|
"./config": "./src/config.ts",
|
||||||
"./constant": "./src/constant.ts",
|
"./constant": "./src/constant.ts",
|
||||||
|
"./workspace": "./src/workspace.ts",
|
||||||
|
"./workspace/legacy-cloud": "./src/workspace/legacy-cloud/index.ts",
|
||||||
|
"./filter": "./src/filter.ts",
|
||||||
"./blocksuite": "./src/blocksuite/index.ts"
|
"./blocksuite": "./src/blocksuite/index.ts"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
32
packages/env/src/filter.ts
vendored
Normal file
32
packages/env/src/filter.ts
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
export type LiteralValue =
|
||||||
|
| number
|
||||||
|
| string
|
||||||
|
| boolean
|
||||||
|
| { [K: string]: LiteralValue }
|
||||||
|
| Array<LiteralValue>;
|
||||||
|
|
||||||
|
export type Ref = {
|
||||||
|
type: 'ref';
|
||||||
|
name: keyof VariableMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface VariableMap {}
|
||||||
|
|
||||||
|
export type Literal = {
|
||||||
|
type: 'literal';
|
||||||
|
value: LiteralValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Filter = {
|
||||||
|
type: 'filter';
|
||||||
|
left: Ref;
|
||||||
|
funcName: string;
|
||||||
|
args: Literal[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type View = {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
filterList: Filter[];
|
||||||
|
};
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import type { View } from '@affine/component/page-list/filter/shared-types';
|
|
||||||
import type { EditorContainer } from '@blocksuite/editor';
|
import type { EditorContainer } from '@blocksuite/editor';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import type { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
import type { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
||||||
import type { FC, PropsWithChildren } from 'react';
|
import type { FC, PropsWithChildren } from 'react';
|
||||||
|
|
||||||
import type { Workspace as RemoteWorkspace } from './affine/api';
|
import type { View } from './filter';
|
||||||
|
import type { Workspace as RemoteWorkspace } from './workspace/legacy-cloud';
|
||||||
|
|
||||||
export enum WorkspaceSubPath {
|
export enum WorkspaceSubPath {
|
||||||
ALL = 'all',
|
ALL = 'all',
|
||||||
129
packages/env/src/workspace/legacy-cloud/index.ts
vendored
Normal file
129
packages/env/src/workspace/legacy-cloud/index.ts
vendored
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
export interface User {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
email: string;
|
||||||
|
avatar_url: string;
|
||||||
|
create_at: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GetUserByEmailParams {
|
||||||
|
email: string;
|
||||||
|
workspace_id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const usageResponseSchema = z.object({
|
||||||
|
blob_usage: z.object({
|
||||||
|
usage: z.number(),
|
||||||
|
max_usage: z.number(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type UsageResponse = z.infer<typeof usageResponseSchema>;
|
||||||
|
|
||||||
|
export interface GetWorkspaceDetailParams {
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum WorkspaceType {
|
||||||
|
Private = 0,
|
||||||
|
Normal = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum PermissionType {
|
||||||
|
Read = 0,
|
||||||
|
Write = 1,
|
||||||
|
Admin = 10,
|
||||||
|
Owner = 99,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const userSchema = z.object({
|
||||||
|
id: z.string(),
|
||||||
|
name: z.string(),
|
||||||
|
email: z.string(),
|
||||||
|
avatar_url: z.string(),
|
||||||
|
created_at: z.number(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const workspaceSchema = z.object({
|
||||||
|
id: z.string(),
|
||||||
|
type: z.nativeEnum(WorkspaceType),
|
||||||
|
public: z.boolean(),
|
||||||
|
permission: z.nativeEnum(PermissionType),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type Workspace = z.infer<typeof workspaceSchema>;
|
||||||
|
|
||||||
|
export const workspaceDetailSchema = z.object({
|
||||||
|
...workspaceSchema.shape,
|
||||||
|
permission: z.undefined(),
|
||||||
|
owner: userSchema,
|
||||||
|
member_count: z.number(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type WorkspaceDetail = z.infer<typeof workspaceDetailSchema>;
|
||||||
|
|
||||||
|
export interface Permission {
|
||||||
|
id: string;
|
||||||
|
type: PermissionType;
|
||||||
|
workspace_id: string;
|
||||||
|
user_id: string;
|
||||||
|
user_email: string;
|
||||||
|
accepted: boolean;
|
||||||
|
create_at: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RegisteredUser extends User {
|
||||||
|
type: 'Registered';
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UnregisteredUser {
|
||||||
|
type: 'Unregistered';
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Member extends Permission {
|
||||||
|
user: RegisteredUser | UnregisteredUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GetWorkspaceMembersParams {
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CreateWorkspaceParams {
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateWorkspaceParams {
|
||||||
|
id: string;
|
||||||
|
public: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeleteWorkspaceParams {
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface InviteMemberParams {
|
||||||
|
id: string;
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RemoveMemberParams {
|
||||||
|
permissionId: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AcceptInvitingParams {
|
||||||
|
invitingCode: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LeaveWorkspaceParams {
|
||||||
|
id: number | string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const createWorkspaceResponseSchema = z.object({
|
||||||
|
id: z.string(),
|
||||||
|
public: z.boolean(),
|
||||||
|
type: z.nativeEnum(WorkspaceType),
|
||||||
|
created_at: z.number(),
|
||||||
|
});
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"main": "./src/index.ts",
|
"main": "./src/index.ts",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@affine/env": "workspace:*",
|
|
||||||
"jotai": "^2.1.1"
|
"jotai": "^2.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
import { env } from '@affine/env';
|
|
||||||
import type { EditorContainer } from '@blocksuite/editor';
|
import type { EditorContainer } from '@blocksuite/editor';
|
||||||
import { atom } from 'jotai';
|
import { atom } from 'jotai';
|
||||||
|
|
||||||
export const lottieAtom = atom(import('lottie-web').then(m => m.default));
|
export const lottieAtom = atom(import('lottie-web').then(m => m.default));
|
||||||
|
|
||||||
export const editorContainerModuleAtom = atom<Promise<typeof EditorContainer>>(
|
export const editorContainerModuleAtom = atom<Promise<typeof EditorContainer>>(
|
||||||
env.isServer
|
typeof window === 'undefined'
|
||||||
? async () =>
|
? async () =>
|
||||||
import('@blocksuite/editor').then(module => module.EditorContainer)
|
import('@blocksuite/editor').then(module => module.EditorContainer)
|
||||||
: (import('@blocksuite/editor').then(
|
: (import('@blocksuite/editor').then(
|
||||||
|
|||||||
@@ -5,6 +5,5 @@
|
|||||||
"composite": true,
|
"composite": true,
|
||||||
"noEmit": false,
|
"noEmit": false,
|
||||||
"outDir": "lib"
|
"outDir": "lib"
|
||||||
},
|
}
|
||||||
"references": [{ "path": "../env" }]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { toast } from '@affine/component';
|
import { toast } from '@affine/component';
|
||||||
import { BlockCard } from '@affine/component/card/block-card';
|
import { BlockCard } from '@affine/component/card/block-card';
|
||||||
import { WorkspaceCard } from '@affine/component/card/workspace-card';
|
import { WorkspaceCard } from '@affine/component/card/workspace-card';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
|
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
|
||||||
import { Workspace } from '@blocksuite/store';
|
import { Workspace } from '@blocksuite/store';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { BlockSuiteEditor } from '@affine/component/block-suite-editor';
|
import { BlockSuiteEditor } from '@affine/component/block-suite-editor';
|
||||||
import { ImagePreviewModal } from '@affine/component/image-preview-modal';
|
import { ImagePreviewModal } from '@affine/component/image-preview-modal';
|
||||||
import { initEmptyPage } from '@affine/env/blocksuite';
|
import { initEmptyPage } from '@affine/env/blocksuite';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import type { Meta } from '@storybook/react';
|
import type { Meta } from '@storybook/react';
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,15 @@ import { toast } from '@affine/component';
|
|||||||
import { PublicLinkDisableModal } from '@affine/component/share-menu/disable-public-link';
|
import { PublicLinkDisableModal } from '@affine/component/share-menu/disable-public-link';
|
||||||
import { ShareMenu } from '@affine/component/share-menu/share-menu';
|
import { ShareMenu } from '@affine/component/share-menu/share-menu';
|
||||||
import { StyledDisableButton } from '@affine/component/share-menu/styles';
|
import { StyledDisableButton } from '@affine/component/share-menu/styles';
|
||||||
import { PermissionType, WorkspaceType } from '@affine/workspace/affine/api';
|
|
||||||
import type {
|
import type {
|
||||||
AffineLegacyCloudWorkspace,
|
AffineLegacyCloudWorkspace,
|
||||||
LocalWorkspace,
|
LocalWorkspace,
|
||||||
} from '@affine/workspace/type';
|
} from '@affine/env/workspace';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import {
|
||||||
|
PermissionType,
|
||||||
|
WorkspaceType,
|
||||||
|
} from '@affine/env/workspace/legacy-cloud';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import type { Page } from '@blocksuite/store';
|
import type { Page } from '@blocksuite/store';
|
||||||
import { expect } from '@storybook/jest';
|
import { expect } from '@storybook/jest';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { WorkspaceAvatarProps } from '@affine/component/workspace-avatar';
|
import type { WorkspaceAvatarProps } from '@affine/component/workspace-avatar';
|
||||||
import { WorkspaceAvatar } from '@affine/component/workspace-avatar';
|
import { WorkspaceAvatar } from '@affine/component/workspace-avatar';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { Workspace } from '@blocksuite/store';
|
import { Workspace } from '@blocksuite/store';
|
||||||
import type { Meta, StoryFn } from '@storybook/react';
|
import type { Meta, StoryFn } from '@storybook/react';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { WorkspaceListProps } from '@affine/component/workspace-list';
|
import type { WorkspaceListProps } from '@affine/component/workspace-list';
|
||||||
import { WorkspaceList } from '@affine/component/workspace-list';
|
import { WorkspaceList } from '@affine/component/workspace-list';
|
||||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
import { createEmptyBlockSuiteWorkspace } from '@affine/workspace/utils';
|
||||||
import { arrayMove } from '@dnd-kit/sortable';
|
import { arrayMove } from '@dnd-kit/sortable';
|
||||||
import type { Meta } from '@storybook/react';
|
import type { Meta } from '@storybook/react';
|
||||||
|
|||||||
@@ -6,6 +6,11 @@ import 'fake-indexeddb/auto';
|
|||||||
import { readFile } from 'node:fs/promises';
|
import { readFile } from 'node:fs/promises';
|
||||||
|
|
||||||
import { MessageCode } from '@affine/env/constant';
|
import { MessageCode } from '@affine/env/constant';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import {
|
||||||
|
createWorkspaceResponseSchema,
|
||||||
|
usageResponseSchema,
|
||||||
|
} from '@affine/env/workspace/legacy-cloud';
|
||||||
import user1 from '@affine-test/fixtures/built-in-user1.json';
|
import user1 from '@affine-test/fixtures/built-in-user1.json';
|
||||||
import user2 from '@affine-test/fixtures/built-in-user2.json';
|
import user2 from '@affine-test/fixtures/built-in-user2.json';
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
@@ -17,15 +22,8 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|||||||
import { WebSocket } from 'ws';
|
import { WebSocket } from 'ws';
|
||||||
import { applyUpdate } from 'yjs';
|
import { applyUpdate } from 'yjs';
|
||||||
|
|
||||||
import { WorkspaceFlavour } from '../../type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
||||||
import {
|
import { createUserApis, createWorkspaceApis, RequestError } from '../api';
|
||||||
createUserApis,
|
|
||||||
createWorkspaceApis,
|
|
||||||
createWorkspaceResponseSchema,
|
|
||||||
RequestError,
|
|
||||||
usageResponseSchema,
|
|
||||||
} from '../api';
|
|
||||||
import { createStatusApis } from '../api/status';
|
import { createStatusApis } from '../api/status';
|
||||||
import { KeckProvider } from '../keck';
|
import { KeckProvider } from '../keck';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
*/
|
*/
|
||||||
import 'fake-indexeddb/auto';
|
import 'fake-indexeddb/auto';
|
||||||
|
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import type { Workspace } from '@affine/env/workspace/legacy-cloud';
|
||||||
|
import { PermissionType } from '@affine/env/workspace/legacy-cloud';
|
||||||
import user1 from '@affine-test/fixtures/built-in-user1.json';
|
import user1 from '@affine-test/fixtures/built-in-user1.json';
|
||||||
import user2 from '@affine-test/fixtures/built-in-user2.json';
|
import user2 from '@affine-test/fixtures/built-in-user2.json';
|
||||||
import type { ParagraphBlockModel } from '@blocksuite/blocks/models';
|
import type { ParagraphBlockModel } from '@blocksuite/blocks/models';
|
||||||
@@ -13,10 +16,8 @@ import { WebSocket } from 'ws';
|
|||||||
|
|
||||||
import type { LoginResponse } from '../../affine/login';
|
import type { LoginResponse } from '../../affine/login';
|
||||||
import { loginResponseSchema } from '../../affine/login';
|
import { loginResponseSchema } from '../../affine/login';
|
||||||
import { WorkspaceFlavour } from '../../type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
import { createEmptyBlockSuiteWorkspace } from '../../utils';
|
||||||
import type { Workspace } from '../api';
|
import { createWorkspaceApis } from '../api';
|
||||||
import { createWorkspaceApis, PermissionType } from '../api';
|
|
||||||
import { KeckProvider } from '../keck';
|
import { KeckProvider } from '../keck';
|
||||||
|
|
||||||
declare module '@blocksuite/store' {
|
declare module '@blocksuite/store' {
|
||||||
|
|||||||
@@ -1,5 +1,20 @@
|
|||||||
import { MessageCode, Messages } from '@affine/env';
|
import { MessageCode, Messages } from '@affine/env';
|
||||||
import { z } from 'zod';
|
import type {
|
||||||
|
AcceptInvitingParams,
|
||||||
|
DeleteWorkspaceParams,
|
||||||
|
GetUserByEmailParams,
|
||||||
|
GetWorkspaceDetailParams,
|
||||||
|
InviteMemberParams,
|
||||||
|
LeaveWorkspaceParams,
|
||||||
|
Member,
|
||||||
|
Permission,
|
||||||
|
RemoveMemberParams,
|
||||||
|
UpdateWorkspaceParams,
|
||||||
|
UsageResponse,
|
||||||
|
User,
|
||||||
|
Workspace,
|
||||||
|
WorkspaceDetail,
|
||||||
|
} from '@affine/env/workspace/legacy-cloud';
|
||||||
|
|
||||||
import { checkLoginStorage } from '../login';
|
import { checkLoginStorage } from '../login';
|
||||||
|
|
||||||
@@ -28,28 +43,6 @@ function sendMessage(code: (typeof MessageCode)[keyof typeof MessageCode]) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface User {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
email: string;
|
|
||||||
avatar_url: string;
|
|
||||||
create_at: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GetUserByEmailParams {
|
|
||||||
email: string;
|
|
||||||
workspace_id: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const usageResponseSchema = z.object({
|
|
||||||
blob_usage: z.object({
|
|
||||||
usage: z.number(),
|
|
||||||
max_usage: z.number(),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
export type UsageResponse = z.infer<typeof usageResponseSchema>;
|
|
||||||
|
|
||||||
export function createUserApis(prefixUrl = '/') {
|
export function createUserApis(prefixUrl = '/') {
|
||||||
return {
|
return {
|
||||||
getUsage: async (): Promise<UsageResponse> => {
|
getUsage: async (): Promise<UsageResponse> => {
|
||||||
@@ -78,112 +71,6 @@ export function createUserApis(prefixUrl = '/') {
|
|||||||
} as const;
|
} as const;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GetWorkspaceDetailParams {
|
|
||||||
id: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum WorkspaceType {
|
|
||||||
Private = 0,
|
|
||||||
Normal = 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum PermissionType {
|
|
||||||
Read = 0,
|
|
||||||
Write = 1,
|
|
||||||
Admin = 10,
|
|
||||||
Owner = 99,
|
|
||||||
}
|
|
||||||
|
|
||||||
export const userSchema = z.object({
|
|
||||||
id: z.string(),
|
|
||||||
name: z.string(),
|
|
||||||
email: z.string(),
|
|
||||||
avatar_url: z.string(),
|
|
||||||
created_at: z.number(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export const workspaceSchema = z.object({
|
|
||||||
id: z.string(),
|
|
||||||
type: z.nativeEnum(WorkspaceType),
|
|
||||||
public: z.boolean(),
|
|
||||||
permission: z.nativeEnum(PermissionType),
|
|
||||||
});
|
|
||||||
|
|
||||||
export type Workspace = z.infer<typeof workspaceSchema>;
|
|
||||||
|
|
||||||
export const workspaceDetailSchema = z.object({
|
|
||||||
...workspaceSchema.shape,
|
|
||||||
permission: z.undefined(),
|
|
||||||
owner: userSchema,
|
|
||||||
member_count: z.number(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export type WorkspaceDetail = z.infer<typeof workspaceDetailSchema>;
|
|
||||||
|
|
||||||
export interface Permission {
|
|
||||||
id: string;
|
|
||||||
type: PermissionType;
|
|
||||||
workspace_id: string;
|
|
||||||
user_id: string;
|
|
||||||
user_email: string;
|
|
||||||
accepted: boolean;
|
|
||||||
create_at: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RegisteredUser extends User {
|
|
||||||
type: 'Registered';
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UnregisteredUser {
|
|
||||||
type: 'Unregistered';
|
|
||||||
email: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Member extends Permission {
|
|
||||||
user: RegisteredUser | UnregisteredUser;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GetWorkspaceMembersParams {
|
|
||||||
id: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CreateWorkspaceParams {
|
|
||||||
name: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UpdateWorkspaceParams {
|
|
||||||
id: string;
|
|
||||||
public: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DeleteWorkspaceParams {
|
|
||||||
id: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InviteMemberParams {
|
|
||||||
id: string;
|
|
||||||
email: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RemoveMemberParams {
|
|
||||||
permissionId: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AcceptInvitingParams {
|
|
||||||
invitingCode: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LeaveWorkspaceParams {
|
|
||||||
id: number | string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createWorkspaceResponseSchema = z.object({
|
|
||||||
id: z.string(),
|
|
||||||
public: z.boolean(),
|
|
||||||
type: z.nativeEnum(WorkspaceType),
|
|
||||||
created_at: z.number(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export function createWorkspaceApis(prefixUrl = '/') {
|
export function createWorkspaceApis(prefixUrl = '/') {
|
||||||
return {
|
return {
|
||||||
getWorkspaces: async (): Promise<Workspace[]> => {
|
getWorkspaces: async (): Promise<Workspace[]> => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { assertExists } from '@blocksuite/global/utils';
|
import { assertExists } from '@blocksuite/global/utils';
|
||||||
import * as url from 'lib0/url';
|
import * as url from 'lib0/url';
|
||||||
import * as websocket from 'lib0/websocket';
|
import * as websocket from 'lib0/websocket';
|
||||||
|
|
||||||
import { getLoginStorage, isExpired, parseIdToken } from '../affine/login';
|
import { getLoginStorage, isExpired, parseIdToken } from '../affine/login';
|
||||||
import { WorkspaceFlavour } from '../type';
|
|
||||||
import { cleanupWorkspace } from '../utils';
|
import { cleanupWorkspace } from '../utils';
|
||||||
|
|
||||||
const RECONNECT_INTERVAL_TIME = 500;
|
const RECONNECT_INTERVAL_TIME = 500;
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
import { websocketPrefixUrl } from '@affine/env/api';
|
import { websocketPrefixUrl } from '@affine/env/api';
|
||||||
|
import type { WorkspaceCRUD } from '@affine/env/workspace';
|
||||||
|
import type { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
|
import {
|
||||||
|
workspaceDetailSchema,
|
||||||
|
workspaceSchema,
|
||||||
|
} from '@affine/env/workspace/legacy-cloud';
|
||||||
import { assertExists } from '@blocksuite/global/utils';
|
import { assertExists } from '@blocksuite/global/utils';
|
||||||
import type { Disposable } from '@blocksuite/store';
|
import type { Disposable } from '@blocksuite/store';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
import { workspaceDetailSchema, workspaceSchema } from '../affine/api';
|
|
||||||
import { WebsocketClient } from '../affine/channel';
|
import { WebsocketClient } from '../affine/channel';
|
||||||
import { storageChangeSlot } from '../affine/login';
|
import { storageChangeSlot } from '../affine/login';
|
||||||
import { rootStore, rootWorkspacesMetadataAtom } from '../atom';
|
import { rootStore, rootWorkspacesMetadataAtom } from '../atom';
|
||||||
import type { WorkspaceCRUD } from '../type';
|
|
||||||
import type { WorkspaceFlavour } from '../type';
|
|
||||||
|
|
||||||
const logger = new DebugLogger('affine-sync');
|
const logger = new DebugLogger('affine-sync');
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
|
import type { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import type { EditorContainer } from '@blocksuite/editor';
|
import type { EditorContainer } from '@blocksuite/editor';
|
||||||
import { atom, createStore } from 'jotai';
|
import { atom, createStore } from 'jotai';
|
||||||
import { atomWithStorage, createJSONStorage } from 'jotai/utils';
|
import { atomWithStorage, createJSONStorage } from 'jotai/utils';
|
||||||
import Router from 'next/router';
|
import Router from 'next/router';
|
||||||
|
|
||||||
import type { WorkspaceFlavour } from './type';
|
|
||||||
|
|
||||||
export type RootWorkspaceMetadata = {
|
export type RootWorkspaceMetadata = {
|
||||||
id: string;
|
id: string;
|
||||||
flavour: WorkspaceFlavour;
|
flavour: WorkspaceFlavour;
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
*/
|
*/
|
||||||
import 'fake-indexeddb/auto';
|
import 'fake-indexeddb/auto';
|
||||||
|
|
||||||
|
import type { LocalWorkspace, WorkspaceCRUD } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
import { Workspace } from '@blocksuite/store';
|
import { Workspace } from '@blocksuite/store';
|
||||||
import { afterEach, assertType, describe, expect, test } from 'vitest';
|
import { afterEach, assertType, describe, expect, test } from 'vitest';
|
||||||
|
|
||||||
import type { LocalWorkspace, WorkspaceCRUD } from '../../type';
|
|
||||||
import { WorkspaceFlavour } from '../../type';
|
|
||||||
import { CRUD } from '../crud';
|
import { CRUD } from '../crud';
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import type { LocalWorkspace, WorkspaceCRUD } from '@affine/env/workspace';
|
||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { nanoid, Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
import { nanoid, Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
||||||
import { createIndexedDBProvider } from '@toeverything/y-indexeddb';
|
import { createIndexedDBProvider } from '@toeverything/y-indexeddb';
|
||||||
import { createJSONStorage } from 'jotai/utils';
|
import { createJSONStorage } from 'jotai/utils';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
import { createLocalProviders } from '../providers';
|
import { createLocalProviders } from '../providers';
|
||||||
import type { LocalWorkspace, WorkspaceCRUD } from '../type';
|
|
||||||
import { WorkspaceFlavour } from '../type';
|
|
||||||
import { createEmptyBlockSuiteWorkspace } from '../utils';
|
import { createEmptyBlockSuiteWorkspace } from '../utils';
|
||||||
|
|
||||||
const getStorage = () => createJSONStorage(() => localStorage);
|
const getStorage = () => createJSONStorage(() => localStorage);
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
|
import type {
|
||||||
|
SQLiteDBDownloadProvider,
|
||||||
|
SQLiteProvider,
|
||||||
|
} from '@affine/env/workspace';
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
import type { Y as YType } from '@blocksuite/store';
|
import type { Y as YType } from '@blocksuite/store';
|
||||||
import { uuidv4, Workspace } from '@blocksuite/store';
|
import { uuidv4, Workspace } from '@blocksuite/store';
|
||||||
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
||||||
|
|
||||||
import type { SQLiteDBDownloadProvider, SQLiteProvider } from '../../type';
|
|
||||||
import { createSQLiteDBDownloadProvider, createSQLiteProvider } from '../index';
|
import { createSQLiteDBDownloadProvider, createSQLiteProvider } from '../index';
|
||||||
|
|
||||||
const Y = Workspace.Y;
|
const Y = Workspace.Y;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { DebugLogger } from '@affine/debug';
|
import { DebugLogger } from '@affine/debug';
|
||||||
|
import type { AffineDownloadProvider } from '@affine/env/workspace';
|
||||||
import { assertExists, Workspace } from '@blocksuite/store';
|
import { assertExists, Workspace } from '@blocksuite/store';
|
||||||
|
|
||||||
import { affineApis } from '../affine/shared';
|
import { affineApis } from '../affine/shared';
|
||||||
import type { AffineDownloadProvider } from '../type';
|
|
||||||
|
|
||||||
const hashMap = new Map<string, ArrayBuffer>();
|
const hashMap = new Map<string, ArrayBuffer>();
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { BroadCastChannelProvider } from '@affine/env/workspace';
|
||||||
import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
|
||||||
import { assertExists } from '@blocksuite/store';
|
import { assertExists } from '@blocksuite/store';
|
||||||
import type { Awareness } from 'y-protocols/awareness';
|
import type { Awareness } from 'y-protocols/awareness';
|
||||||
@@ -6,7 +7,6 @@ import {
|
|||||||
encodeAwarenessUpdate,
|
encodeAwarenessUpdate,
|
||||||
} from 'y-protocols/awareness';
|
} from 'y-protocols/awareness';
|
||||||
|
|
||||||
import type { BroadCastChannelProvider } from '../../type';
|
|
||||||
import { CallbackSet } from '../../utils';
|
import { CallbackSet } from '../../utils';
|
||||||
import { localProviderLogger } from '../logger';
|
import { localProviderLogger } from '../logger';
|
||||||
import type {
|
import type {
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
import { config, websocketPrefixUrl } from '@affine/env';
|
import { config, websocketPrefixUrl } from '@affine/env';
|
||||||
|
import type {
|
||||||
|
AffineWebSocketProvider,
|
||||||
|
LocalIndexedDBBackgroundProvider,
|
||||||
|
LocalIndexedDBDownloadProvider,
|
||||||
|
Provider,
|
||||||
|
SQLiteDBDownloadProvider,
|
||||||
|
SQLiteProvider,
|
||||||
|
} from '@affine/env/workspace';
|
||||||
import type { BlobManager, Disposable } from '@blocksuite/store';
|
import type { BlobManager, Disposable } from '@blocksuite/store';
|
||||||
import {
|
import {
|
||||||
assertExists,
|
assertExists,
|
||||||
@@ -12,14 +20,6 @@ import {
|
|||||||
|
|
||||||
import { KeckProvider } from '../affine/keck';
|
import { KeckProvider } from '../affine/keck';
|
||||||
import { getLoginStorage, storageChangeSlot } from '../affine/login';
|
import { getLoginStorage, storageChangeSlot } from '../affine/login';
|
||||||
import type {
|
|
||||||
AffineWebSocketProvider,
|
|
||||||
LocalIndexedDBBackgroundProvider,
|
|
||||||
LocalIndexedDBDownloadProvider,
|
|
||||||
Provider,
|
|
||||||
SQLiteDBDownloadProvider,
|
|
||||||
SQLiteProvider,
|
|
||||||
} from '../type';
|
|
||||||
import { CallbackSet } from '../utils';
|
import { CallbackSet } from '../utils';
|
||||||
import { createAffineDownloadProvider } from './affine-download';
|
import { createAffineDownloadProvider } from './affine-download';
|
||||||
import { createBroadCastChannelProvider } from './broad-cast-channel';
|
import { createBroadCastChannelProvider } from './broad-cast-channel';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { WorkspaceFlavour } from '@affine/env/workspace';
|
||||||
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
import type { Generator, StoreOptions } from '@blocksuite/store';
|
import type { Generator, StoreOptions } from '@blocksuite/store';
|
||||||
import { createIndexeddbStorage, Workspace } from '@blocksuite/store';
|
import { createIndexeddbStorage, Workspace } from '@blocksuite/store';
|
||||||
@@ -6,7 +7,6 @@ import type { createWorkspaceApis } from './affine/api';
|
|||||||
import { rootStore, rootWorkspacesMetadataAtom } from './atom';
|
import { rootStore, rootWorkspacesMetadataAtom } from './atom';
|
||||||
import { createAffineBlobStorage } from './blob';
|
import { createAffineBlobStorage } from './blob';
|
||||||
import { createSQLiteStorage } from './blob/sqlite-blob-storage';
|
import { createSQLiteStorage } from './blob/sqlite-blob-storage';
|
||||||
import { WorkspaceFlavour } from './type';
|
|
||||||
|
|
||||||
export function cleanupWorkspace(flavour: WorkspaceFlavour) {
|
export function cleanupWorkspace(flavour: WorkspaceFlavour) {
|
||||||
rootStore.set(rootWorkspacesMetadataAtom, metas =>
|
rootStore.set(rootWorkspacesMetadataAtom, metas =>
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
{ "path": "../env" },
|
{ "path": "../env" },
|
||||||
{ "path": "../debug" },
|
{ "path": "../debug" },
|
||||||
{ "path": "../hooks" },
|
{ "path": "../hooks" },
|
||||||
{ "path": "../component/tsconfig.workspace.json" },
|
|
||||||
{ "path": "../../apps/electron" }
|
{ "path": "../../apps/electron" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,7 +234,6 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@affine/jotai@workspace:packages/jotai"
|
resolution: "@affine/jotai@workspace:packages/jotai"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@affine/env": "workspace:*"
|
|
||||||
"@blocksuite/blocks": 0.0.0-20230606130340-805f430b-nightly
|
"@blocksuite/blocks": 0.0.0-20230606130340-805f430b-nightly
|
||||||
"@blocksuite/editor": 0.0.0-20230606130340-805f430b-nightly
|
"@blocksuite/editor": 0.0.0-20230606130340-805f430b-nightly
|
||||||
"@blocksuite/global": 0.0.0-20230606130340-805f430b-nightly
|
"@blocksuite/global": 0.0.0-20230606130340-805f430b-nightly
|
||||||
|
|||||||
Reference in New Issue
Block a user