diff --git a/.eslintrc.js b/.eslintrc.js index a24c0f17a5..8506d3f8e5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -50,6 +50,7 @@ const allPackages = [ 'packages/frontend/i18n', 'packages/frontend/native', 'packages/frontend/templates', + 'packages/frontend/track', 'packages/common/debug', 'packages/common/env', 'packages/common/infra', diff --git a/packages/frontend/admin/src/app.tsx b/packages/frontend/admin/src/app.tsx index e1c5225f8e..199452062e 100644 --- a/packages/frontend/admin/src/app.tsx +++ b/packages/frontend/admin/src/app.tsx @@ -1,5 +1,4 @@ import { Toaster } from '@affine/admin/components/ui/sonner'; -import { Telemetry } from '@affine/core/telemetry'; import { wrapCreateBrowserRouter } from '@sentry/react'; import { useEffect } from 'react'; import { @@ -113,7 +112,6 @@ export const router = _createBrowserRouter( export const App = () => { return ( - | null = null; @@ -88,8 +79,6 @@ window.addEventListener('focus', () => { frameworkProvider.get(LifecycleService).applicationStart(); export function App() { - performanceRenderLogger.debug('App'); - if (!languageLoadingPromise) { languageLoadingPromise = loadLanguage().catch(console.error); } diff --git a/packages/frontend/apps/electron/renderer/index.tsx b/packages/frontend/apps/electron/renderer/index.tsx index 9183a640e9..f30282d03b 100644 --- a/packages/frontend/apps/electron/renderer/index.tsx +++ b/packages/frontend/apps/electron/renderer/index.tsx @@ -1,8 +1,7 @@ import './setup'; import './global.css'; -import { appConfigProxy } from '@affine/core/hooks/use-app-config-storage'; -import { performanceLogger } from '@affine/core/shared'; +import { appConfigProxy } from '@affine/core/components/hooks/use-app-config-storage'; import { apis, appInfo, events } from '@affine/electron-api'; import { init, @@ -21,10 +20,7 @@ import { import { App } from './app'; -const performanceMainLogger = performanceLogger.namespace('main'); function main() { - performanceMainLogger.info('start'); - // load persistent config for electron // TODO(@Peng): should be sync, but it's not necessary for now appConfigProxy @@ -33,12 +29,11 @@ function main() { // skip bootstrap setup for desktop onboarding if ( - appInfo?.windowName === 'onboarding' || - appInfo?.windowName === 'theme-editor' + !( + appInfo?.windowName === 'onboarding' || + appInfo?.windowName === 'theme-editor' + ) ) { - performanceMainLogger.info('skip setup'); - } else { - performanceMainLogger.info('setup start'); if (BUILD_CONFIG.debug || window.SENTRY_RELEASE) { // https://docs.sentry.io/platforms/javascript/guides/electron/ init({ @@ -100,7 +95,6 @@ function main() { apis?.ui.handleWindowResize().catch(console.error); }, 50); window.addEventListener('resize', handleResize); - performanceMainLogger.info('setup done'); window.addEventListener('dragstart', () => { document.documentElement.dataset.dragging = 'true'; }); @@ -113,10 +107,8 @@ function main() { } function mountApp() { - performanceMainLogger.info('import app'); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const root = document.getElementById('app')!; - performanceMainLogger.info('render app'); createRoot(root).render( diff --git a/packages/frontend/apps/electron/renderer/shell/index.tsx b/packages/frontend/apps/electron/renderer/shell/index.tsx index 32bd99232d..272836273e 100644 --- a/packages/frontend/apps/electron/renderer/shell/index.tsx +++ b/packages/frontend/apps/electron/renderer/shell/index.tsx @@ -6,7 +6,6 @@ import './setup'; import { ThemeProvider } from '@affine/component/theme-provider'; import { configureAppTabsHeaderModule } from '@affine/core/modules/app-tabs-header'; import { configureElectronStateStorageImpls } from '@affine/core/modules/storage'; -import { performanceLogger } from '@affine/core/shared'; import { apis, events } from '@affine/electron-api'; import { createI18n, setUpLanguage } from '@affine/i18n'; import { @@ -25,8 +24,6 @@ configureElectronStateStorageImpls(framework); configureAppTabsHeaderModule(framework); const frameworkProvider = framework.provider(); -const logger = performanceLogger.namespace('shell'); - async function loadLanguage() { const i18n = createI18n(); document.documentElement.lang = i18n.language; @@ -60,7 +57,6 @@ function mountApp() { if (!root) { throw new Error('Root element not found'); } - logger.info('render app'); createRoot(root).render( diff --git a/packages/frontend/apps/electron/renderer/shell/shell.tsx b/packages/frontend/apps/electron/renderer/shell/shell.tsx index 115f919132..08c50a3643 100644 --- a/packages/frontend/apps/electron/renderer/shell/shell.tsx +++ b/packages/frontend/apps/electron/renderer/shell/shell.tsx @@ -1,5 +1,5 @@ import { ShellAppFallback } from '@affine/core/components/affine/app-container'; -import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '@affine/core/components/hooks/affine/use-app-setting-helper'; import { AppTabsHeader } from '@affine/core/modules/app-tabs-header'; import { SplitViewFallback } from '@affine/core/modules/workbench/view/split-view/split-view'; diff --git a/packages/frontend/apps/mobile/package.json b/packages/frontend/apps/mobile/package.json index 0fb139af1a..24a54f895d 100644 --- a/packages/frontend/apps/mobile/package.json +++ b/packages/frontend/apps/mobile/package.json @@ -15,6 +15,7 @@ "@affine/env": "workspace:*", "@affine/graphql": "workspace:*", "@affine/i18n": "workspace:*", + "@affine/track": "workspace:*", "@blocksuite/blocks": "0.17.9", "@blocksuite/icons": "^2.1.66", "@radix-ui/react-collapsible": "^1.0.3", diff --git a/packages/frontend/apps/mobile/src/app.tsx b/packages/frontend/apps/mobile/src/app.tsx index 6cc4237f9a..cb8d93a0fc 100644 --- a/packages/frontend/apps/mobile/src/app.tsx +++ b/packages/frontend/apps/mobile/src/app.tsx @@ -4,6 +4,7 @@ import './styles/mobile.css'; import { AffineContext } from '@affine/component/context'; import { AppFallback } from '@affine/core/components/affine/app-container'; +import { Telemetry } from '@affine/core/components/telemetry'; import { configureCommonModules } from '@affine/core/modules'; import { configureLocalStorageStateStorageImpls } from '@affine/core/modules/storage'; import { configureBrowserWorkbenchModule } from '@affine/core/modules/workbench'; @@ -11,11 +12,6 @@ import { configureBrowserWorkspaceFlavours, configureIndexedDBWorkspaceEngineStorageProvider, } from '@affine/core/modules/workspace-engine'; -import { - performanceLogger, - performanceRenderLogger, -} from '@affine/core/shared'; -import { Telemetry } from '@affine/core/telemetry'; import { createI18n, setUpLanguage } from '@affine/i18n'; import { Framework, @@ -33,17 +29,11 @@ const future = { v7_startTransition: true, } as const; -const performanceI18nLogger = performanceLogger.namespace('i18n'); - async function loadLanguage() { - performanceI18nLogger.info('start'); - const i18n = createI18n(); document.documentElement.lang = i18n.language; - performanceI18nLogger.info('set up'); await setUpLanguage(i18n); - performanceI18nLogger.info('done'); } let languageLoadingPromise: Promise | null = null; @@ -64,8 +54,6 @@ window.addEventListener('focus', () => { frameworkProvider.get(LifecycleService).applicationStart(); export function App() { - performanceRenderLogger.debug('App'); - if (!languageLoadingPromise) { languageLoadingPromise = loadLanguage().catch(console.error); } diff --git a/packages/frontend/apps/mobile/src/components/doc-card/index.tsx b/packages/frontend/apps/mobile/src/components/doc-card/index.tsx index 2e226a9153..2d6f2db933 100644 --- a/packages/frontend/apps/mobile/src/components/doc-card/index.tsx +++ b/packages/frontend/apps/mobile/src/components/doc-card/index.tsx @@ -1,7 +1,7 @@ import { IconButton } from '@affine/component'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { PagePreview } from '@affine/core/components/page-list/page-content-preview'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkbenchLink, diff --git a/packages/frontend/apps/mobile/src/components/workspace-selector/current-card.tsx b/packages/frontend/apps/mobile/src/components/workspace-selector/current-card.tsx index 46aee2fc03..fe32b35b7e 100644 --- a/packages/frontend/apps/mobile/src/components/workspace-selector/current-card.tsx +++ b/packages/frontend/apps/mobile/src/components/workspace-selector/current-card.tsx @@ -1,5 +1,5 @@ import { WorkspaceAvatar } from '@affine/component/workspace-avatar'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { ArrowDownSmallIcon } from '@blocksuite/icons/rc'; import { useService, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/apps/mobile/src/components/workspace-selector/index.tsx b/packages/frontend/apps/mobile/src/components/workspace-selector/index.tsx index 364732d228..4da2a274e3 100644 --- a/packages/frontend/apps/mobile/src/components/workspace-selector/index.tsx +++ b/packages/frontend/apps/mobile/src/components/workspace-selector/index.tsx @@ -1,5 +1,5 @@ import { MobileMenu } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; +import { track } from '@affine/track'; import { useService, WorkspacesService } from '@toeverything/infra'; import { useCallback, useEffect, useState } from 'react'; diff --git a/packages/frontend/apps/mobile/src/components/workspace-selector/menu.tsx b/packages/frontend/apps/mobile/src/components/workspace-selector/menu.tsx index 121d770dbd..e68732968f 100644 --- a/packages/frontend/apps/mobile/src/components/workspace-selector/menu.tsx +++ b/packages/frontend/apps/mobile/src/components/workspace-selector/menu.tsx @@ -1,8 +1,7 @@ import { IconButton } from '@affine/component'; import { WorkspaceAvatar } from '@affine/component/workspace-avatar'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; -import { WorkspaceSubPath } from '@affine/core/shared'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { CloseIcon, CollaborationIcon } from '@blocksuite/icons/rc'; import { @@ -61,15 +60,15 @@ const WorkspaceList = ({ }) => { const currentWorkspace = useService(WorkspaceService).workspace; - const { jumpToSubPath } = useNavigateHelper(); + const { jumpToPage } = useNavigateHelper(); const toggleWorkspace = useCallback( (id: string) => { if (id !== currentWorkspace.id) { - jumpToSubPath(id, WorkspaceSubPath.ALL); + jumpToPage(id, 'all'); } onClose?.(); }, - [currentWorkspace.id, jumpToSubPath, onClose] + [currentWorkspace.id, jumpToPage, onClose] ); if (!list.length) return null; diff --git a/packages/frontend/apps/mobile/src/index.tsx b/packages/frontend/apps/mobile/src/index.tsx index 4b77280fb4..4d279a07a5 100644 --- a/packages/frontend/apps/mobile/src/index.tsx +++ b/packages/frontend/apps/mobile/src/index.tsx @@ -1,6 +1,5 @@ import './setup'; -import { performanceLogger } from '@affine/core/shared'; import { init, reactRouterV6BrowserTracingIntegration, @@ -17,9 +16,7 @@ import { import { App } from './app'; -const performanceMainLogger = performanceLogger.namespace('main'); function main() { - performanceMainLogger.info('setup start'); if (BUILD_CONFIG.debug || window.SENTRY_RELEASE) { // https://docs.sentry.io/platforms/javascript/guides/react/#configure init({ @@ -40,15 +37,12 @@ function main() { editorVersion: BUILD_CONFIG.editorVersion, }); } - performanceMainLogger.info('setup done'); mountApp(); } function mountApp() { - performanceMainLogger.info('import app'); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const root = document.getElementById('app')!; - performanceMainLogger.info('render app'); createRoot(root).render( diff --git a/packages/frontend/apps/mobile/src/pages/index.tsx b/packages/frontend/apps/mobile/src/pages/index.tsx index 5df7ff7040..c156d0fb6b 100644 --- a/packages/frontend/apps/mobile/src/pages/index.tsx +++ b/packages/frontend/apps/mobile/src/pages/index.tsx @@ -1,9 +1,8 @@ import { Component as IndexComponent } from '@affine/core/pages/index'; -import { WorkspaceSubPath } from '@affine/core/shared'; // Default route fallback for mobile export const Component = () => { // TODO: replace with a mobile version - return ; + return ; }; diff --git a/packages/frontend/apps/mobile/src/pages/sign-in.tsx b/packages/frontend/apps/mobile/src/pages/sign-in.tsx index 09a4171e15..ae616123ee 100644 --- a/packages/frontend/apps/mobile/src/pages/sign-in.tsx +++ b/packages/frontend/apps/mobile/src/pages/sign-in.tsx @@ -1,7 +1,7 @@ import { RouteLogic, useNavigateHelper, -} from '@affine/core/hooks/use-navigate-helper'; +} from '@affine/core/components/hooks/use-navigate-helper'; import { AuthService } from '@affine/core/modules/cloud'; import { useLiveData, useService } from '@toeverything/infra'; import { useEffect } from 'react'; diff --git a/packages/frontend/apps/mobile/src/pages/workspace/collection/detail.tsx b/packages/frontend/apps/mobile/src/pages/workspace/collection/detail.tsx index 896aa5b21d..c8de005be5 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/collection/detail.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/collection/detail.tsx @@ -1,7 +1,6 @@ import { notify, useThemeColorV2 } from '@affine/component'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { CollectionService } from '@affine/core/modules/collection'; -import { WorkspaceSubPath } from '@affine/core/shared'; import { GlobalContextService, useLiveData, @@ -44,7 +43,7 @@ export const Component = () => { }, [collection, globalContext]); const notifyCollectionDeleted = useCallback(() => { - navigate.jumpToSubPath(workspace.id, WorkspaceSubPath.HOME); + navigate.jumpToPage(workspace.id, 'home'); const collection = collectionService.collectionsTrash$.value.find( v => v.collection.id === params.collectionId ); diff --git a/packages/frontend/apps/mobile/src/pages/workspace/detail/journal-icon-button.tsx b/packages/frontend/apps/mobile/src/pages/workspace/detail/journal-icon-button.tsx index f111fa9128..c697e4c169 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/detail/journal-icon-button.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/detail/journal-icon-button.tsx @@ -1,5 +1,5 @@ import { IconButton, MobileMenu } from '@affine/component'; -import { useJournalInfoHelper } from '@affine/core/hooks/use-journal'; +import { useJournalInfoHelper } from '@affine/core/components/hooks/use-journal'; import { EditorJournalPanel } from '@affine/core/pages/workspace/detail-page/tabs/journal'; import { TodayIcon, TomorrowIcon, YesterdayIcon } from '@blocksuite/icons/rc'; import { useService, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/apps/mobile/src/pages/workspace/detail/mobile-detail-page.tsx b/packages/frontend/apps/mobile/src/pages/workspace/detail/mobile-detail-page.tsx index b3af4c9770..6d4477ca31 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/detail/mobile-detail-page.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/detail/mobile-detail-page.tsx @@ -1,12 +1,12 @@ import { useThemeColorV2 } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; +import { useRegisterBlocksuiteEditorCommands } from '@affine/core/components/hooks/affine/use-register-blocksuite-editor-commands'; +import { useActiveBlocksuiteEditor } from '@affine/core/components/hooks/use-block-suite-editor'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; +import { usePageDocumentTitle } from '@affine/core/components/hooks/use-global-state'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { PageDetailEditor } from '@affine/core/components/page-detail-editor'; -import { useRegisterBlocksuiteEditorCommands } from '@affine/core/hooks/affine/use-register-blocksuite-editor-commands'; -import { useActiveBlocksuiteEditor } from '@affine/core/hooks/use-block-suite-editor'; -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; -import { usePageDocumentTitle } from '@affine/core/hooks/use-global-state'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; import { EditorService } from '@affine/core/modules/editor'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { ViewService } from '@affine/core/modules/workbench/services/view'; diff --git a/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-more-button.tsx b/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-more-button.tsx index 64fb11b7ad..f16a535fec 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-more-button.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-more-button.tsx @@ -6,12 +6,12 @@ import { } from '@affine/component/ui/menu'; import { useFavorite } from '@affine/core/components/blocksuite/block-suite-header/favorite'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { track } from '@affine/core/mixpanel'; import { EditorService } from '@affine/core/modules/editor'; import { ViewService } from '@affine/core/modules/workbench/services/view'; import { EditorOutlinePanel } from '@affine/core/pages/workspace/detail-page/tabs/outline'; import { preventDefault } from '@affine/core/utils'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { EdgelessIcon, InformationIcon, diff --git a/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-share-button.tsx b/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-share-button.tsx index fc20a4c8d1..94c8077a33 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-share-button.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/detail/page-header-share-button.tsx @@ -1,6 +1,6 @@ import { IconButton, MobileMenu } from '@affine/component'; import { SharePage } from '@affine/core/components/affine/share-page-modal/share-menu/share-page'; -import { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud'; +import { useEnableCloud } from '@affine/core/components/hooks/affine/use-enable-cloud'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { ShareiOsIcon } from '@blocksuite/icons/rc'; import { DocService, useServices, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/apps/mobile/src/pages/workspace/layout.tsx b/packages/frontend/apps/mobile/src/pages/workspace/layout.tsx index c943395ac8..6d10c284c1 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/layout.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/layout.tsx @@ -1,7 +1,7 @@ import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; import { AppFallback } from '@affine/core/components/affine/app-container'; -import { WorkspaceLayoutProviders } from '@affine/core/layouts/workspace-layout'; -import { SWRConfigProvider } from '@affine/core/providers/swr-config-provider'; +import { WorkspaceLayoutProviders } from '@affine/core/components/layouts/workspace-layout'; +import { SWRConfigProvider } from '@affine/core/components/providers/swr-config-provider'; import type { Workspace, WorkspaceMetadata } from '@toeverything/infra'; import { FrameworkScope, diff --git a/packages/frontend/apps/mobile/src/provider/model-provider.tsx b/packages/frontend/apps/mobile/src/provider/model-provider.tsx index 060e74d4e0..606ddc00f5 100644 --- a/packages/frontend/apps/mobile/src/provider/model-provider.tsx +++ b/packages/frontend/apps/mobile/src/provider/model-provider.tsx @@ -7,11 +7,11 @@ import { LocalQuotaModal, } from '@affine/core/components/affine/quota-reached-modal'; import { StarAFFiNEModal } from '@affine/core/components/affine/star-affine-modal'; +import { useTrashModalHelper } from '@affine/core/components/hooks/affine/use-trash-modal-helper'; import { MoveToTrash } from '@affine/core/components/page-list'; -import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper'; +import { SignOutConfirmModal } from '@affine/core/components/providers/modal-provider'; import { CreateWorkspaceDialogProvider } from '@affine/core/modules/create-workspace'; import { PeekViewManagerModal } from '@affine/core/modules/peek-view'; -import { SignOutConfirmModal } from '@affine/core/providers/modal-provider'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useService, WorkspaceService } from '@toeverything/infra'; import { useCallback } from 'react'; diff --git a/packages/frontend/apps/mobile/src/router.tsx b/packages/frontend/apps/mobile/src/router.tsx index dd44d2a064..6ed8da075d 100644 --- a/packages/frontend/apps/mobile/src/router.tsx +++ b/packages/frontend/apps/mobile/src/router.tsx @@ -1,4 +1,4 @@ -import { NavigateContext } from '@affine/core/hooks/use-navigate-helper'; +import { NavigateContext } from '@affine/core/components/hooks/use-navigate-helper'; import { wrapCreateBrowserRouter } from '@sentry/react'; import { useEffect, useState } from 'react'; import type { RouteObject } from 'react-router-dom'; diff --git a/packages/frontend/apps/mobile/src/views/all-docs/doc/list.tsx b/packages/frontend/apps/mobile/src/views/all-docs/doc/list.tsx index 422ef4bd01..9fe199431f 100644 --- a/packages/frontend/apps/mobile/src/views/all-docs/doc/list.tsx +++ b/packages/frontend/apps/mobile/src/views/all-docs/doc/list.tsx @@ -1,4 +1,5 @@ import { EmptyDocs } from '@affine/core/components/affine/empty'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { type ItemGroupDefinition, type ItemGroupProps, @@ -7,7 +8,6 @@ import { usePageItemGroupDefinitions, } from '@affine/core/components/page-list'; import { itemsToItemGroups } from '@affine/core/components/page-list/items-to-item-group'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; import type { Tag } from '@affine/core/modules/tag'; import type { Collection, Filter } from '@affine/env/filter'; import { ToggleExpandIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/apps/mobile/src/views/home-header/index.tsx b/packages/frontend/apps/mobile/src/views/home-header/index.tsx index 37b92660ef..74a140e1ee 100644 --- a/packages/frontend/apps/mobile/src/views/home-header/index.tsx +++ b/packages/frontend/apps/mobile/src/views/home-header/index.tsx @@ -3,7 +3,7 @@ import { SafeArea, startScopedViewTransition, } from '@affine/component'; -import { openSettingModalAtom } from '@affine/core/atoms'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; import { SettingsIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/apps/mobile/src/views/recent-docs/index.tsx b/packages/frontend/apps/mobile/src/views/recent-docs/index.tsx index 7e6dab7e4d..3a62852c8c 100644 --- a/packages/frontend/apps/mobile/src/views/recent-docs/index.tsx +++ b/packages/frontend/apps/mobile/src/views/recent-docs/index.tsx @@ -1,4 +1,4 @@ -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { CollapsibleSection } from '@affine/core/modules/explorer'; import { useService, WorkspaceService } from '@toeverything/infra'; import { useMemo } from 'react'; diff --git a/packages/frontend/apps/mobile/src/views/settings/appearance/language.tsx b/packages/frontend/apps/mobile/src/views/settings/appearance/language.tsx index a6cb4038ee..01e4a7735b 100644 --- a/packages/frontend/apps/mobile/src/views/settings/appearance/language.tsx +++ b/packages/frontend/apps/mobile/src/views/settings/appearance/language.tsx @@ -1,4 +1,4 @@ -import { useLanguageHelper } from '@affine/core/hooks/affine/use-language-helper'; +import { useLanguageHelper } from '@affine/core/components/hooks/affine/use-language-helper'; import { useI18n } from '@affine/i18n'; import { useMemo } from 'react'; diff --git a/packages/frontend/apps/mobile/src/views/settings/index.tsx b/packages/frontend/apps/mobile/src/views/settings/index.tsx index 8ddaf40fc5..b9d3d15ad5 100644 --- a/packages/frontend/apps/mobile/src/views/settings/index.tsx +++ b/packages/frontend/apps/mobile/src/views/settings/index.tsx @@ -1,5 +1,5 @@ import { Modal } from '@affine/component'; -import { openSettingModalAtom } from '@affine/core/atoms'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { AuthService } from '@affine/core/modules/cloud'; import { useI18n } from '@affine/i18n'; import { useService } from '@toeverything/infra'; diff --git a/packages/frontend/apps/mobile/src/views/settings/user-profile/index.tsx b/packages/frontend/apps/mobile/src/views/settings/user-profile/index.tsx index 0e95131598..849374bc1c 100644 --- a/packages/frontend/apps/mobile/src/views/settings/user-profile/index.tsx +++ b/packages/frontend/apps/mobile/src/views/settings/user-profile/index.tsx @@ -1,6 +1,6 @@ import { Avatar } from '@affine/component'; -import { authAtom } from '@affine/core/atoms'; -import { useSignOut } from '@affine/core/hooks/affine/use-sign-out'; +import { authAtom } from '@affine/core/components/atoms'; +import { useSignOut } from '@affine/core/components/hooks/affine/use-sign-out'; import { AuthService } from '@affine/core/modules/cloud'; import { ArrowRightSmallIcon } from '@blocksuite/icons/rc'; import { diff --git a/packages/frontend/apps/mobile/src/views/sign-in/modal.tsx b/packages/frontend/apps/mobile/src/views/sign-in/modal.tsx index fde00eda18..6336884226 100644 --- a/packages/frontend/apps/mobile/src/views/sign-in/modal.tsx +++ b/packages/frontend/apps/mobile/src/views/sign-in/modal.tsx @@ -1,5 +1,5 @@ import { Modal } from '@affine/component'; -import { authAtom } from '@affine/core/atoms'; +import { authAtom } from '@affine/core/components/atoms'; import { cssVarV2 } from '@toeverything/theme/v2'; import { useAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/packages/frontend/apps/web/src/app.tsx b/packages/frontend/apps/web/src/app.tsx index 77f0e0c2c8..94bf4b3fb1 100644 --- a/packages/frontend/apps/web/src/app.tsx +++ b/packages/frontend/apps/web/src/app.tsx @@ -4,6 +4,7 @@ import '@affine/component/theme/theme.css'; import { AffineContext } from '@affine/component/context'; import { GlobalLoading } from '@affine/component/global-loading'; import { AppFallback } from '@affine/core/components/affine/app-container'; +import { Telemetry } from '@affine/core/components/telemetry'; import { configureCommonModules } from '@affine/core/modules'; import { configureLocalStorageStateStorageImpls } from '@affine/core/modules/storage'; import { CustomThemeModifier } from '@affine/core/modules/theme-editor'; @@ -14,11 +15,6 @@ import { configureIndexedDBWorkspaceEngineStorageProvider, } from '@affine/core/modules/workspace-engine'; import { router } from '@affine/core/router'; -import { - performanceLogger, - performanceRenderLogger, -} from '@affine/core/shared'; -import { Telemetry } from '@affine/core/telemetry'; import createEmotionCache from '@affine/core/utils/create-emotion-cache'; import { createI18n, setUpLanguage } from '@affine/i18n'; import { CacheProvider } from '@emotion/react'; @@ -31,7 +27,6 @@ import { import { Suspense } from 'react'; import { RouterProvider } from 'react-router-dom'; -const performanceI18nLogger = performanceLogger.namespace('i18n'); const cache = createEmotionCache(); const future = { @@ -39,14 +34,10 @@ const future = { } as const; async function loadLanguage() { - performanceI18nLogger.info('start'); - const i18n = createI18n(); document.documentElement.lang = i18n.language; - performanceI18nLogger.info('set up'); await setUpLanguage(i18n); - performanceI18nLogger.info('done'); } let languageLoadingPromise: Promise | null = null; @@ -67,8 +58,6 @@ window.addEventListener('focus', () => { frameworkProvider.get(LifecycleService).applicationStart(); export function App() { - performanceRenderLogger.debug('App'); - if (!languageLoadingPromise) { languageLoadingPromise = loadLanguage().catch(console.error); } diff --git a/packages/frontend/apps/web/src/index.tsx b/packages/frontend/apps/web/src/index.tsx index 903d002e49..ed4abc2710 100644 --- a/packages/frontend/apps/web/src/index.tsx +++ b/packages/frontend/apps/web/src/index.tsx @@ -1,7 +1,5 @@ import './setup'; -import { performanceLogger } from '@affine/core/shared'; -import { appInfo } from '@affine/electron-api'; import { init, reactRouterV6BrowserTracingIntegration, @@ -18,46 +16,35 @@ import { import { App } from './app'; -const performanceMainLogger = performanceLogger.namespace('main'); function main() { - performanceMainLogger.info('start'); - // skip bootstrap setup for desktop onboarding - if (BUILD_CONFIG.isElectron && appInfo?.windowName === 'onboarding') { - performanceMainLogger.info('skip setup'); - } else { - performanceMainLogger.info('setup start'); - if (BUILD_CONFIG.debug || window.SENTRY_RELEASE) { - // https://docs.sentry.io/platforms/javascript/guides/react/#configure - init({ - dsn: process.env.SENTRY_DSN, - environment: process.env.BUILD_TYPE ?? 'development', - integrations: [ - reactRouterV6BrowserTracingIntegration({ - useEffect, - useLocation, - useNavigationType, - createRoutesFromChildren, - matchRoutes, - }), - ], - }); - setTags({ - appVersion: BUILD_CONFIG.appVersion, - editorVersion: BUILD_CONFIG.editorVersion, - }); - } - performanceMainLogger.info('setup done'); + if (BUILD_CONFIG.debug || window.SENTRY_RELEASE) { + // https://docs.sentry.io/platforms/javascript/guides/react/#configure + init({ + dsn: process.env.SENTRY_DSN, + environment: process.env.BUILD_TYPE ?? 'development', + integrations: [ + reactRouterV6BrowserTracingIntegration({ + useEffect, + useLocation, + useNavigationType, + createRoutesFromChildren, + matchRoutes, + }), + ], + }); + setTags({ + appVersion: BUILD_CONFIG.appVersion, + editorVersion: BUILD_CONFIG.editorVersion, + }); } mountApp(); } function mountApp() { - performanceMainLogger.info('import app'); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const root = document.getElementById('app')!; - performanceMainLogger.info('render app'); createRoot(root).render( diff --git a/packages/frontend/core/package.json b/packages/frontend/core/package.json index 88f2360fa2..173d4cbf32 100644 --- a/packages/frontend/core/package.json +++ b/packages/frontend/core/package.json @@ -16,6 +16,7 @@ "@affine/graphql": "workspace:*", "@affine/i18n": "workspace:*", "@affine/templates": "workspace:*", + "@affine/track": "workspace:*", "@blocksuite/affine-block-surface": "0.17.9", "@blocksuite/block-std": "0.17.9", "@blocksuite/blocks": "0.17.9", diff --git a/packages/frontend/core/src/commands/affine-creation.tsx b/packages/frontend/core/src/commands/affine-creation.tsx index 114d945135..d14111c74e 100644 --- a/packages/frontend/core/src/commands/affine-creation.tsx +++ b/packages/frontend/core/src/commands/affine-creation.tsx @@ -1,9 +1,9 @@ import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { ImportIcon, PlusIcon } from '@blocksuite/icons/rc'; import type { usePageHelper } from '../components/blocksuite/block-suite-page-list/utils'; -import { track } from '../mixpanel'; import type { CreateWorkspaceDialogService } from '../modules/create-workspace'; import { registerAffineCommand } from './registry'; diff --git a/packages/frontend/core/src/commands/affine-help.tsx b/packages/frontend/core/src/commands/affine-help.tsx index 9236b163a4..f99695c4e5 100644 --- a/packages/frontend/core/src/commands/affine-help.tsx +++ b/packages/frontend/core/src/commands/affine-help.tsx @@ -1,9 +1,9 @@ import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ContactWithUsIcon, NewIcon } from '@blocksuite/icons/rc'; import type { createStore } from 'jotai'; -import { openSettingModalAtom } from '../atoms'; -import { track } from '../mixpanel'; +import { openSettingModalAtom } from '../components/atoms'; import { popupWindow } from '../utils'; import { registerAffineCommand } from './registry'; diff --git a/packages/frontend/core/src/commands/affine-layout.tsx b/packages/frontend/core/src/commands/affine-layout.tsx index 730171c99f..e7e7c4d07d 100644 --- a/packages/frontend/core/src/commands/affine-layout.tsx +++ b/packages/frontend/core/src/commands/affine-layout.tsx @@ -1,9 +1,9 @@ import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { SidebarIcon } from '@blocksuite/icons/rc'; import type { createStore } from 'jotai'; import { appSidebarOpenAtom } from '../components/app-sidebar'; -import { track } from '../mixpanel'; import { registerAffineCommand } from './registry'; export function registerAffineLayoutCommands({ diff --git a/packages/frontend/core/src/commands/affine-navigation.tsx b/packages/frontend/core/src/commands/affine-navigation.tsx index 7ce36bbefd..75874a2f35 100644 --- a/packages/frontend/core/src/commands/affine-navigation.tsx +++ b/packages/frontend/core/src/commands/affine-navigation.tsx @@ -1,12 +1,14 @@ -import { WorkspaceSubPath } from '@affine/core/shared'; import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ArrowRightBigIcon } from '@blocksuite/icons/rc'; import type { DocCollection } from '@blocksuite/store'; import type { createStore } from 'jotai'; -import { openSettingModalAtom, openWorkspaceListModalAtom } from '../atoms'; -import type { useNavigateHelper } from '../hooks/use-navigate-helper'; -import { track } from '../mixpanel'; +import { + openSettingModalAtom, + openWorkspaceListModalAtom, +} from '../components/atoms'; +import type { useNavigateHelper } from '../components/hooks/use-navigate-helper'; import { registerAffineCommand } from './registry'; export function registerAffineNavigationCommands({ @@ -32,7 +34,7 @@ export function registerAffineNavigationCommands({ to: 'allDocs', }); - navigationHelper.jumpToSubPath(docCollection.id, WorkspaceSubPath.ALL); + navigationHelper.jumpToPage(docCollection.id, 'all'); }, }) ); @@ -129,10 +131,7 @@ export function registerAffineNavigationCommands({ to: 'trash', }); - navigationHelper.jumpToSubPath( - docCollection.id, - WorkspaceSubPath.TRASH - ); + navigationHelper.jumpToPage(docCollection.id, 'trash'); }, }) ); diff --git a/packages/frontend/core/src/commands/affine-settings.tsx b/packages/frontend/core/src/commands/affine-settings.tsx index 85effdcb69..193a80b8e8 100644 --- a/packages/frontend/core/src/commands/affine-settings.tsx +++ b/packages/frontend/core/src/commands/affine-settings.tsx @@ -1,11 +1,11 @@ import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { SettingsIcon } from '@blocksuite/icons/rc'; import { appSettingAtom } from '@toeverything/infra'; import type { createStore } from 'jotai'; import type { useTheme } from 'next-themes'; -import type { useLanguageHelper } from '../hooks/affine/use-language-helper'; -import { track } from '../mixpanel'; +import type { useLanguageHelper } from '../components/hooks/affine/use-language-helper'; import type { EditorSettingService } from '../modules/editor-settting'; import { registerAffineCommand } from './registry'; diff --git a/packages/frontend/core/src/commands/affine-updates.tsx b/packages/frontend/core/src/commands/affine-updates.tsx index 39921883f0..082aeefc7b 100644 --- a/packages/frontend/core/src/commands/affine-updates.tsx +++ b/packages/frontend/core/src/commands/affine-updates.tsx @@ -1,11 +1,11 @@ import { notify } from '@affine/component'; -import { updateReadyAtom } from '@affine/core/hooks/use-app-updater'; +import { updateReadyAtom } from '@affine/core/components/hooks/use-app-updater'; import { apis } from '@affine/electron-api'; import type { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ResetIcon } from '@blocksuite/icons/rc'; import type { createStore } from 'jotai'; -import { track } from '../mixpanel'; import { registerAffineCommand } from './registry'; export function registerAffineUpdatesCommands({ diff --git a/packages/frontend/core/src/components/affine/affine-error-boundary/affine-error-fallback.tsx b/packages/frontend/core/src/components/affine/affine-error-boundary/affine-error-fallback.tsx index 36c9248c17..2606256a19 100644 --- a/packages/frontend/core/src/components/affine/affine-error-boundary/affine-error-fallback.tsx +++ b/packages/frontend/core/src/components/affine/affine-error-boundary/affine-error-fallback.tsx @@ -10,17 +10,12 @@ import { DumpInfo } from './error-basic/info-logger'; import { AnyErrorFallback } from './error-fallbacks/any-error-fallback'; import { NoPageRootFallback } from './error-fallbacks/no-page-root-fallback'; import { PageNotFoundDetail } from './error-fallbacks/page-not-found-fallback'; -import { RecoverableErrorFallback } from './error-fallbacks/recoverable-error-fallback'; /** * Register all fallback components here. * If have new one just add it to the set. */ -const fallbacks = new Set([ - PageNotFoundDetail, - RecoverableErrorFallback, - NoPageRootFallback, -]); +const fallbacks = new Set([PageNotFoundDetail, NoPageRootFallback]); function getErrorFallbackComponent(error: any): FC { for (const Component of fallbacks) { diff --git a/packages/frontend/core/src/components/affine/affine-error-boundary/error-basic/error-detail.tsx b/packages/frontend/core/src/components/affine/affine-error-boundary/error-basic/error-detail.tsx index b5ccc07852..929534efe9 100644 --- a/packages/frontend/core/src/components/affine/affine-error-boundary/error-basic/error-detail.tsx +++ b/packages/frontend/core/src/components/affine/affine-error-boundary/error-basic/error-detail.tsx @@ -1,5 +1,5 @@ import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { Trans, useI18n } from '@affine/i18n'; import { useTheme } from 'next-themes'; import type { FC, PropsWithChildren, ReactNode } from 'react'; diff --git a/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/page-not-found-fallback.tsx b/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/page-not-found-fallback.tsx index 5e11dab99e..1d93c0bd34 100644 --- a/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/page-not-found-fallback.tsx +++ b/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/page-not-found-fallback.tsx @@ -5,7 +5,7 @@ import { useCallback } from 'react'; import { RouteLogic, useNavigateHelper, -} from '../../../../hooks/use-navigate-helper'; +} from '../../../../components/hooks/use-navigate-helper'; import { ErrorDetail, ErrorStatus } from '../error-basic/error-detail'; import { createErrorFallback } from '../error-basic/fallback-creator'; diff --git a/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/recoverable-error-fallback.tsx b/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/recoverable-error-fallback.tsx deleted file mode 100644 index f88e101849..0000000000 --- a/packages/frontend/core/src/components/affine/affine-error-boundary/error-fallbacks/recoverable-error-fallback.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useI18n } from '@affine/i18n'; -import { useCallback, useMemo, useState } from 'react'; - -import { RecoverableError } from '../../../../unexpected-application-state/errors'; -import { ContactUS, ErrorDetail } from '../error-basic/error-detail'; -import { createErrorFallback } from '../error-basic/fallback-creator'; - -export const RecoverableErrorFallback = createErrorFallback( - RecoverableError, - props => { - const { error, resetError } = props; - const t = useI18n(); - const [count, rerender] = useState(0); - - const canRetry = error.canRetry(); - const buttonDesc = useMemo(() => { - if (canRetry) { - return t['com.affine.error.refetch'](); - } - return t['com.affine.error.reload'](); - }, [canRetry, t]); - const onRetry = useCallback(async () => { - if (canRetry) { - rerender(count + 1); - await error.retry(); - } else { - document.location.reload(); - } - }, [error, count, canRetry]); - - return ( - ]} - /> - ); - } -); diff --git a/packages/frontend/core/src/components/affine/ai-onboarding/edgeless.dialog.tsx b/packages/frontend/core/src/components/affine/ai-onboarding/edgeless.dialog.tsx index 08b70baedd..ab0fc26e25 100644 --- a/packages/frontend/core/src/components/affine/ai-onboarding/edgeless.dialog.tsx +++ b/packages/frontend/core/src/components/affine/ai-onboarding/edgeless.dialog.tsx @@ -1,9 +1,9 @@ import { Button, FlexWrapper, notify } from '@affine/component'; -import { openSettingModalAtom } from '@affine/core/atoms'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { SubscriptionService } from '@affine/core/modules/cloud'; import { EditorService } from '@affine/core/modules/editor'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { AiIcon } from '@blocksuite/icons/rc'; import { useLiveData, useServices } from '@toeverything/infra'; import { cssVar } from '@toeverything/theme'; diff --git a/packages/frontend/core/src/components/affine/ai-onboarding/general.dialog.tsx b/packages/frontend/core/src/components/affine/ai-onboarding/general.dialog.tsx index 831145b2b4..7c2195a60b 100644 --- a/packages/frontend/core/src/components/affine/ai-onboarding/general.dialog.tsx +++ b/packages/frontend/core/src/components/affine/ai-onboarding/general.dialog.tsx @@ -1,9 +1,9 @@ import { Button, IconButton, Modal } from '@affine/component'; -import { openSettingModalAtom } from '@affine/core/atoms'; -import { useBlurRoot } from '@affine/core/hooks/use-blur-root'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; +import { useBlurRoot } from '@affine/core/components/hooks/use-blur-root'; import { AuthService, SubscriptionService } from '@affine/core/modules/cloud'; import { Trans, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ArrowLeftSmallIcon } from '@blocksuite/icons/rc'; import { useLiveData, useServices } from '@toeverything/infra'; import { useAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/ai-onboarding/local.dialog.tsx b/packages/frontend/core/src/components/affine/ai-onboarding/local.dialog.tsx index 5c9245eb21..5f6f4126ae 100644 --- a/packages/frontend/core/src/components/affine/ai-onboarding/local.dialog.tsx +++ b/packages/frontend/core/src/components/affine/ai-onboarding/local.dialog.tsx @@ -2,7 +2,7 @@ import { Button, notify } from '@affine/component'; import { RouteLogic, useNavigateHelper, -} from '@affine/core/hooks/use-navigate-helper'; +} from '@affine/core/components/hooks/use-navigate-helper'; import { AuthService } from '@affine/core/modules/cloud'; import { useI18n } from '@affine/i18n'; import { AiIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/components/affine/app-container.tsx b/packages/frontend/core/src/components/affine/app-container.tsx index d0fa95b8e0..c500e2ec67 100644 --- a/packages/frontend/core/src/components/affine/app-container.tsx +++ b/packages/frontend/core/src/components/affine/app-container.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx'; import type { PropsWithChildren, ReactElement } from 'react'; -import { useAppSettingHelper } from '../../hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '../../components/hooks/affine/use-app-setting-helper'; import { AppSidebarFallback, ShellAppSidebarFallback } from '../app-sidebar'; import type { WorkspaceRootProps } from '../workspace'; import { diff --git a/packages/frontend/core/src/components/affine/auth/after-sign-in-send-email.tsx b/packages/frontend/core/src/components/affine/auth/after-sign-in-send-email.tsx index d3a35fd716..99916c6424 100644 --- a/packages/frontend/core/src/components/affine/auth/after-sign-in-send-email.tsx +++ b/packages/frontend/core/src/components/affine/auth/after-sign-in-send-email.tsx @@ -6,7 +6,7 @@ import { ModalHeader, } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService } from '@affine/core/modules/cloud'; import { Trans, useI18n } from '@affine/i18n'; import { useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/affine/auth/after-sign-up-send-email.tsx b/packages/frontend/core/src/components/affine/auth/after-sign-up-send-email.tsx index 26933892b3..be1e0c0b96 100644 --- a/packages/frontend/core/src/components/affine/auth/after-sign-up-send-email.tsx +++ b/packages/frontend/core/src/components/affine/auth/after-sign-up-send-email.tsx @@ -6,7 +6,7 @@ import { ModalHeader, } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { Trans, useI18n } from '@affine/i18n'; import { useService } from '@toeverything/infra'; import type { FC } from 'react'; diff --git a/packages/frontend/core/src/components/affine/auth/ai-login-required.tsx b/packages/frontend/core/src/components/affine/auth/ai-login-required.tsx index 1811d6e741..0748a9cc2c 100644 --- a/packages/frontend/core/src/components/affine/auth/ai-login-required.tsx +++ b/packages/frontend/core/src/components/affine/auth/ai-login-required.tsx @@ -1,5 +1,5 @@ import { useConfirmModal } from '@affine/component'; -import { authAtom } from '@affine/core/atoms'; +import { authAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { atom, useAtom, useSetAtom } from 'jotai'; import { useCallback, useEffect } from 'react'; diff --git a/packages/frontend/core/src/components/affine/auth/index.tsx b/packages/frontend/core/src/components/affine/auth/index.tsx index 43da4b204c..6a4d106daa 100644 --- a/packages/frontend/core/src/components/affine/auth/index.tsx +++ b/packages/frontend/core/src/components/affine/auth/index.tsx @@ -1,7 +1,7 @@ import { notify } from '@affine/component'; import { AuthModal as AuthModalBase } from '@affine/component/auth-components'; -import { authAtom, type AuthAtomData } from '@affine/core/atoms'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { authAtom, type AuthAtomData } from '@affine/core/components/atoms'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService } from '@affine/core/modules/cloud'; import { apis, events } from '@affine/electron-api'; import { useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/affine/auth/send-email.tsx b/packages/frontend/core/src/components/affine/auth/send-email.tsx index b562e7ac78..cea9e1bbdb 100644 --- a/packages/frontend/core/src/components/affine/auth/send-email.tsx +++ b/packages/frontend/core/src/components/affine/auth/send-email.tsx @@ -6,7 +6,7 @@ import { ModalHeader, } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { sendChangeEmailMutation, sendChangePasswordEmailMutation, @@ -17,7 +17,7 @@ import { useI18n } from '@affine/i18n'; import { useLiveData, useService } from '@toeverything/infra'; import { useCallback, useState } from 'react'; -import { useMutation } from '../../../hooks/use-mutation'; +import { useMutation } from '../../../components/hooks/use-mutation'; import { ServerConfigService } from '../../../modules/cloud'; import type { AuthPanelProps } from './index'; diff --git a/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx b/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx index b205c16722..d12ee752c9 100644 --- a/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx +++ b/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx @@ -5,7 +5,7 @@ import { ModalHeader, } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService } from '@affine/core/modules/cloud'; import { useI18n } from '@affine/i18n'; import { useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/affine/auth/sign-in.tsx b/packages/frontend/core/src/components/affine/auth/sign-in.tsx index dfda02c981..fee26bac26 100644 --- a/packages/frontend/core/src/components/affine/auth/sign-in.tsx +++ b/packages/frontend/core/src/components/affine/auth/sign-in.tsx @@ -1,7 +1,7 @@ import { notify } from '@affine/component'; import { AuthInput, ModalHeader } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { Trans, useI18n } from '@affine/i18n'; import { ArrowRightBigIcon } from '@blocksuite/icons/rc'; import { useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/affine/auth/user-plan-button.tsx b/packages/frontend/core/src/components/affine/auth/user-plan-button.tsx index eced39a3a5..ed6f4f89a2 100644 --- a/packages/frontend/core/src/components/affine/auth/user-plan-button.tsx +++ b/packages/frontend/core/src/components/affine/auth/user-plan-button.tsx @@ -1,16 +1,16 @@ import { Tooltip } from '@affine/component/ui/tooltip'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { SubscriptionPlan } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; import { useLiveData, useServices } from '@toeverything/infra'; import { useSetAtom } from 'jotai'; import { useEffect } from 'react'; -import { openSettingModalAtom } from '../../../atoms'; import { ServerConfigService, SubscriptionService, } from '../../../modules/cloud'; +import { openSettingModalAtom } from '../../atoms'; import * as styles from './style.css'; export const UserPlanButton = () => { diff --git a/packages/frontend/core/src/components/affine/create-workspace-modal/index.tsx b/packages/frontend/core/src/components/affine/create-workspace-modal/index.tsx index f1318eda48..7d89152199 100644 --- a/packages/frontend/core/src/components/affine/create-workspace-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/create-workspace-modal/index.tsx @@ -1,13 +1,13 @@ import { Avatar, Input, Switch, toast } from '@affine/component'; import type { ConfirmModalProps } from '@affine/component/ui/modal'; import { ConfirmModal, Modal } from '@affine/component/ui/modal'; -import { authAtom } from '@affine/core/atoms'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { authAtom } from '@affine/core/components/atoms'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { DebugLogger } from '@affine/debug'; import { apis } from '@affine/electron-api'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DocsService, useLiveData, diff --git a/packages/frontend/core/src/components/affine/empty/collection-detail.tsx b/packages/frontend/core/src/components/affine/empty/collection-detail.tsx index 71cde948cf..02cd8f74c8 100644 --- a/packages/frontend/core/src/components/affine/empty/collection-detail.tsx +++ b/packages/frontend/core/src/components/affine/empty/collection-detail.tsx @@ -1,4 +1,4 @@ -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { CollectionService } from '@affine/core/modules/collection'; import type { Collection } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/affine/empty/collections.tsx b/packages/frontend/core/src/components/affine/empty/collections.tsx index d54e030595..c566df2191 100644 --- a/packages/frontend/core/src/components/affine/empty/collections.tsx +++ b/packages/frontend/core/src/components/affine/empty/collections.tsx @@ -1,4 +1,4 @@ -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { CollectionService } from '@affine/core/modules/collection'; import { useI18n } from '@affine/i18n'; import { ViewLayersIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/components/affine/history-tips-modal/index.tsx b/packages/frontend/core/src/components/affine/history-tips-modal/index.tsx index 8b2d287cd9..1a00731d93 100644 --- a/packages/frontend/core/src/components/affine/history-tips-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/history-tips-modal/index.tsx @@ -1,6 +1,6 @@ import { OverlayModal } from '@affine/component'; -import { openHistoryTipsModalAtom } from '@affine/core/atoms'; -import { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud'; +import { openHistoryTipsModalAtom } from '@affine/core/components/atoms'; +import { useEnableCloud } from '@affine/core/components/hooks/affine/use-enable-cloud'; import { useI18n } from '@affine/i18n'; import { useService, WorkspaceService } from '@toeverything/infra'; import { useAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/issue-feedback-modal/index.tsx b/packages/frontend/core/src/components/affine/issue-feedback-modal/index.tsx index b8ba679606..f67e424a3a 100644 --- a/packages/frontend/core/src/components/affine/issue-feedback-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/issue-feedback-modal/index.tsx @@ -1,5 +1,5 @@ import { OverlayModal } from '@affine/component'; -import { openIssueFeedbackModalAtom } from '@affine/core/atoms'; +import { openIssueFeedbackModalAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { useAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/language-menu/index.tsx b/packages/frontend/core/src/components/affine/language-menu/index.tsx index cfd6d32e18..abcc0fb678 100644 --- a/packages/frontend/core/src/components/affine/language-menu/index.tsx +++ b/packages/frontend/core/src/components/affine/language-menu/index.tsx @@ -3,7 +3,7 @@ import { DoneIcon } from '@blocksuite/icons/rc'; import type { ReactElement } from 'react'; import { memo } from 'react'; -import { useLanguageHelper } from '../../../hooks/affine/use-language-helper'; +import { useLanguageHelper } from '../../../components/hooks/affine/use-language-helper'; import * as styles from './style.css'; // Fixme: keyboard focus should be supported by Menu component diff --git a/packages/frontend/core/src/components/affine/page-history-modal/data.ts b/packages/frontend/core/src/components/affine/page-history-modal/data.ts index e50d7e06de..f1a74f001e 100644 --- a/packages/frontend/core/src/components/affine/page-history-modal/data.ts +++ b/packages/frontend/core/src/components/affine/page-history-modal/data.ts @@ -1,5 +1,5 @@ -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; -import { useDocCollectionPage } from '@affine/core/hooks/use-block-suite-workspace-page'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; +import { useDocCollectionPage } from '@affine/core/components/hooks/use-block-suite-workspace-page'; import { DebugLogger } from '@affine/debug'; import type { ListHistoryQuery } from '@affine/graphql'; import { listHistoryQuery, recoverDocMutation } from '@affine/graphql'; @@ -20,8 +20,8 @@ import { import { useMutateQueryResource, useMutation, -} from '../../../hooks/use-mutation'; -import { useQueryInfinite } from '../../../hooks/use-query'; +} from '../../../components/hooks/use-mutation'; +import { useQueryInfinite } from '../../../components/hooks/use-query'; import { CloudBlobStorage } from '../../../modules/workspace-engine/impls/engine/blob-cloud'; const logger = new DebugLogger('page-history'); diff --git a/packages/frontend/core/src/components/affine/page-history-modal/history-modal.tsx b/packages/frontend/core/src/components/affine/page-history-modal/history-modal.tsx index 6aa9cf04df..b76a7aa7b3 100644 --- a/packages/frontend/core/src/components/affine/page-history-modal/history-modal.tsx +++ b/packages/frontend/core/src/components/affine/page-history-modal/history-modal.tsx @@ -2,13 +2,13 @@ import { Loading, Scrollable } from '@affine/component'; import { EditorLoading } from '@affine/component/page-detail-skeleton'; import { Button, IconButton } from '@affine/component/ui/button'; import { Modal, useConfirmModal } from '@affine/component/ui/modal'; -import { openSettingModalAtom } from '@affine/core/atoms'; -import { useDocCollectionPageTitle } from '@affine/core/hooks/use-block-suite-workspace-page-title'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; +import { useDocCollectionPageTitle } from '@affine/core/components/hooks/use-block-suite-workspace-page-title'; import { EditorService } from '@affine/core/modules/editor'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; import { WorkspaceQuotaService } from '@affine/core/modules/quota'; import { i18nTime, Trans, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { CloseIcon, ToggleCollapseIcon } from '@blocksuite/icons/rc'; import type { Doc as BlockSuiteDoc, DocCollection } from '@blocksuite/store'; @@ -28,7 +28,7 @@ import { } from 'react'; import { encodeStateAsUpdate } from 'yjs'; -import { pageHistoryModalAtom } from '../../../atoms/page-history'; +import { pageHistoryModalAtom } from '../../atoms/page-history'; import { BlockSuiteEditor } from '../../blocksuite/block-suite-editor'; import { PureEditorModeSwitch } from '../../blocksuite/block-suite-mode-switch'; import { AffineErrorBoundary } from '../affine-error-boundary'; diff --git a/packages/frontend/core/src/components/affine/page-properties/table.tsx b/packages/frontend/core/src/components/affine/page-properties/table.tsx index 9dbb51615b..be449eaee7 100644 --- a/packages/frontend/core/src/components/affine/page-properties/table.tsx +++ b/packages/frontend/core/src/components/affine/page-properties/table.tsx @@ -1,7 +1,6 @@ import type { MenuProps } from '@affine/component'; import { Button, IconButton, Menu, MenuItem, Tooltip } from '@affine/component'; -import { useCurrentWorkspacePropertiesAdapter } from '@affine/core/hooks/use-affine-adapter'; -import { track } from '@affine/core/mixpanel'; +import { useCurrentWorkspacePropertiesAdapter } from '@affine/core/components/hooks/use-affine-adapter'; import { DocLinksService } from '@affine/core/modules/doc-link'; import { EditorSettingService } from '@affine/core/modules/editor-settting'; import type { @@ -10,6 +9,7 @@ import type { PagePropertyType, } from '@affine/core/modules/properties/services/schema'; import { i18nTime, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { assertExists } from '@blocksuite/global/utils'; import { ArrowDownSmallIcon, diff --git a/packages/frontend/core/src/components/affine/page-properties/tags-inline-editor.tsx b/packages/frontend/core/src/components/affine/page-properties/tags-inline-editor.tsx index c6b9f0f6eb..dbf5cdbc5f 100644 --- a/packages/frontend/core/src/components/affine/page-properties/tags-inline-editor.tsx +++ b/packages/frontend/core/src/components/affine/page-properties/tags-inline-editor.tsx @@ -1,6 +1,6 @@ import type { MenuProps } from '@affine/component'; import { IconButton, Input, Menu, Scrollable } from '@affine/component'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { WorkspaceLegacyProperties } from '@affine/core/modules/properties'; import type { Tag } from '@affine/core/modules/tag'; import { DeleteTagConfirmModal, TagService } from '@affine/core/modules/tag'; diff --git a/packages/frontend/core/src/components/affine/quota-reached-modal/cloud-quota-modal.tsx b/packages/frontend/core/src/components/affine/quota-reached-modal/cloud-quota-modal.tsx index 8c874a22bf..cee4528963 100644 --- a/packages/frontend/core/src/components/affine/quota-reached-modal/cloud-quota-modal.tsx +++ b/packages/frontend/core/src/components/affine/quota-reached-modal/cloud-quota-modal.tsx @@ -1,10 +1,13 @@ import { ConfirmModal } from '@affine/component/ui/modal'; -import { openQuotaModalAtom, openSettingModalAtom } from '@affine/core/atoms'; -import { track } from '@affine/core/mixpanel'; +import { + openQuotaModalAtom, + openSettingModalAtom, +} from '@affine/core/components/atoms'; import { UserQuotaService } from '@affine/core/modules/cloud'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; import { WorkspaceQuotaService } from '@affine/core/modules/quota'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { useLiveData, useService, WorkspaceService } from '@toeverything/infra'; import bytes from 'bytes'; import { useAtom, useSetAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/quota-reached-modal/local-quota-modal.tsx b/packages/frontend/core/src/components/affine/quota-reached-modal/local-quota-modal.tsx index 4ef94c9180..7f547cdc5b 100644 --- a/packages/frontend/core/src/components/affine/quota-reached-modal/local-quota-modal.tsx +++ b/packages/frontend/core/src/components/affine/quota-reached-modal/local-quota-modal.tsx @@ -1,5 +1,5 @@ import { ConfirmModal } from '@affine/component/ui/modal'; -import { openQuotaModalAtom } from '@affine/core/atoms'; +import { openQuotaModalAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { useService, WorkspaceService } from '@toeverything/infra'; import { useAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/reference-link/index.tsx b/packages/frontend/core/src/components/affine/reference-link/index.tsx index adedc695bb..37714fd05b 100644 --- a/packages/frontend/core/src/components/affine/reference-link/index.tsx +++ b/packages/frontend/core/src/components/affine/reference-link/index.tsx @@ -1,12 +1,12 @@ -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; -import { useJournalHelper } from '@affine/core/hooks/use-journal'; -import { track } from '@affine/core/mixpanel'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; +import { useJournalHelper } from '@affine/core/components/hooks/use-journal'; import { PeekViewService, useInsidePeekView, } from '@affine/core/modules/peek-view'; import { WorkbenchLink } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { BlockLinkIcon, diff --git a/packages/frontend/core/src/components/affine/setting-modal/account-setting/ai-usage-panel.tsx b/packages/frontend/core/src/components/affine/setting-modal/account-setting/ai-usage-panel.tsx index ec8f4b1109..ac6d679cb8 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/account-setting/ai-usage-panel.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/account-setting/ai-usage-panel.tsx @@ -1,7 +1,6 @@ import { Button, ErrorMessage, Skeleton } from '@affine/component'; import { SettingRow } from '@affine/component/setting-components'; -import { openSettingModalAtom } from '@affine/core/atoms'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { ServerConfigService, SubscriptionService, @@ -9,6 +8,7 @@ import { } from '@affine/core/modules/cloud'; import { SubscriptionPlan } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import { cssVar } from '@toeverything/theme'; import { useSetAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/account-setting/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/account-setting/index.tsx index fef6ed426f..31d59be2eb 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/account-setting/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/account-setting/index.tsx @@ -5,11 +5,11 @@ import { } from '@affine/component/setting-components'; import { Avatar } from '@affine/component/ui/avatar'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { SubscriptionPlan } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ArrowRightSmallIcon, CameraIcon } from '@blocksuite/icons/rc'; import { useEnsureLiveData, @@ -21,12 +21,12 @@ import { useSetAtom } from 'jotai'; import type { FC } from 'react'; import { useCallback, useEffect, useState } from 'react'; +import { AuthService, ServerConfigService } from '../../../../modules/cloud'; import { authAtom, openSettingModalAtom, openSignOutModalAtom, -} from '../../../../atoms'; -import { AuthService, ServerConfigService } from '../../../../modules/cloud'; +} from '../../../atoms'; import { Upload } from '../../../pure/file-upload'; import { AIUsagePanel } from './ai-usage-panel'; import { StorageProgress } from './storage-progress'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/index.tsx index 2a9531dc4a..8382b76cfc 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/index.tsx @@ -4,13 +4,13 @@ import { SettingRow, SettingWrapper, } from '@affine/component/setting-components'; -import { useAppUpdater } from '@affine/core/hooks/use-app-updater'; -import { mixpanel } from '@affine/core/mixpanel'; +import { useAppUpdater } from '@affine/core/components/hooks/use-app-updater'; import { useI18n } from '@affine/i18n'; +import { mixpanel } from '@affine/track'; import { ArrowRightSmallIcon, OpenInNewIcon } from '@blocksuite/icons/rc'; import { useCallback } from 'react'; -import { useAppSettingHelper } from '../../../../../hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '../../../../../components/hooks/affine/use-app-setting-helper'; import { appIconMap, appNames } from '../../../../../pages/open-app'; import { popupWindow } from '../../../../../utils'; import { relatedLinks } from './config'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/update-check-section.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/update-check-section.tsx index 7402f161ec..1331781bd2 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/update-check-section.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/about/update-check-section.tsx @@ -1,8 +1,8 @@ import { Loading } from '@affine/component'; import { SettingRow } from '@affine/component/setting-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useAppUpdater } from '@affine/core/hooks/use-app-updater'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useAppUpdater } from '@affine/core/components/hooks/use-app-updater'; import { useI18n } from '@affine/i18n'; import clsx from 'clsx'; import { useCallback, useMemo, useState } from 'react'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/date-format-setting.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/date-format-setting.tsx index 770e6cb486..061a1f3c08 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/date-format-setting.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/date-format-setting.tsx @@ -4,7 +4,7 @@ import { dateFormatOptions } from '@toeverything/infra'; import dayjs from 'dayjs'; import { useCallback } from 'react'; -import { useAppSettingHelper } from '../../../../../hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '../../../../../components/hooks/affine/use-app-setting-helper'; interface DateFormatMenuContentProps { currentOption: DateFormats; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/index.tsx index 3726956145..9799d1c583 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/appearance/index.tsx @@ -11,7 +11,7 @@ import { windowFrameStyleOptions } from '@toeverything/infra'; import { useTheme } from 'next-themes'; import { useCallback, useMemo } from 'react'; -import { useAppSettingHelper } from '../../../../../hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '../../../../../components/hooks/affine/use-app-setting-helper'; import { LanguageMenu } from '../../../language-menu'; import { Page } from '../editor/page'; import { DateFormatSetting } from './date-format-setting'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx index 167d516310..ed253c8de0 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/billing/index.tsx @@ -7,9 +7,8 @@ import { } from '@affine/component/setting-components'; import { Button, IconButton } from '@affine/component/ui/button'; import { Loading } from '@affine/component/ui/loading'; -import { getUpgradeQuestionnaireLink } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { getUpgradeQuestionnaireLink } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService, InvoicesService, @@ -25,18 +24,19 @@ import { UserFriendlyError, } from '@affine/graphql'; import { i18nTime, Trans, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ArrowRightSmallIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; import { cssVar } from '@toeverything/theme'; import { useSetAtom } from 'jotai'; import { useCallback, useEffect, useState } from 'react'; +import { useMutation } from '../../../../../components/hooks/use-mutation'; +import { popupWindow } from '../../../../../utils'; import { openSettingModalAtom, type PlansScrollAnchor, -} from '../../../../../atoms'; -import { useMutation } from '../../../../../hooks/use-mutation'; -import { popupWindow } from '../../../../../utils'; +} from '../../../../atoms'; import { CancelAction, ResumeAction } from '../plans/actions'; import { AICancel, AIResume, AISubscribe } from '../plans/ai/actions'; import { BelieverCard } from '../plans/lifetime/believer-card'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/experimental-features/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/experimental-features/index.tsx index 5a1859c436..e88e0f2978 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/experimental-features/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/experimental-features/index.tsx @@ -1,6 +1,6 @@ import { Button, Checkbox, Loading, Switch, Tooltip } from '@affine/component'; import { SettingHeader } from '@affine/component/setting-components'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useI18n } from '@affine/i18n'; import { ArrowRightSmallIcon, diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/actions.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/actions.tsx index 20e25f51ce..66fbe08c6a 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/actions.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/actions.tsx @@ -1,7 +1,7 @@ -import { getDowngradeQuestionnaireLink } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { getDowngradeQuestionnaireLink } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { SubscriptionPlan } from '@affine/graphql'; +import { track } from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import { nanoid } from 'nanoid'; import type { PropsWithChildren } from 'react'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/cancel.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/cancel.tsx index 9e811c6866..7e18b648c6 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/cancel.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/cancel.tsx @@ -1,11 +1,11 @@ import { Button, type ButtonProps, useConfirmModal } from '@affine/component'; import { useDowngradeNotify } from '@affine/core/components/affine/subscription-landing/notify'; -import { getDowngradeQuestionnaireLink } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { getDowngradeQuestionnaireLink } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService, SubscriptionService } from '@affine/core/modules/cloud'; import { SubscriptionPlan } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { useService } from '@toeverything/infra'; import { nanoid } from 'nanoid'; import { useState } from 'react'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/login.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/login.tsx index 98585a7b08..68bad88989 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/login.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/login.tsx @@ -1,5 +1,5 @@ import { Button, type ButtonProps } from '@affine/component'; -import { authAtom } from '@affine/core/atoms'; +import { authAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/resume.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/resume.tsx index 7b0d9ef995..fdcd86f976 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/resume.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/resume.tsx @@ -4,11 +4,11 @@ import { notify, useConfirmModal, } from '@affine/component'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { SubscriptionService } from '@affine/core/modules/cloud'; import { SubscriptionPlan } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { SingleSelectSelectSolidIcon } from '@blocksuite/icons/rc'; import { useService } from '@toeverything/infra'; import { cssVar } from '@toeverything/theme'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/subscribe.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/subscribe.tsx index 271e38bdb2..7b837715d5 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/subscribe.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/ai/actions/subscribe.tsx @@ -1,11 +1,11 @@ import { Button, type ButtonProps, Skeleton } from '@affine/component'; -import { generateSubscriptionCallbackLink } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { generateSubscriptionCallbackLink } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService, SubscriptionService } from '@affine/core/modules/cloud'; import { popupWindow } from '@affine/core/utils'; import { SubscriptionPlan, SubscriptionRecurring } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import { nanoid } from 'nanoid'; import { useEffect, useState } from 'react'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/layout.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/layout.tsx index e247704250..9de011d541 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/layout.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/layout.tsx @@ -3,7 +3,7 @@ import { SettingHeader } from '@affine/component/setting-components'; import { openSettingModalAtom, type PlansScrollAnchor, -} from '@affine/core/atoms'; +} from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { ArrowRightBigIcon, ArrowUpSmallIcon } from '@blocksuite/icons/rc'; import * as Collapsible from '@radix-ui/react-collapsible'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx index 6f6ab261bd..dc76bca6e5 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx @@ -1,13 +1,13 @@ import { Button, type ButtonProps } from '@affine/component/ui/button'; import { Tooltip } from '@affine/component/ui/tooltip'; -import { generateSubscriptionCallbackLink } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { generateSubscriptionCallbackLink } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AuthService, SubscriptionService } from '@affine/core/modules/cloud'; import { popupWindow } from '@affine/core/utils'; import type { SubscriptionRecurring } from '@affine/graphql'; import { SubscriptionPlan, SubscriptionStatus } from '@affine/graphql'; import { Trans, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DoneIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; @@ -16,7 +16,7 @@ import { nanoid } from 'nanoid'; import type { PropsWithChildren } from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react'; -import { authAtom } from '../../../../../atoms/index'; +import { authAtom } from '../../../../atoms/index'; import { CancelAction, ResumeAction } from './actions'; import type { DynamicPrice, FixedPrice } from './cloud-plans'; import { ConfirmLoadingModal } from './modals'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/shortcuts/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/shortcuts/index.tsx index b276eb6cb9..7e6bc31857 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/shortcuts/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/shortcuts/index.tsx @@ -4,13 +4,13 @@ import { } from '@affine/component/setting-components'; import { useI18n } from '@affine/i18n'; -import type { ShortcutsInfo } from '../../../../../hooks/affine/use-shortcuts'; +import type { ShortcutsInfo } from '../../../../../components/hooks/affine/use-shortcuts'; import { useEdgelessShortcuts, useGeneralShortcuts, useMarkdownShortcuts, usePageShortcuts, -} from '../../../../../hooks/affine/use-shortcuts'; +} from '../../../../../components/hooks/affine/use-shortcuts'; import { shortcutKey, shortcutKeyContainer, shortcutRow } from './style.css'; const ShortcutsPanel = ({ diff --git a/packages/frontend/core/src/components/affine/setting-modal/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/index.tsx index 6609e9429e..cf3a4d10fd 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/index.tsx @@ -5,7 +5,7 @@ import { Modal } from '@affine/component/ui/modal'; import { openIssueFeedbackModalAtom, openStarAFFiNEModalAtom, -} from '@affine/core/atoms'; +} from '@affine/core/components/atoms'; import { AuthService } from '@affine/core/modules/cloud'; import { Trans } from '@affine/i18n'; import { ContactWithUsIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/setting-sidebar/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/setting-sidebar/index.tsx index 4105d97bae..c03dfd6c12 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/setting-sidebar/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/setting-sidebar/index.tsx @@ -5,12 +5,12 @@ import { import { Avatar } from '@affine/component/ui/avatar'; import { Tooltip } from '@affine/component/ui/tooltip'; import { WorkspaceAvatar } from '@affine/component/workspace-avatar'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; -import { track } from '@affine/core/mixpanel'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import { AuthService } from '@affine/core/modules/cloud'; import { UserFeatureService } from '@affine/core/modules/cloud/services/user-feature'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { Logo1Icon } from '@blocksuite/icons/rc'; import type { WorkspaceMetadata } from '@toeverything/infra'; import { @@ -30,7 +30,7 @@ import { useMemo, } from 'react'; -import { authAtom } from '../../../../atoms'; +import { authAtom } from '../../../atoms'; import { UserPlanButton } from '../../auth/user-plan-button'; import { useGeneralSettingList } from '../general-setting'; import type { ActiveTab, WorkspaceSubTab } from '../types'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/delete/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/delete/index.tsx index 7ff68f7f58..3a85b5da31 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/delete/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/delete/index.tsx @@ -1,7 +1,7 @@ import { Input } from '@affine/component'; import type { ConfirmModalProps } from '@affine/component/ui/modal'; import { ConfirmModal } from '@affine/component/ui/modal'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { Trans, useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/index.tsx index b6384c681b..359096e81c 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/delete-leave-workspace/index.tsx @@ -1,7 +1,7 @@ import { notify } from '@affine/component'; import { SettingRow } from '@affine/component/setting-components'; import { ConfirmModal } from '@affine/component/ui/modal'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; import { useI18n } from '@affine/i18n'; import { ArrowRightSmallIcon } from '@blocksuite/icons/rc'; @@ -15,12 +15,11 @@ import { import { useSetAtom } from 'jotai'; import { useCallback, useEffect, useState } from 'react'; -import { openSettingModalAtom } from '../../../../../../atoms'; import { RouteLogic, useNavigateHelper, -} from '../../../../../../hooks/use-navigate-helper'; -import { WorkspaceSubPath } from '../../../../../../shared'; +} from '../../../../../../components/hooks/use-navigate-helper'; +import { openSettingModalAtom } from '../../../../../atoms'; import { WorkspaceDeleteModal } from './delete'; export const DeleteLeaveWorkspace = () => { @@ -37,7 +36,7 @@ export const DeleteLeaveWorkspace = () => { }); const t = useI18n(); const workspace = workspaceService.workspace; - const { jumpToSubPath, jumpToIndex } = useNavigateHelper(); + const { jumpToPage, jumpToIndex } = useNavigateHelper(); // fixme: cloud regression const [showDelete, setShowDelete] = useState(false); const [showLeave, setShowLeave] = useState(false); @@ -72,11 +71,7 @@ export const DeleteLeaveWorkspace = () => { ); // TODO(@eyhn): if there is no workspace, jump to a new page(wait for design) if (backWorkspace) { - jumpToSubPath( - backWorkspace?.id || '', - WorkspaceSubPath.ALL, - RouteLogic.REPLACE - ); + jumpToPage(backWorkspace?.id || '', 'all', RouteLogic.REPLACE); } else { jumpToIndex(RouteLogic.REPLACE); } @@ -96,7 +91,7 @@ export const DeleteLeaveWorkspace = () => { isOwner, t, workspaceList, - jumpToSubPath, + jumpToPage, jumpToIndex, workspacesService, workspacePermissionService, diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/enable-cloud.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/enable-cloud.tsx index 268d1f6e58..feb6fd1cd0 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/enable-cloud.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/enable-cloud.tsx @@ -1,6 +1,6 @@ import { SettingRow } from '@affine/component/setting-components'; import { Button } from '@affine/component/ui/button'; -import { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud'; +import { useEnableCloud } from '@affine/core/components/hooks/affine/use-enable-cloud'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; @@ -13,7 +13,7 @@ import { import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; -import { openSettingModalAtom } from '../../../../../atoms'; +import { openSettingModalAtom } from '../../../../atoms'; export interface PublishPanelProps { workspace: Workspace | null; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/export.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/export.tsx index c322752ea9..fe80da1ce2 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/export.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/export.tsx @@ -1,8 +1,8 @@ import { notify } from '@affine/component'; import { SettingRow } from '@affine/component/setting-components'; import { Button } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useSystemOnline } from '@affine/core/hooks/use-system-online'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useSystemOnline } from '@affine/core/components/hooks/use-system-online'; import { apis } from '@affine/electron-api'; import { useI18n } from '@affine/i18n'; import type { Workspace, WorkspaceMetadata } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/index.tsx index 1a66a53c1c..880ddce3b1 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/index.tsx @@ -3,8 +3,8 @@ import { SettingRow, SettingWrapper, } from '@affine/component/setting-components'; -import { useWorkspace } from '@affine/core/hooks/use-workspace'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; +import { useWorkspace } from '@affine/core/components/hooks/use-workspace'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; import { useI18n } from '@affine/i18n'; import { ArrowRightSmallIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/members.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/members.tsx index 014cc03b5d..f5f0ac675b 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/members.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/members.tsx @@ -11,11 +11,10 @@ import { Button, IconButton } from '@affine/component/ui/button'; import { Loading } from '@affine/component/ui/loading'; import { Menu, MenuItem } from '@affine/component/ui/menu'; import { Tooltip } from '@affine/component/ui/tooltip'; -import { openSettingModalAtom } from '@affine/core/atoms'; import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; -import { useInviteMember } from '@affine/core/hooks/affine/use-invite-member'; -import { useRevokeMemberPermission } from '@affine/core/hooks/affine/use-revoke-member-permission'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; +import { useInviteMember } from '@affine/core/components/hooks/affine/use-invite-member'; +import { useRevokeMemberPermission } from '@affine/core/components/hooks/affine/use-revoke-member-permission'; import { type Member, WorkspaceMembersService, @@ -25,6 +24,7 @@ import { WorkspaceQuotaService } from '@affine/core/modules/quota'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { Permission, UserFriendlyError } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { MoreVerticalIcon } from '@blocksuite/icons/rc'; import { useEnsureLiveData, diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/profile.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/profile.tsx index 8f3561bbe6..85470a315c 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/profile.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/profile.tsx @@ -1,8 +1,8 @@ import { FlexWrapper, Input, notify, Wrapper } from '@affine/component'; import { Button } from '@affine/component/ui/button'; import { WorkspaceAvatar } from '@affine/component/workspace-avatar'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { Upload } from '@affine/core/components/pure/file-upload'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; import { validateAndReduceImage } from '@affine/core/utils/reduce-image'; import { UNTITLED_WORKSPACE_NAME } from '@affine/env/constant'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/sharing.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/sharing.tsx index 1e41cb9752..7cd74250e1 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/sharing.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/new-workspace-setting-detail/sharing.tsx @@ -3,7 +3,7 @@ import { SettingRow, SettingWrapper, } from '@affine/component/setting-components'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { WorkspaceShareSettingService } from '@affine/core/modules/share-setting'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/properties/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/properties/index.tsx index 5017d7d50a..96898ddd49 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/properties/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/properties/index.tsx @@ -1,6 +1,6 @@ import { Button, IconButton, Menu } from '@affine/component'; import { SettingHeader } from '@affine/component/setting-components'; -import { useWorkspaceInfo } from '@affine/core/hooks/use-workspace-info'; +import { useWorkspaceInfo } from '@affine/core/components/hooks/use-workspace-info'; import type { PageInfoCustomPropertyMeta } from '@affine/core/modules/properties/services/schema'; import { Trans, useI18n } from '@affine/i18n'; import { @@ -20,8 +20,8 @@ import { useState, } from 'react'; -import { useCurrentWorkspacePropertiesAdapter } from '../../../../../hooks/use-affine-adapter'; -import { useWorkspace } from '../../../../../hooks/use-workspace'; +import { useCurrentWorkspacePropertiesAdapter } from '../../../../../components/hooks/use-affine-adapter'; +import { useWorkspace } from '../../../../../components/hooks/use-workspace'; import type { PagePropertyIcon } from '../../../page-properties'; import { nameToIcon, diff --git a/packages/frontend/core/src/components/affine/share-page-modal/index.tsx b/packages/frontend/core/src/components/affine/share-page-modal/index.tsx index 5e0bca85fb..9ef355cc18 100644 --- a/packages/frontend/core/src/components/affine/share-page-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/share-page-modal/index.tsx @@ -1,5 +1,5 @@ -import { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud'; -import { track } from '@affine/core/mixpanel'; +import { useEnableCloud } from '@affine/core/components/hooks/affine/use-enable-cloud'; +import { track } from '@affine/track'; import type { Doc } from '@blocksuite/store'; import { type Workspace } from '@toeverything/infra'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-export.tsx b/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-export.tsx index e2839950ec..519eeb0eca 100644 --- a/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-export.tsx +++ b/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-export.tsx @@ -1,8 +1,8 @@ +import { useExportPage } from '@affine/core/components/hooks/affine/use-export-page'; import { ExportMenuItems, PrintMenuItems, } from '@affine/core/components/page-list'; -import { useExportPage } from '@affine/core/hooks/affine/use-export-page'; import { EditorService } from '@affine/core/modules/editor'; import { useI18n } from '@affine/i18n'; import { useLiveData, useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-page.tsx b/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-page.tsx index 09540cadaa..811231cd7d 100644 --- a/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-page.tsx +++ b/packages/frontend/core/src/components/affine/share-page-modal/share-menu/share-page.tsx @@ -1,13 +1,12 @@ import { notify, Skeleton } from '@affine/component'; import { Button } from '@affine/component/ui/button'; import { Menu, MenuItem, MenuTrigger } from '@affine/component/ui/menu'; -import { openSettingModalAtom } from '@affine/core/atoms'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { getSelectedNodes, useSharingUrl, -} from '@affine/core/hooks/affine/use-share-url'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +} from '@affine/core/components/hooks/affine/use-share-url'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { ServerConfigService } from '@affine/core/modules/cloud'; import { EditorService } from '@affine/core/modules/editor'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; @@ -15,6 +14,7 @@ import { ShareInfoService } from '@affine/core/modules/share-doc'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { PublicPageMode } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { BlockIcon, diff --git a/packages/frontend/core/src/components/affine/star-affine-modal/index.tsx b/packages/frontend/core/src/components/affine/star-affine-modal/index.tsx index b78b8d42fc..46fe87326c 100644 --- a/packages/frontend/core/src/components/affine/star-affine-modal/index.tsx +++ b/packages/frontend/core/src/components/affine/star-affine-modal/index.tsx @@ -1,5 +1,5 @@ import { OverlayModal } from '@affine/component'; -import { openStarAFFiNEModalAtom } from '@affine/core/atoms'; +import { openStarAFFiNEModalAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { useAtom } from 'jotai'; diff --git a/packages/frontend/core/src/components/affine/subscription-landing/index.tsx b/packages/frontend/core/src/components/affine/subscription-landing/index.tsx index a091e2390c..b90fe9bcaf 100644 --- a/packages/frontend/core/src/components/affine/subscription-landing/index.tsx +++ b/packages/frontend/core/src/components/affine/subscription-landing/index.tsx @@ -1,7 +1,7 @@ import { AuthPageContainer } from '@affine/component/auth-components'; import { Button } from '@affine/component/ui/button'; -import { useSubscriptionNotifyWriter } from '@affine/core/hooks/affine/use-subscription-notify'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; +import { useSubscriptionNotifyWriter } from '@affine/core/components/hooks/affine/use-subscription-notify'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { Trans, useI18n } from '@affine/i18n'; import { type ReactNode, useCallback } from 'react'; import { useSearchParams } from 'react-router-dom'; diff --git a/packages/frontend/core/src/components/app-sidebar/app-download-button/index.tsx b/packages/frontend/core/src/components/app-sidebar/app-download-button/index.tsx index dd71c0ac7d..0bbfe32345 100644 --- a/packages/frontend/core/src/components/app-sidebar/app-download-button/index.tsx +++ b/packages/frontend/core/src/components/app-sidebar/app-download-button/index.tsx @@ -1,5 +1,5 @@ -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; -import { track } from '@affine/core/mixpanel'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; +import { track } from '@affine/track'; import { CloseIcon, DownloadIcon } from '@blocksuite/icons/rc'; import clsx from 'clsx'; import { useCallback, useState } from 'react'; diff --git a/packages/frontend/core/src/components/app-sidebar/app-updater-button/index.tsx b/packages/frontend/core/src/components/app-sidebar/app-updater-button/index.tsx index a7907df248..a307ca6e8e 100644 --- a/packages/frontend/core/src/components/app-sidebar/app-updater-button/index.tsx +++ b/packages/frontend/core/src/components/app-sidebar/app-updater-button/index.tsx @@ -1,5 +1,5 @@ import { Tooltip } from '@affine/component'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { popupWindow } from '@affine/core/utils'; import { Unreachable } from '@affine/env/constant'; import { useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/app-sidebar/index.tsx b/packages/frontend/core/src/components/app-sidebar/index.tsx index 43db7ca54e..7e968312f3 100644 --- a/packages/frontend/core/src/components/app-sidebar/index.tsx +++ b/packages/frontend/core/src/components/app-sidebar/index.tsx @@ -1,7 +1,7 @@ import { Skeleton } from '@affine/component'; import { ResizePanel } from '@affine/component/resize-panel'; -import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper'; -import { NavigateContext } from '@affine/core/hooks/use-navigate-helper'; +import { useAppSettingHelper } from '@affine/core/components/hooks/affine/use-app-setting-helper'; +import { NavigateContext } from '@affine/core/components/hooks/use-navigate-helper'; import { useServiceOptional, WorkspaceService } from '@toeverything/infra'; import { useAtom, useAtomValue } from 'jotai'; import { debounce } from 'lodash-es'; diff --git a/packages/frontend/core/src/atoms/index.ts b/packages/frontend/core/src/components/atoms/index.ts similarity index 92% rename from packages/frontend/core/src/atoms/index.ts rename to packages/frontend/core/src/components/atoms/index.ts index 639ce8cefb..c519e959ff 100644 --- a/packages/frontend/core/src/atoms/index.ts +++ b/packages/frontend/core/src/components/atoms/index.ts @@ -1,7 +1,7 @@ import { atom } from 'jotai'; -import type { SettingProps } from '../components/affine/setting-modal'; -import type { ActiveTab } from '../components/affine/setting-modal/types'; +import type { SettingProps } from '../affine/setting-modal'; +import type { ActiveTab } from '../affine/setting-modal/types'; // modal atoms export const openWorkspacesModalAtom = atom(false); /** diff --git a/packages/frontend/core/src/atoms/page-history.ts b/packages/frontend/core/src/components/atoms/page-history.ts similarity index 100% rename from packages/frontend/core/src/atoms/page-history.ts rename to packages/frontend/core/src/components/atoms/page-history.ts diff --git a/packages/frontend/core/src/atoms/trash-modal.ts b/packages/frontend/core/src/components/atoms/trash-modal.ts similarity index 100% rename from packages/frontend/core/src/atoms/trash-modal.ts rename to packages/frontend/core/src/components/atoms/trash-modal.ts diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx index 818a341304..5719ef3965 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx @@ -1,14 +1,14 @@ import { notify } from '@affine/component'; -import { authAtom, openSettingModalAtom } from '@affine/core/atoms'; import { AIProvider } from '@affine/core/blocksuite/presets/ai'; import { toggleGeneralAIOnboarding } from '@affine/core/components/affine/ai-onboarding/apis'; -import { track } from '@affine/core/mixpanel'; +import { authAtom, openSettingModalAtom } from '@affine/core/components/atoms'; import { getBaseUrl, type getCopilotHistoriesQuery, type RequestOptions, } from '@affine/graphql'; import { Trans } from '@affine/i18n'; +import { track } from '@affine/track'; import { UnauthorizedError } from '@blocksuite/blocks'; import { assertExists } from '@blocksuite/global/utils'; import { getCurrentStore } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts index ec56834b1b..89ff529625 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts @@ -1,5 +1,5 @@ import { AIProvider } from '@affine/core/blocksuite/presets/ai'; -import { mixpanel, track } from '@affine/core/mixpanel'; +import { mixpanel, track } from '@affine/track'; import type { EditorHost } from '@blocksuite/block-std'; import type { BlockModel } from '@blocksuite/store'; import { lowerCase, omit } from 'lodash-es'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/journal-doc-title.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/journal-doc-title.tsx index 001e2358ca..76e29a285d 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/journal-doc-title.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/journal-doc-title.tsx @@ -1,4 +1,4 @@ -import { useJournalInfoHelper } from '@affine/core/hooks/use-journal'; +import { useJournalInfoHelper } from '@affine/core/components/hooks/use-journal'; import { useI18n } from '@affine/i18n'; import type { Doc } from '@blocksuite/store'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx index 49f3838066..30c10ab0ea 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx @@ -3,7 +3,7 @@ import { useConfirmModal, useLitPortalFactory, } from '@affine/component'; -import { useJournalInfoHelper } from '@affine/core/hooks/use-journal'; +import { useJournalInfoHelper } from '@affine/core/components/hooks/use-journal'; import { EditorService } from '@affine/core/modules/editor'; import { EditorSettingService } from '@affine/core/modules/editor-settting'; import { PeekViewService } from '@affine/core/modules/peek-view'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/database-block.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/database-block.ts index 7470fde07e..7cdb0a6c68 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/database-block.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/database-block.ts @@ -2,11 +2,11 @@ import { notify } from '@affine/component'; import { generateUrl, type UseSharingUrl, -} from '@affine/core/hooks/affine/use-share-url'; -import { track } from '@affine/core/mixpanel'; +} from '@affine/core/components/hooks/affine/use-share-url'; import { getAffineCloudBaseUrl } from '@affine/core/modules/cloud/services/fetch'; import { EditorService } from '@affine/core/modules/editor'; import { I18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DatabaseBlockModel, MenuOptions } from '@blocksuite/blocks'; import { LinkIcon } from '@blocksuite/icons/lit'; import type { FrameworkProvider } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts index af4567c2ea..f8257c0f37 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts @@ -2,8 +2,8 @@ import { AIEdgelessRootBlockSpec, AIPageRootBlockSpec, } from '@affine/core/blocksuite/presets/ai'; -import { mixpanel } from '@affine/core/mixpanel'; import { EditorSettingService } from '@affine/core/modules/editor-settting'; +import { mixpanel } from '@affine/track'; import { ConfigExtension, type ExtensionType } from '@blocksuite/block-std'; import { EdgelessRootBlockSpec, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx index 9a19927a6e..1b6691df53 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx @@ -7,7 +7,6 @@ import { toReactNode, type useConfirmModal, } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import type { EditorService } from '@affine/core/modules/editor'; import { resolveLinkToDoc } from '@affine/core/modules/navigation'; import type { PeekViewService } from '@affine/core/modules/peek-view'; @@ -21,6 +20,7 @@ import { } from '@affine/core/modules/quicksearch'; import { ExternalLinksQuickSearchSession } from '@affine/core/modules/quicksearch/impls/external-links'; import { DebugLogger } from '@affine/debug'; +import { track } from '@affine/track'; import { type BlockService, BlockViewIdentifier, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts index b439151cd9..5c0ff70570 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/linked.ts @@ -1,6 +1,6 @@ -import { track } from '@affine/core/mixpanel'; import { WorkspacePropertiesAdapter } from '@affine/core/modules/properties'; import { I18n, i18nTime } from '@affine/i18n'; +import { track } from '@affine/track'; import type { EditorHost } from '@blocksuite/block-std'; import type { AffineInlineEditor } from '@blocksuite/blocks'; import { LinkedWidgetUtils } from '@blocksuite/blocks'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/toolbar.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/toolbar.ts index 3a3a8aa3c2..b8285b6e66 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/toolbar.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/toolbar.ts @@ -2,11 +2,11 @@ import { notify } from '@affine/component'; import { generateUrl, type UseSharingUrl, -} from '@affine/core/hooks/affine/use-share-url'; -import { track } from '@affine/core/mixpanel'; +} from '@affine/core/components/hooks/affine/use-share-url'; import { getAffineCloudBaseUrl } from '@affine/core/modules/cloud/services/fetch'; import { EditorService } from '@affine/core/modules/editor'; import { I18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { MenuItemGroup } from '@blocksuite/affine-components/toolbar'; import type { GfxBlockElementModel, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/favorite/index.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/favorite/index.tsx index 78b098dbf4..d60e686bf6 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/favorite/index.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/favorite/index.tsx @@ -1,8 +1,8 @@ import { FavoriteTag } from '@affine/core/components/page-list'; -import { track } from '@affine/core/mixpanel'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { toast } from '@affine/core/utils'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/info/index.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/info/index.tsx index 8ecb2d3e79..1474241c51 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/info/index.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/info/index.tsx @@ -1,7 +1,7 @@ import { IconButton } from '@affine/component'; -import { openInfoModalAtom } from '@affine/core/atoms'; -import { track } from '@affine/core/mixpanel'; +import { openInfoModalAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { InformationIcon } from '@blocksuite/icons/rc'; import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/date-picker.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/date-picker.tsx index 22c23a58e5..db65f06a22 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/date-picker.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/date-picker.tsx @@ -3,7 +3,7 @@ import { WeekDatePicker } from '@affine/component'; import { useJournalInfoHelper, useJournalRouteHelper, -} from '@affine/core/hooks/use-journal'; +} from '@affine/core/components/hooks/use-journal'; import type { Doc, DocCollection } from '@blocksuite/store'; import dayjs from 'dayjs'; import { useEffect, useRef, useState } from 'react'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/today-button.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/today-button.tsx index 628988fddf..dce5c4b9dc 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/today-button.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/journal/today-button.tsx @@ -1,5 +1,5 @@ import { Button } from '@affine/component'; -import { useJournalRouteHelper } from '@affine/core/hooks/use-journal'; +import { useJournalRouteHelper } from '@affine/core/components/hooks/use-journal'; import { useI18n } from '@affine/i18n'; import type { DocCollection } from '@blocksuite/store'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/menu/index.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/menu/index.tsx index 18d70f2b48..d08fa68b36 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/menu/index.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/menu/index.tsx @@ -5,27 +5,27 @@ import { MenuSeparator, MenuSub, } from '@affine/component/ui/menu'; +import { PageHistoryModal } from '@affine/core/components/affine/page-history-modal'; +import { ShareMenuContent } from '@affine/core/components/affine/share-page-modal/share-menu'; import { openHistoryTipsModalAtom, openInfoModalAtom, -} from '@affine/core/atoms'; -import { PageHistoryModal } from '@affine/core/components/affine/page-history-modal'; -import { ShareMenuContent } from '@affine/core/components/affine/share-page-modal/share-menu'; +} from '@affine/core/components/atoms'; +import { useBlockSuiteMetaHelper } from '@affine/core/components/hooks/affine/use-block-suite-meta-helper'; +import { useEnableCloud } from '@affine/core/components/hooks/affine/use-enable-cloud'; +import { useExportPage } from '@affine/core/components/hooks/affine/use-export-page'; +import { useTrashModalHelper } from '@affine/core/components/hooks/affine/use-trash-modal-helper'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { Export, MoveToTrash } from '@affine/core/components/page-list'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { useBlockSuiteMetaHelper } from '@affine/core/hooks/affine/use-block-suite-meta-helper'; -import { useEnableCloud } from '@affine/core/hooks/affine/use-enable-cloud'; -import { useExportPage } from '@affine/core/hooks/affine/use-export-page'; -import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; -import { track } from '@affine/core/mixpanel'; import { EditorService } from '@affine/core/modules/editor'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { ViewService } from '@affine/core/modules/workbench/services/view'; import { useDetailPageHeaderResponsive } from '@affine/core/pages/workspace/detail-page/use-header-responsive'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DuplicateIcon, EdgelessIcon, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-header/title/index.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-header/title/index.tsx index 45d597fdd9..b9921bc514 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-header/title/index.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-header/title/index.tsx @@ -1,7 +1,7 @@ import type { InlineEditProps } from '@affine/component'; import { InlineEdit } from '@affine/component'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { track } from '@affine/track'; import { DocsService, useLiveData, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-mode-switch/index.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-mode-switch/index.tsx index a350245201..5d6f054b92 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-mode-switch/index.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-mode-switch/index.tsx @@ -1,8 +1,8 @@ import { RadioGroup, type RadioItem, toast, Tooltip } from '@affine/component'; import { registerAffineCommand } from '@affine/core/commands'; -import { track } from '@affine/core/mixpanel'; import { EditorService } from '@affine/core/modules/editor'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { EdgelessIcon, PageIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/cloud/share-header-right-item/import-template.tsx b/packages/frontend/core/src/components/cloud/share-header-right-item/import-template.tsx index 7609e80ed6..06ea0a9849 100644 --- a/packages/frontend/core/src/components/cloud/share-header-right-item/import-template.tsx +++ b/packages/frontend/core/src/components/cloud/share-header-right-item/import-template.tsx @@ -1,5 +1,5 @@ import { Button } from '@affine/component'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { useI18n } from '@affine/i18n'; export const ImportTemplateButton = ({ diff --git a/packages/frontend/core/src/components/cloud/share-header-right-item/sign-in.tsx b/packages/frontend/core/src/components/cloud/share-header-right-item/sign-in.tsx index 0bbeb32ebe..7cac52f53d 100644 --- a/packages/frontend/core/src/components/cloud/share-header-right-item/sign-in.tsx +++ b/packages/frontend/core/src/components/cloud/share-header-right-item/sign-in.tsx @@ -1,5 +1,5 @@ import { Button } from '@affine/component/ui/button'; -import { authAtom } from '@affine/core/atoms'; +import { authAtom } from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; import { useSetAtom } from 'jotai'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/components/cloud/share-header-right-item/user-avatar.tsx b/packages/frontend/core/src/components/cloud/share-header-right-item/user-avatar.tsx index 7e2b5caf2f..f293f1ca9e 100644 --- a/packages/frontend/core/src/components/cloud/share-header-right-item/user-avatar.tsx +++ b/packages/frontend/core/src/components/cloud/share-header-right-item/user-avatar.tsx @@ -1,6 +1,6 @@ import { Avatar } from '@affine/component/ui/avatar'; import { Menu, MenuItem, MenuSeparator } from '@affine/component/ui/menu'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useI18n } from '@affine/i18n'; import { SignOutIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/hooks/__tests__/use-system-online.spec.ts b/packages/frontend/core/src/components/hooks/__tests__/use-system-online.spec.ts similarity index 100% rename from packages/frontend/core/src/hooks/__tests__/use-system-online.spec.ts rename to packages/frontend/core/src/components/hooks/__tests__/use-system-online.spec.ts diff --git a/packages/frontend/core/src/hooks/affine-async-hooks.ts b/packages/frontend/core/src/components/hooks/affine-async-hooks.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine-async-hooks.ts rename to packages/frontend/core/src/components/hooks/affine-async-hooks.ts diff --git a/packages/frontend/core/src/hooks/affine/README.md b/packages/frontend/core/src/components/hooks/affine/README.md similarity index 100% rename from packages/frontend/core/src/hooks/affine/README.md rename to packages/frontend/core/src/components/hooks/affine/README.md diff --git a/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx b/packages/frontend/core/src/components/hooks/affine/use-all-page-list-config.tsx similarity index 96% rename from packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx rename to packages/frontend/core/src/components/hooks/affine/use-all-page-list-config.tsx index d14a937a85..3bc7fca4a0 100644 --- a/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx +++ b/packages/frontend/core/src/components/hooks/affine/use-all-page-list-config.tsx @@ -1,7 +1,7 @@ import { toast } from '@affine/component'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import type { AllPageListConfig } from '@affine/core/components/page-list'; import { FavoriteTag } from '@affine/core/components/page-list'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { ShareDocsListService } from '@affine/core/modules/share-doc'; import { PublicPageMode } from '@affine/graphql'; diff --git a/packages/frontend/core/src/hooks/affine/use-app-setting-helper.ts b/packages/frontend/core/src/components/hooks/affine/use-app-setting-helper.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-app-setting-helper.ts rename to packages/frontend/core/src/components/hooks/affine/use-app-setting-helper.ts diff --git a/packages/frontend/core/src/hooks/affine/use-block-suite-meta-helper.ts b/packages/frontend/core/src/components/hooks/affine/use-block-suite-meta-helper.ts similarity index 91% rename from packages/frontend/core/src/hooks/affine/use-block-suite-meta-helper.ts rename to packages/frontend/core/src/components/hooks/affine/use-block-suite-meta-helper.ts index dd0369634a..4020199be4 100644 --- a/packages/frontend/core/src/hooks/affine/use-block-suite-meta-helper.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-block-suite-meta-helper.ts @@ -1,6 +1,6 @@ -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; -import { useDocCollectionHelper } from '@affine/core/hooks/use-block-suite-workspace-helper'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; +import { useDocCollectionHelper } from '@affine/core/components/hooks/use-block-suite-workspace-helper'; import type { DocMode } from '@blocksuite/blocks'; import { DocsService, useService, WorkspaceService } from '@toeverything/infra'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/hooks/affine/use-delete-collection-info.ts b/packages/frontend/core/src/components/hooks/affine/use-delete-collection-info.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-delete-collection-info.ts rename to packages/frontend/core/src/components/hooks/affine/use-delete-collection-info.ts diff --git a/packages/frontend/core/src/hooks/affine/use-enable-cloud.tsx b/packages/frontend/core/src/components/hooks/affine/use-enable-cloud.tsx similarity index 92% rename from packages/frontend/core/src/hooks/affine/use-enable-cloud.tsx rename to packages/frontend/core/src/components/hooks/affine/use-enable-cloud.tsx index d8873412c9..f37909845c 100644 --- a/packages/frontend/core/src/hooks/affine/use-enable-cloud.tsx +++ b/packages/frontend/core/src/components/hooks/affine/use-enable-cloud.tsx @@ -1,7 +1,6 @@ import { notify, useConfirmModal } from '@affine/component'; -import { authAtom } from '@affine/core/atoms'; +import { authAtom } from '@affine/core/components/atoms'; import { AuthService } from '@affine/core/modules/cloud'; -import { WorkspaceSubPath } from '@affine/core/shared'; import { useI18n } from '@affine/i18n'; import type { Workspace } from '@toeverything/infra'; import { @@ -35,7 +34,7 @@ export const useEnableCloud = () => { const setAuthAtom = useSetAtom(authAtom); const { openConfirmModal, closeConfirmModal } = useConfirmModal(); const workspacesService = useService(WorkspacesService); - const { openPage } = useNavigateHelper(); + const { jumpToPage } = useNavigateHelper(); const enableCloud = useCallback( async (ws: Workspace | null, options?: ConfirmEnableCloudOptions) => { @@ -46,7 +45,7 @@ export const useEnableCloud = () => { ws, account.id ); - openPage(newId, options?.openPageId || WorkspaceSubPath.ALL); + jumpToPage(newId, options?.openPageId || 'all'); options?.onSuccess?.(); } catch (e) { console.error(e); @@ -55,7 +54,7 @@ export const useEnableCloud = () => { }); } }, - [account, openPage, t, workspacesService] + [account, jumpToPage, t, workspacesService] ); const openSignIn = useCallback(() => { diff --git a/packages/frontend/core/src/hooks/affine/use-export-page.ts b/packages/frontend/core/src/components/hooks/affine/use-export-page.ts similarity index 98% rename from packages/frontend/core/src/hooks/affine/use-export-page.ts rename to packages/frontend/core/src/components/hooks/affine/use-export-page.ts index e6c78922f5..c020f9de92 100644 --- a/packages/frontend/core/src/hooks/affine/use-export-page.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-export-page.ts @@ -3,9 +3,9 @@ import { pushGlobalLoadingEventAtom, resolveGlobalLoadingEventAtom, } from '@affine/component/global-loading'; -import { track } from '@affine/core/mixpanel'; import { EditorService } from '@affine/core/modules/editor'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ExportManager, HtmlTransformer, diff --git a/packages/frontend/core/src/hooks/affine/use-invite-member.ts b/packages/frontend/core/src/components/hooks/affine/use-invite-member.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-invite-member.ts rename to packages/frontend/core/src/components/hooks/affine/use-invite-member.ts diff --git a/packages/frontend/core/src/hooks/affine/use-language-helper.ts b/packages/frontend/core/src/components/hooks/affine/use-language-helper.ts similarity index 91% rename from packages/frontend/core/src/hooks/affine/use-language-helper.ts rename to packages/frontend/core/src/components/hooks/affine/use-language-helper.ts index ca20b35f6a..e06c063431 100644 --- a/packages/frontend/core/src/hooks/affine/use-language-helper.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-language-helper.ts @@ -1,4 +1,4 @@ -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { LOCALES, useI18n } from '@affine/i18n'; import { useEffect, useMemo } from 'react'; diff --git a/packages/frontend/core/src/hooks/affine/use-mutate-cloud.ts b/packages/frontend/core/src/components/hooks/affine/use-mutate-cloud.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-mutate-cloud.ts rename to packages/frontend/core/src/components/hooks/affine/use-mutate-cloud.ts diff --git a/packages/frontend/core/src/hooks/affine/use-reference-link-helper.ts b/packages/frontend/core/src/components/hooks/affine/use-reference-link-helper.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-reference-link-helper.ts rename to packages/frontend/core/src/components/hooks/affine/use-reference-link-helper.ts diff --git a/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx b/packages/frontend/core/src/components/hooks/affine/use-register-blocksuite-editor-commands.tsx similarity index 98% rename from packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx rename to packages/frontend/core/src/components/hooks/affine/use-register-blocksuite-editor-commands.tsx index a4dbb46a46..116e3fd125 100644 --- a/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx +++ b/packages/frontend/core/src/components/hooks/affine/use-register-blocksuite-editor-commands.tsx @@ -1,14 +1,14 @@ import { toast } from '@affine/component'; -import { openInfoModalAtom } from '@affine/core/atoms'; import { PreconditionStrategy, registerAffineCommand, } from '@affine/core/commands'; -import { track } from '@affine/core/mixpanel'; +import { openInfoModalAtom } from '@affine/core/components/atoms'; import type { Editor } from '@affine/core/modules/editor'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { EdgelessIcon, HistoryIcon, PageIcon } from '@blocksuite/icons/rc'; import { DocService, @@ -19,7 +19,7 @@ import { import { useSetAtom } from 'jotai'; import { useCallback, useEffect } from 'react'; -import { pageHistoryModalAtom } from '../../atoms/page-history'; +import { pageHistoryModalAtom } from '../../../components/atoms/page-history'; import { useBlockSuiteMetaHelper } from './use-block-suite-meta-helper'; import { useExportPage } from './use-export-page'; import { useTrashModalHelper } from './use-trash-modal-helper'; diff --git a/packages/frontend/core/src/hooks/affine/use-register-copy-link-commands.tsx b/packages/frontend/core/src/components/hooks/affine/use-register-copy-link-commands.tsx similarity index 91% rename from packages/frontend/core/src/hooks/affine/use-register-copy-link-commands.tsx rename to packages/frontend/core/src/components/hooks/affine/use-register-copy-link-commands.tsx index d0599f2f41..481a8758fd 100644 --- a/packages/frontend/core/src/hooks/affine/use-register-copy-link-commands.tsx +++ b/packages/frontend/core/src/components/hooks/affine/use-register-copy-link-commands.tsx @@ -2,10 +2,10 @@ import { PreconditionStrategy, registerAffineCommand, } from '@affine/core/commands'; -import { useSharingUrl } from '@affine/core/hooks/affine/use-share-url'; -import { track } from '@affine/core/mixpanel'; +import { useSharingUrl } from '@affine/core/components/hooks/affine/use-share-url'; import { useIsActiveView } from '@affine/core/modules/workbench'; import { WorkspaceFlavour } from '@affine/env/workspace'; +import { track } from '@affine/track'; import { type WorkspaceMetadata } from '@toeverything/infra'; import { useEffect } from 'react'; diff --git a/packages/frontend/core/src/hooks/affine/use-register-find-in-page-commands.ts b/packages/frontend/core/src/components/hooks/affine/use-register-find-in-page-commands.ts similarity index 96% rename from packages/frontend/core/src/hooks/affine/use-register-find-in-page-commands.ts rename to packages/frontend/core/src/components/hooks/affine/use-register-find-in-page-commands.ts index 46ccd0812b..bdea9af672 100644 --- a/packages/frontend/core/src/hooks/affine/use-register-find-in-page-commands.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-register-find-in-page-commands.ts @@ -2,8 +2,8 @@ import { PreconditionStrategy, registerAffineCommand, } from '@affine/core/commands'; -import { track } from '@affine/core/mixpanel'; import { FindInPageService } from '@affine/core/modules/find-in-page/services/find-in-page'; +import { track } from '@affine/track'; import { useService } from '@toeverything/infra'; import { useCallback, useEffect } from 'react'; diff --git a/packages/frontend/core/src/hooks/affine/use-revoke-member-permission.ts b/packages/frontend/core/src/components/hooks/affine/use-revoke-member-permission.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-revoke-member-permission.ts rename to packages/frontend/core/src/components/hooks/affine/use-revoke-member-permission.ts diff --git a/packages/frontend/core/src/hooks/affine/use-share-url.ts b/packages/frontend/core/src/components/hooks/affine/use-share-url.ts similarity index 98% rename from packages/frontend/core/src/hooks/affine/use-share-url.ts rename to packages/frontend/core/src/components/hooks/affine/use-share-url.ts index 1b852bb71a..16d2970108 100644 --- a/packages/frontend/core/src/hooks/affine/use-share-url.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-share-url.ts @@ -1,7 +1,7 @@ import { notify } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import { getAffineCloudBaseUrl } from '@affine/core/modules/cloud/services/fetch'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { type EditorHost } from '@blocksuite/block-std'; import { GfxBlockElementModel } from '@blocksuite/block-std/gfx'; import type { DocMode, EdgelessRootService } from '@blocksuite/blocks'; diff --git a/packages/frontend/core/src/hooks/affine/use-shortcuts.ts b/packages/frontend/core/src/components/hooks/affine/use-shortcuts.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-shortcuts.ts rename to packages/frontend/core/src/components/hooks/affine/use-shortcuts.ts diff --git a/packages/frontend/core/src/hooks/affine/use-sidebar-status.ts b/packages/frontend/core/src/components/hooks/affine/use-sidebar-status.ts similarity index 84% rename from packages/frontend/core/src/hooks/affine/use-sidebar-status.ts rename to packages/frontend/core/src/components/hooks/affine/use-sidebar-status.ts index dc14e2a027..a527846a25 100644 --- a/packages/frontend/core/src/hooks/affine/use-sidebar-status.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-sidebar-status.ts @@ -1,7 +1,7 @@ import { useAtom } from 'jotai'; import { useCallback, useMemo } from 'react'; -import { appSidebarOpenAtom } from '../../components/app-sidebar'; +import { appSidebarOpenAtom } from '../../../components/app-sidebar'; export function useSwitchSidebarStatus() { const [isOpened, setOpened] = useAtom(appSidebarOpenAtom); diff --git a/packages/frontend/core/src/hooks/affine/use-sign-out.ts b/packages/frontend/core/src/components/hooks/affine/use-sign-out.ts similarity index 96% rename from packages/frontend/core/src/hooks/affine/use-sign-out.ts rename to packages/frontend/core/src/components/hooks/affine/use-sign-out.ts index 706fa1f39c..ef0933153c 100644 --- a/packages/frontend/core/src/hooks/affine/use-sign-out.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-sign-out.ts @@ -4,7 +4,6 @@ import { useConfirmModal, } from '@affine/component'; import { AuthService } from '@affine/core/modules/cloud'; -import { WorkspaceSubPath } from '@affine/core/shared'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; import { @@ -65,7 +64,7 @@ export const useSignOut = ({ w => w.flavour === WorkspaceFlavour.LOCAL ); if (localWorkspace) { - openPage(localWorkspace.id, WorkspaceSubPath.ALL); + openPage(localWorkspace.id, 'all'); } } }, [ diff --git a/packages/frontend/core/src/hooks/affine/use-subscription-notify.tsx b/packages/frontend/core/src/components/hooks/affine/use-subscription-notify.tsx similarity index 97% rename from packages/frontend/core/src/hooks/affine/use-subscription-notify.tsx rename to packages/frontend/core/src/components/hooks/affine/use-subscription-notify.tsx index 555b67d961..e4e272db42 100644 --- a/packages/frontend/core/src/hooks/affine/use-subscription-notify.tsx +++ b/packages/frontend/core/src/components/hooks/affine/use-subscription-notify.tsx @@ -1,11 +1,11 @@ import { useUpgradeNotify } from '@affine/core/components/affine/subscription-landing/notify'; -import { track } from '@affine/core/mixpanel'; import { SubscriptionPlan, SubscriptionRecurring } from '@affine/graphql'; +import { track } from '@affine/track'; import { nanoid } from 'nanoid'; import { useCallback, useEffect } from 'react'; import { useSearchParams } from 'react-router-dom'; -import { type AuthAccountInfo } from '../../modules/cloud'; +import { type AuthAccountInfo } from '../../../modules/cloud'; const separator = '::'; const recoverSeparator = nanoid(); diff --git a/packages/frontend/core/src/hooks/affine/use-toggle-cloud-public.ts b/packages/frontend/core/src/components/hooks/affine/use-toggle-cloud-public.ts similarity index 100% rename from packages/frontend/core/src/hooks/affine/use-toggle-cloud-public.ts rename to packages/frontend/core/src/components/hooks/affine/use-toggle-cloud-public.ts diff --git a/packages/frontend/core/src/hooks/affine/use-trash-modal-helper.ts b/packages/frontend/core/src/components/hooks/affine/use-trash-modal-helper.ts similarity index 91% rename from packages/frontend/core/src/hooks/affine/use-trash-modal-helper.ts rename to packages/frontend/core/src/components/hooks/affine/use-trash-modal-helper.ts index dd78e282a7..6751ede888 100644 --- a/packages/frontend/core/src/hooks/affine/use-trash-modal-helper.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-trash-modal-helper.ts @@ -3,7 +3,7 @@ import { useI18n } from '@affine/i18n'; import { useAtom } from 'jotai'; import { useCallback } from 'react'; -import { trashModalAtom } from '../../atoms/trash-modal'; +import { trashModalAtom } from '../../../components/atoms/trash-modal'; import { useBlockSuiteMetaHelper } from './use-block-suite-meta-helper'; export function useTrashModalHelper() { diff --git a/packages/frontend/core/src/hooks/use-affine-adapter.ts b/packages/frontend/core/src/components/hooks/use-affine-adapter.ts similarity index 94% rename from packages/frontend/core/src/hooks/use-affine-adapter.ts rename to packages/frontend/core/src/components/hooks/use-affine-adapter.ts index 6b9d73c31d..a4e23a4d74 100644 --- a/packages/frontend/core/src/hooks/use-affine-adapter.ts +++ b/packages/frontend/core/src/components/hooks/use-affine-adapter.ts @@ -2,7 +2,7 @@ import { useService } from '@toeverything/infra'; import { useDebouncedState } from 'foxact/use-debounced-state'; import { useEffect } from 'react'; -import { WorkspacePropertiesAdapter } from '../modules/properties'; +import { WorkspacePropertiesAdapter } from '../../modules/properties'; function getProxy(obj: T) { return new Proxy(obj, {}); diff --git a/packages/frontend/core/src/hooks/use-all-block-suite-page-meta.ts b/packages/frontend/core/src/components/hooks/use-all-block-suite-page-meta.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-all-block-suite-page-meta.ts rename to packages/frontend/core/src/components/hooks/use-all-block-suite-page-meta.ts diff --git a/packages/frontend/core/src/hooks/use-app-config-storage.ts b/packages/frontend/core/src/components/hooks/use-app-config-storage.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-app-config-storage.ts rename to packages/frontend/core/src/components/hooks/use-app-config-storage.ts diff --git a/packages/frontend/core/src/hooks/use-app-updater.ts b/packages/frontend/core/src/components/hooks/use-app-updater.ts similarity index 98% rename from packages/frontend/core/src/hooks/use-app-updater.ts rename to packages/frontend/core/src/components/hooks/use-app-updater.ts index e731aeba49..328c57de77 100644 --- a/packages/frontend/core/src/hooks/use-app-updater.ts +++ b/packages/frontend/core/src/components/hooks/use-app-updater.ts @@ -1,13 +1,13 @@ import type { UpdateMeta } from '@affine/electron-api'; import { apis, events } from '@affine/electron-api'; +import { track } from '@affine/track'; import { appSettingAtom } from '@toeverything/infra'; import { atom, useAtom, useAtomValue } from 'jotai'; import { atomWithObservable, atomWithStorage } from 'jotai/utils'; import { useCallback, useState } from 'react'; import { Observable } from 'rxjs'; -import { track } from '../mixpanel'; -import { popupWindow } from '../utils'; +import { popupWindow } from '../../utils'; import { useAsyncCallback } from './affine-async-hooks'; function rpcToObservable< diff --git a/packages/frontend/core/src/hooks/use-block-suite-editor.ts b/packages/frontend/core/src/components/hooks/use-block-suite-editor.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-block-suite-editor.ts rename to packages/frontend/core/src/components/hooks/use-block-suite-editor.ts diff --git a/packages/frontend/core/src/hooks/use-block-suite-page-meta.ts b/packages/frontend/core/src/components/hooks/use-block-suite-page-meta.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-block-suite-page-meta.ts rename to packages/frontend/core/src/components/hooks/use-block-suite-page-meta.ts diff --git a/packages/frontend/core/src/hooks/use-block-suite-workspace-helper.ts b/packages/frontend/core/src/components/hooks/use-block-suite-workspace-helper.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-block-suite-workspace-helper.ts rename to packages/frontend/core/src/components/hooks/use-block-suite-workspace-helper.ts diff --git a/packages/frontend/core/src/hooks/use-block-suite-workspace-page-title.ts b/packages/frontend/core/src/components/hooks/use-block-suite-workspace-page-title.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-block-suite-workspace-page-title.ts rename to packages/frontend/core/src/components/hooks/use-block-suite-workspace-page-title.ts diff --git a/packages/frontend/core/src/hooks/use-block-suite-workspace-page.ts b/packages/frontend/core/src/components/hooks/use-block-suite-workspace-page.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-block-suite-workspace-page.ts rename to packages/frontend/core/src/components/hooks/use-block-suite-workspace-page.ts diff --git a/packages/frontend/core/src/hooks/use-blur-root.ts b/packages/frontend/core/src/components/hooks/use-blur-root.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-blur-root.ts rename to packages/frontend/core/src/components/hooks/use-blur-root.ts diff --git a/packages/frontend/core/src/hooks/use-catch-event-hook.ts b/packages/frontend/core/src/components/hooks/use-catch-event-hook.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-catch-event-hook.ts rename to packages/frontend/core/src/components/hooks/use-catch-event-hook.ts diff --git a/packages/frontend/core/src/hooks/use-global-state.ts b/packages/frontend/core/src/components/hooks/use-global-state.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-global-state.ts rename to packages/frontend/core/src/components/hooks/use-global-state.ts diff --git a/packages/frontend/core/src/hooks/use-journal.ts b/packages/frontend/core/src/components/hooks/use-journal.ts similarity index 98% rename from packages/frontend/core/src/hooks/use-journal.ts rename to packages/frontend/core/src/components/hooks/use-journal.ts index 4e41fde1ff..67686d3591 100644 --- a/packages/frontend/core/src/hooks/use-journal.ts +++ b/packages/frontend/core/src/components/hooks/use-journal.ts @@ -1,11 +1,11 @@ import { i18nTime } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocCollection } from '@blocksuite/store'; import { DocsService, initEmptyPage, useService } from '@toeverything/infra'; import dayjs from 'dayjs'; import { useCallback, useMemo } from 'react'; -import { track } from '../mixpanel'; -import { WorkbenchService } from '../modules/workbench'; +import { WorkbenchService } from '../../modules/workbench'; import { useCurrentWorkspacePropertiesAdapter } from './use-affine-adapter'; import { useDocCollectionHelper } from './use-block-suite-workspace-helper'; diff --git a/packages/frontend/core/src/hooks/use-mutation.ts b/packages/frontend/core/src/components/hooks/use-mutation.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-mutation.ts rename to packages/frontend/core/src/components/hooks/use-mutation.ts diff --git a/packages/frontend/core/src/hooks/use-navigate-helper.ts b/packages/frontend/core/src/components/hooks/use-navigate-helper.ts similarity index 93% rename from packages/frontend/core/src/hooks/use-navigate-helper.ts rename to packages/frontend/core/src/components/hooks/use-navigate-helper.ts index 565be85e48..55ebcd4fef 100644 --- a/packages/frontend/core/src/hooks/use-navigate-helper.ts +++ b/packages/frontend/core/src/components/hooks/use-navigate-helper.ts @@ -1,4 +1,3 @@ -import type { WorkspaceSubPath } from '@affine/core/shared'; import type { DocMode } from '@blocksuite/blocks'; import { createContext, useCallback, useContext, useMemo } from 'react'; import type { NavigateFunction, NavigateOptions } from 'react-router-dom'; @@ -97,18 +96,6 @@ export function useNavigateHelper() { }, [navigate] ); - const jumpToSubPath = useCallback( - ( - workspaceId: string, - subPath: WorkspaceSubPath, - logic: RouteLogic = RouteLogic.PUSH - ) => { - return navigate(`/workspace/${workspaceId}/${subPath}`, { - replace: logic === RouteLogic.REPLACE, - }); - }, - [navigate] - ); const openPage = useCallback( (workspaceId: string, pageId: string) => { @@ -195,7 +182,6 @@ export function useNavigateHelper() { () => ({ jumpToPage, jumpToPageBlock, - jumpToSubPath, jumpToIndex, jumpTo404, openPage, @@ -211,7 +197,6 @@ export function useNavigateHelper() { [ jumpToPage, jumpToPageBlock, - jumpToSubPath, jumpToIndex, jumpTo404, openPage, diff --git a/packages/frontend/core/src/hooks/use-query.ts b/packages/frontend/core/src/components/hooks/use-query.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-query.ts rename to packages/frontend/core/src/components/hooks/use-query.ts diff --git a/packages/frontend/core/src/hooks/use-register-workspace-commands.ts b/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts similarity index 92% rename from packages/frontend/core/src/hooks/use-register-workspace-commands.ts rename to packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts index e56c32ea95..120656666a 100644 --- a/packages/frontend/core/src/hooks/use-register-workspace-commands.ts +++ b/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts @@ -14,11 +14,11 @@ import { registerAffineNavigationCommands, registerAffineSettingsCommands, registerAffineUpdatesCommands, -} from '../commands'; -import { usePageHelper } from '../components/blocksuite/block-suite-page-list/utils'; -import { CreateWorkspaceDialogService } from '../modules/create-workspace'; -import { EditorSettingService } from '../modules/editor-settting'; -import { CMDKQuickSearchService } from '../modules/quicksearch/services/cmdk'; +} from '../../commands'; +import { usePageHelper } from '../../components/blocksuite/block-suite-page-list/utils'; +import { CreateWorkspaceDialogService } from '../../modules/create-workspace'; +import { EditorSettingService } from '../../modules/editor-settting'; +import { CMDKQuickSearchService } from '../../modules/quicksearch/services/cmdk'; import { useLanguageHelper } from './affine/use-language-helper'; import { useActiveBlocksuiteEditor } from './use-block-suite-editor'; import { useNavigateHelper } from './use-navigate-helper'; diff --git a/packages/frontend/core/src/hooks/use-system-online.ts b/packages/frontend/core/src/components/hooks/use-system-online.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-system-online.ts rename to packages/frontend/core/src/components/hooks/use-system-online.ts diff --git a/packages/frontend/core/src/hooks/use-workspace-info.ts b/packages/frontend/core/src/components/hooks/use-workspace-info.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-workspace-info.ts rename to packages/frontend/core/src/components/hooks/use-workspace-info.ts diff --git a/packages/frontend/core/src/hooks/use-workspace.ts b/packages/frontend/core/src/components/hooks/use-workspace.ts similarity index 100% rename from packages/frontend/core/src/hooks/use-workspace.ts rename to packages/frontend/core/src/components/hooks/use-workspace.ts diff --git a/packages/frontend/core/src/layouts/styles.css.ts b/packages/frontend/core/src/components/layouts/styles.css.ts similarity index 100% rename from packages/frontend/core/src/layouts/styles.css.ts rename to packages/frontend/core/src/components/layouts/styles.css.ts diff --git a/packages/frontend/core/src/layouts/workspace-layout.tsx b/packages/frontend/core/src/components/layouts/workspace-layout.tsx similarity index 86% rename from packages/frontend/core/src/layouts/workspace-layout.tsx rename to packages/frontend/core/src/components/layouts/workspace-layout.tsx index 2e5875d0a6..751700810c 100644 --- a/packages/frontend/core/src/layouts/workspace-layout.tsx +++ b/packages/frontend/core/src/components/layouts/workspace-layout.tsx @@ -30,30 +30,27 @@ import { } from 'rxjs'; import { Map as YMap } from 'yjs'; -import { AIProvider } from '../blocksuite/presets/ai'; -import { WorkspaceAIOnboarding } from '../components/affine/ai-onboarding'; -import { AppContainer } from '../components/affine/app-container'; -import { SyncAwareness } from '../components/affine/awareness'; -import { - appSidebarResizingAtom, - SidebarSwitch, -} from '../components/app-sidebar'; -import { OverCapacityNotification } from '../components/over-capacity'; -import { AIIsland } from '../components/pure/ai-island'; -import { RootAppSidebar } from '../components/root-app-sidebar'; -import { MainContainer } from '../components/workspace'; -import { WorkspaceUpgrade } from '../components/workspace-upgrade'; +import { AIProvider } from '../../blocksuite/presets/ai'; +import { AppTabsHeader } from '../../modules/app-tabs-header'; +import { EditorSettingService } from '../../modules/editor-settting'; +import { NavigationButtons } from '../../modules/navigation'; +import { useRegisterNavigationCommands } from '../../modules/navigation/view/use-register-navigation-commands'; +import { QuickSearchContainer } from '../../modules/quicksearch'; +import { WorkbenchService } from '../../modules/workbench'; +import { WorkspaceAIOnboarding } from '../affine/ai-onboarding'; +import { AppContainer } from '../affine/app-container'; +import { SyncAwareness } from '../affine/awareness'; +import { appSidebarResizingAtom, SidebarSwitch } from '../app-sidebar'; import { useRegisterFindInPageCommands } from '../hooks/affine/use-register-find-in-page-commands'; import { useSubscriptionNotifyReader } from '../hooks/affine/use-subscription-notify'; import { useRegisterWorkspaceCommands } from '../hooks/use-register-workspace-commands'; -import { AppTabsHeader } from '../modules/app-tabs-header'; -import { EditorSettingService } from '../modules/editor-settting'; -import { NavigationButtons } from '../modules/navigation'; -import { useRegisterNavigationCommands } from '../modules/navigation/view/use-register-navigation-commands'; -import { QuickSearchContainer } from '../modules/quicksearch'; -import { WorkbenchService } from '../modules/workbench'; +import { OverCapacityNotification } from '../over-capacity'; import { CurrentWorkspaceModals } from '../providers/modal-provider'; import { SWRConfigProvider } from '../providers/swr-config-provider'; +import { AIIsland } from '../pure/ai-island'; +import { RootAppSidebar } from '../root-app-sidebar'; +import { MainContainer } from '../workspace'; +import { WorkspaceUpgrade } from '../workspace-upgrade'; import * as styles from './styles.css'; export const WorkspaceLayout = function WorkspaceLayout({ diff --git a/packages/frontend/core/src/components/over-capacity/index.tsx b/packages/frontend/core/src/components/over-capacity/index.tsx index a5181da966..75eff38c07 100644 --- a/packages/frontend/core/src/components/over-capacity/index.tsx +++ b/packages/frontend/core/src/components/over-capacity/index.tsx @@ -1,5 +1,5 @@ import { notify } from '@affine/component'; -import { openSettingModalAtom } from '@affine/core/atoms'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; import { WorkspacePermissionService } from '@affine/core/modules/permissions'; import { useI18n } from '@affine/i18n'; import { useLiveData, useService, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/page-list/collections/virtualized-collection-list.tsx b/packages/frontend/core/src/components/page-list/collections/virtualized-collection-list.tsx index c77971e4bd..f20521165d 100644 --- a/packages/frontend/core/src/components/page-list/collections/virtualized-collection-list.tsx +++ b/packages/frontend/core/src/components/page-list/collections/virtualized-collection-list.tsx @@ -1,4 +1,4 @@ -import { useDeleteCollectionInfo } from '@affine/core/hooks/affine/use-delete-collection-info'; +import { useDeleteCollectionInfo } from '@affine/core/components/hooks/affine/use-delete-collection-info'; import type { Collection, DeleteCollectionInfo } from '@affine/env/filter'; import { Trans } from '@affine/i18n'; import { useService, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/components/page-list/components/new-page-button.tsx b/packages/frontend/core/src/components/page-list/components/new-page-button.tsx index 0d4dffd8be..8da20da51d 100644 --- a/packages/frontend/core/src/components/page-list/components/new-page-button.tsx +++ b/packages/frontend/core/src/components/page-list/components/new-page-button.tsx @@ -1,7 +1,7 @@ import { DropdownButton, Menu } from '@affine/component'; import { BlockCard } from '@affine/component/card/block-card'; -import { track } from '@affine/core/mixpanel'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { EdgelessIcon, ImportIcon, PageIcon } from '@blocksuite/icons/rc'; import type { MouseEvent, PropsWithChildren } from 'react'; import { useCallback, useState } from 'react'; diff --git a/packages/frontend/core/src/components/page-list/docs/page-list-header.tsx b/packages/frontend/core/src/components/page-list/docs/page-list-header.tsx index 0c7df917fd..161509e542 100644 --- a/packages/frontend/core/src/components/page-list/docs/page-list-header.tsx +++ b/packages/frontend/core/src/components/page-list/docs/page-list-header.tsx @@ -5,14 +5,14 @@ import { Scrollable, useConfirmModal, } from '@affine/component'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import type { Tag } from '@affine/core/modules/tag'; import { TagService } from '@affine/core/modules/tag'; import { isNewTabTrigger } from '@affine/core/utils'; import type { Collection } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import type { DocMode } from '@blocksuite/blocks'; import { ArrowDownSmallIcon, diff --git a/packages/frontend/core/src/components/page-list/docs/page-tags.tsx b/packages/frontend/core/src/components/page-list/docs/page-tags.tsx index e064248cd6..91aeda5a5b 100644 --- a/packages/frontend/core/src/components/page-list/docs/page-tags.tsx +++ b/packages/frontend/core/src/components/page-list/docs/page-tags.tsx @@ -1,5 +1,5 @@ import { Menu } from '@affine/component'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import type { Tag } from '@affine/core/modules/tag'; import { stopPropagation } from '@affine/core/utils'; import { CloseIcon, MoreHorizontalIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/components/page-list/docs/virtualized-page-list.tsx b/packages/frontend/core/src/components/page-list/docs/virtualized-page-list.tsx index c075e72a3b..a35b0aef35 100644 --- a/packages/frontend/core/src/components/page-list/docs/virtualized-page-list.tsx +++ b/packages/frontend/core/src/components/page-list/docs/virtualized-page-list.tsx @@ -1,6 +1,6 @@ import { toast } from '@affine/component'; -import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; +import { useTrashModalHelper } from '@affine/core/components/hooks/affine/use-trash-modal-helper'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { CollectionService } from '@affine/core/modules/collection'; import type { Tag } from '@affine/core/modules/tag'; import type { Collection, Filter } from '@affine/env/filter'; diff --git a/packages/frontend/core/src/components/page-list/operation-cell.tsx b/packages/frontend/core/src/components/page-list/operation-cell.tsx index 888de372d7..c40a140ed5 100644 --- a/packages/frontend/core/src/components/page-list/operation-cell.tsx +++ b/packages/frontend/core/src/components/page-list/operation-cell.tsx @@ -5,15 +5,15 @@ import { toast, useConfirmModal, } from '@affine/component'; -import { useBlockSuiteMetaHelper } from '@affine/core/hooks/affine/use-block-suite-meta-helper'; -import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; -import { track } from '@affine/core/mixpanel'; +import { useBlockSuiteMetaHelper } from '@affine/core/components/hooks/affine/use-block-suite-meta-helper'; +import { useTrashModalHelper } from '@affine/core/components/hooks/affine/use-trash-modal-helper'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { FavoriteService } from '@affine/core/modules/favorite'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkbenchService } from '@affine/core/modules/workbench'; import type { Collection, DeleteCollectionInfo } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DeleteIcon, DeletePermanentlyIcon, diff --git a/packages/frontend/core/src/components/page-list/operation-menu-items/export.tsx b/packages/frontend/core/src/components/page-list/operation-menu-items/export.tsx index cccc7f2de5..b7a54ffcfd 100644 --- a/packages/frontend/core/src/components/page-list/operation-menu-items/export.tsx +++ b/packages/frontend/core/src/components/page-list/operation-menu-items/export.tsx @@ -1,6 +1,6 @@ import { MenuItem, MenuSeparator, MenuSub } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ExportIcon, ExportToHtmlIcon, diff --git a/packages/frontend/core/src/components/page-list/page-group.tsx b/packages/frontend/core/src/components/page-list/page-group.tsx index 42e16fe7ef..092aeb0c46 100644 --- a/packages/frontend/core/src/components/page-list/page-group.tsx +++ b/packages/frontend/core/src/components/page-list/page-group.tsx @@ -1,4 +1,4 @@ -import { useJournalInfoHelper } from '@affine/core/hooks/use-journal'; +import { useJournalInfoHelper } from '@affine/core/components/hooks/use-journal'; import type { Tag } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; import { assertExists } from '@blocksuite/global/utils'; diff --git a/packages/frontend/core/src/components/page-list/page-header.tsx b/packages/frontend/core/src/components/page-list/page-header.tsx index 562ef57156..a37d05c503 100644 --- a/packages/frontend/core/src/components/page-list/page-header.tsx +++ b/packages/frontend/core/src/components/page-list/page-header.tsx @@ -1,6 +1,6 @@ import type { CheckboxProps } from '@affine/component'; import { Checkbox } from '@affine/component'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { useI18n } from '@affine/i18n'; import { MultiSelectIcon } from '@blocksuite/icons/rc'; import clsx from 'clsx'; diff --git a/packages/frontend/core/src/components/page-list/view/collection-operations.tsx b/packages/frontend/core/src/components/page-list/view/collection-operations.tsx index 1726c0b568..e249ee2011 100644 --- a/packages/frontend/core/src/components/page-list/view/collection-operations.tsx +++ b/packages/frontend/core/src/components/page-list/view/collection-operations.tsx @@ -1,6 +1,6 @@ import type { MenuItemProps } from '@affine/component'; import { Menu, MenuItem } from '@affine/component'; -import { useDeleteCollectionInfo } from '@affine/core/hooks/affine/use-delete-collection-info'; +import { useDeleteCollectionInfo } from '@affine/core/components/hooks/affine/use-delete-collection-info'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkbenchService } from '@affine/core/modules/workbench'; import type { Collection } from '@affine/env/filter'; diff --git a/packages/frontend/core/src/components/page-list/view/create-collection.tsx b/packages/frontend/core/src/components/page-list/view/create-collection.tsx index d57ed246ea..9ec97c5bdd 100644 --- a/packages/frontend/core/src/components/page-list/view/create-collection.tsx +++ b/packages/frontend/core/src/components/page-list/view/create-collection.tsx @@ -1,5 +1,5 @@ import { Button, Input, Modal } from '@affine/component'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { useI18n } from '@affine/i18n'; import type { KeyboardEvent } from 'react'; import { useCallback, useMemo, useState } from 'react'; diff --git a/packages/frontend/core/src/components/page-list/view/edit-collection/edit-collection.tsx b/packages/frontend/core/src/components/page-list/view/edit-collection/edit-collection.tsx index 1caf4c5cf2..8afc8c00ff 100644 --- a/packages/frontend/core/src/components/page-list/view/edit-collection/edit-collection.tsx +++ b/packages/frontend/core/src/components/page-list/view/edit-collection/edit-collection.tsx @@ -1,5 +1,5 @@ import { Button, Modal, RadioGroup } from '@affine/component'; -import { useAllPageListConfig } from '@affine/core/hooks/affine/use-all-page-list-config'; +import { useAllPageListConfig } from '@affine/core/components/hooks/affine/use-all-page-list-config'; import type { Collection } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; import type { DocCollection, DocMeta } from '@blocksuite/store'; diff --git a/packages/frontend/core/src/components/page-list/view/edit-collection/select-page.tsx b/packages/frontend/core/src/components/page-list/view/edit-collection/select-page.tsx index 8ed5920e66..881a8d39da 100644 --- a/packages/frontend/core/src/components/page-list/view/edit-collection/select-page.tsx +++ b/packages/frontend/core/src/components/page-list/view/edit-collection/select-page.tsx @@ -1,5 +1,5 @@ import { IconButton, Menu, toast } from '@affine/component'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { ShareDocsListService } from '@affine/core/modules/share-doc'; import { PublicPageMode } from '@affine/graphql'; diff --git a/packages/frontend/core/src/components/page-list/virtualized-trash-list.tsx b/packages/frontend/core/src/components/page-list/virtualized-trash-list.tsx index 5522e5b8d6..802dbc7a0c 100644 --- a/packages/frontend/core/src/components/page-list/virtualized-trash-list.tsx +++ b/packages/frontend/core/src/components/page-list/virtualized-trash-list.tsx @@ -1,6 +1,6 @@ import { toast, useConfirmModal } from '@affine/component'; -import { useBlockSuiteMetaHelper } from '@affine/core/hooks/affine/use-block-suite-meta-helper'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; +import { useBlockSuiteMetaHelper } from '@affine/core/components/hooks/affine/use-block-suite-meta-helper'; +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { Trans, useI18n } from '@affine/i18n'; import type { DocMeta } from '@blocksuite/store'; import { useService, WorkspaceService } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/providers/modal-provider.tsx b/packages/frontend/core/src/components/providers/modal-provider.tsx similarity index 81% rename from packages/frontend/core/src/providers/modal-provider.tsx rename to packages/frontend/core/src/components/providers/modal-provider.tsx index 0e99e1c2f1..83a2695152 100644 --- a/packages/frontend/core/src/providers/modal-provider.tsx +++ b/packages/frontend/core/src/components/providers/modal-provider.tsx @@ -12,29 +12,28 @@ import { useAtom } from 'jotai'; import type { ReactElement } from 'react'; import { useCallback, useEffect } from 'react'; -import type { SettingAtom } from '../atoms'; -import { openSettingModalAtom, openSignOutModalAtom } from '../atoms'; -import { AuthModal } from '../components/affine/auth'; -import { AiLoginRequiredModal } from '../components/affine/auth/ai-login-required'; -import { HistoryTipsModal } from '../components/affine/history-tips-modal'; -import { IssueFeedbackModal } from '../components/affine/issue-feedback-modal'; +import { AuthService } from '../../modules/cloud/services/auth'; +import { CreateWorkspaceDialogProvider } from '../../modules/create-workspace'; +import { FindInPageModal } from '../../modules/find-in-page/view/find-in-page-modal'; +import { ImportTemplateDialogProvider } from '../../modules/import-template'; +import { PeekViewManagerModal } from '../../modules/peek-view'; +import { AuthModal } from '../affine/auth'; +import { AiLoginRequiredModal } from '../affine/auth/ai-login-required'; +import { HistoryTipsModal } from '../affine/history-tips-modal'; +import { IssueFeedbackModal } from '../affine/issue-feedback-modal'; import { CloudQuotaModal, LocalQuotaModal, -} from '../components/affine/quota-reached-modal'; -import { SettingModal } from '../components/affine/setting-modal'; -import { SignOutModal } from '../components/affine/sign-out-modal'; -import { StarAFFiNEModal } from '../components/affine/star-affine-modal'; -import { MoveToTrash } from '../components/page-list'; +} from '../affine/quota-reached-modal'; +import { SettingModal } from '../affine/setting-modal'; +import { SignOutModal } from '../affine/sign-out-modal'; +import { StarAFFiNEModal } from '../affine/star-affine-modal'; +import type { SettingAtom } from '../atoms'; +import { openSettingModalAtom, openSignOutModalAtom } from '../atoms'; import { useTrashModalHelper } from '../hooks/affine/use-trash-modal-helper'; import { useAsyncCallback } from '../hooks/affine-async-hooks'; import { useNavigateHelper } from '../hooks/use-navigate-helper'; -import { AuthService } from '../modules/cloud/services/auth'; -import { CreateWorkspaceDialogProvider } from '../modules/create-workspace'; -import { FindInPageModal } from '../modules/find-in-page/view/find-in-page-modal'; -import { ImportTemplateDialogProvider } from '../modules/import-template'; -import { PeekViewManagerModal } from '../modules/peek-view'; -import { WorkspaceSubPath } from '../shared'; +import { MoveToTrash } from '../page-list'; export const Setting = () => { const [{ open, workspaceMetadata, activeTab }, setOpenSettingModalAtom] = @@ -165,7 +164,7 @@ export const SignOutConfirmModal = () => { w => w.flavour === WorkspaceFlavour.LOCAL ); if (localWorkspace) { - openPage(localWorkspace.id, WorkspaceSubPath.ALL); + openPage(localWorkspace.id, 'all'); } } }, [ diff --git a/packages/frontend/core/src/providers/swr-config-provider.tsx b/packages/frontend/core/src/components/providers/swr-config-provider.tsx similarity index 100% rename from packages/frontend/core/src/providers/swr-config-provider.tsx rename to packages/frontend/core/src/components/providers/swr-config-provider.tsx diff --git a/packages/frontend/core/src/components/pure/help-island/index.tsx b/packages/frontend/core/src/components/pure/help-island/index.tsx index 0a98fe926f..e6d99f2922 100644 --- a/packages/frontend/core/src/components/pure/help-island/index.tsx +++ b/packages/frontend/core/src/components/pure/help-island/index.tsx @@ -10,8 +10,8 @@ import { import { useSetAtom } from 'jotai/react'; import { useCallback, useState } from 'react'; -import { openSettingModalAtom } from '../../../atoms'; import type { SettingProps } from '../../affine/setting-modal'; +import { openSettingModalAtom } from '../../atoms'; import { ContactIcon, HelpIcon, KeyboardIcon } from './icons'; import { StyledAnimateWrapper, diff --git a/packages/frontend/core/src/components/pure/trash-page-footer/index.tsx b/packages/frontend/core/src/components/pure/trash-page-footer/index.tsx index 1f34e56631..03af2df089 100644 --- a/packages/frontend/core/src/components/pure/trash-page-footer/index.tsx +++ b/packages/frontend/core/src/components/pure/trash-page-footer/index.tsx @@ -5,10 +5,9 @@ import { DeleteIcon, ResetIcon } from '@blocksuite/icons/rc'; import { DocService, useService, WorkspaceService } from '@toeverything/infra'; import { useCallback, useState } from 'react'; -import { useAppSettingHelper } from '../../../hooks/affine/use-app-setting-helper'; -import { useBlockSuiteMetaHelper } from '../../../hooks/affine/use-block-suite-meta-helper'; -import { useNavigateHelper } from '../../../hooks/use-navigate-helper'; -import { WorkspaceSubPath } from '../../../shared'; +import { useAppSettingHelper } from '../../../components/hooks/affine/use-app-setting-helper'; +import { useBlockSuiteMetaHelper } from '../../../components/hooks/affine/use-block-suite-meta-helper'; +import { useNavigateHelper } from '../../../components/hooks/use-navigate-helper'; import { toast } from '../../../utils'; import * as styles from './styles.css'; @@ -18,7 +17,7 @@ export const TrashPageFooter = () => { const doc = useService(DocService).doc; const t = useI18n(); const { appSettings } = useAppSettingHelper(); - const { jumpToSubPath } = useNavigateHelper(); + const { jumpToPage } = useNavigateHelper(); const { restoreFromTrash } = useBlockSuiteMetaHelper(); const [open, setOpen] = useState(false); const hintText = t['com.affine.cmdk.affine.editor.trash-footer-hint'](); @@ -33,10 +32,10 @@ export const TrashPageFooter = () => { }, [doc.id, doc.meta$.value.title, restoreFromTrash, t]); const onConfirmDelete = useCallback(() => { - jumpToSubPath(workspace.id, WorkspaceSubPath.ALL); + jumpToPage(workspace.id, 'all'); docCollection.removeDoc(doc.id); toast(t['com.affine.toastMessage.permanentlyDeleted']()); - }, [jumpToSubPath, workspace.id, docCollection, doc.id, t]); + }, [jumpToPage, workspace.id, docCollection, doc.id, t]); const onDelete = useCallback(() => { setOpen(true); diff --git a/packages/frontend/core/src/components/pure/workspace-mode-filter-tab/index.tsx b/packages/frontend/core/src/components/pure/workspace-mode-filter-tab/index.tsx index 1f990f683a..c34b9148f8 100644 --- a/packages/frontend/core/src/components/pure/workspace-mode-filter-tab/index.tsx +++ b/packages/frontend/core/src/components/pure/workspace-mode-filter-tab/index.tsx @@ -1,8 +1,7 @@ import { RadioGroup, type RadioItem } from '@affine/component'; -import type { AllPageFilterOption } from '@affine/core/atoms'; -import { allPageFilterSelectAtom } from '@affine/core/atoms'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; -import { WorkspaceSubPath } from '@affine/core/shared'; +import type { AllPageFilterOption } from '@affine/core/components/atoms'; +import { allPageFilterSelectAtom } from '@affine/core/components/atoms'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import { useI18n } from '@affine/i18n'; import { useService, WorkspaceService } from '@toeverything/infra'; import { useAtom } from 'jotai'; @@ -19,7 +18,7 @@ export const WorkspaceModeFilterTab = ({ const t = useI18n(); const [value, setValue] = useState(activeFilter); const [filterMode, setFilterMode] = useAtom(allPageFilterSelectAtom); - const { jumpToCollections, jumpToTags, jumpToSubPath } = useNavigateHelper(); + const { jumpToCollections, jumpToTags, jumpToPage } = useNavigateHelper(); const handleValueChange = useCallback( (value: AllPageFilterOption) => { switch (value) { @@ -30,11 +29,11 @@ export const WorkspaceModeFilterTab = ({ jumpToTags(workspace.id); break; case 'docs': - jumpToSubPath(workspace.id, WorkspaceSubPath.ALL); + jumpToPage(workspace.id, 'all'); break; } }, - [jumpToCollections, jumpToSubPath, jumpToTags, workspace] + [jumpToCollections, jumpToPage, jumpToTags, workspace] ); useEffect(() => { diff --git a/packages/frontend/core/src/components/root-app-sidebar/import-page.tsx b/packages/frontend/core/src/components/root-app-sidebar/import-page.tsx index 987a132e89..a4d25afe83 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/import-page.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/import-page.tsx @@ -1,6 +1,6 @@ -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { ImportIcon } from '@blocksuite/icons/rc'; import type { DocCollection } from '@blocksuite/store'; diff --git a/packages/frontend/core/src/components/root-app-sidebar/index.tsx b/packages/frontend/core/src/components/root-app-sidebar/index.tsx index a11767098c..7736414d9f 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/index.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/index.tsx @@ -1,6 +1,5 @@ -import { openSettingModalAtom } from '@affine/core/atoms'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { openSettingModalAtom } from '@affine/core/components/atoms'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { ExplorerCollections, ExplorerFavorites, @@ -12,6 +11,7 @@ import { CMDKQuickSearchService } from '@affine/core/modules/quicksearch/service import { isNewTabTrigger } from '@affine/core/utils'; import { apis, events } from '@affine/electron-api'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { AllDocsIcon, GithubIcon, diff --git a/packages/frontend/core/src/components/root-app-sidebar/journal-button.tsx b/packages/frontend/core/src/components/root-app-sidebar/journal-button.tsx index 235a3871fc..74bb18c51c 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/journal-button.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/journal-button.tsx @@ -1,8 +1,8 @@ -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { useJournalInfoHelper, useJournalRouteHelper, -} from '@affine/core/hooks/use-journal'; +} from '@affine/core/components/hooks/use-journal'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { isNewTabTrigger } from '@affine/core/utils'; import { useI18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/root-app-sidebar/updater-button.tsx b/packages/frontend/core/src/components/root-app-sidebar/updater-button.tsx index c37e9c985d..aea718965c 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/updater-button.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/updater-button.tsx @@ -1,4 +1,4 @@ -import { useAppUpdater } from '@affine/core/hooks/use-app-updater'; +import { useAppUpdater } from '@affine/core/components/hooks/use-app-updater'; import { Suspense } from 'react'; import { AppUpdaterButton } from '../app-sidebar'; diff --git a/packages/frontend/core/src/components/root-app-sidebar/user-info.tsx b/packages/frontend/core/src/components/root-app-sidebar/user-info.tsx index 5d31238568..7e41ed5911 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/user-info.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/user-info.tsx @@ -12,9 +12,9 @@ import { authAtom, openSettingModalAtom, openSignOutModalAtom, -} from '@affine/core/atoms'; -import { track } from '@affine/core/mixpanel'; +} from '@affine/core/components/atoms'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { AccountIcon, SignOutIcon } from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; import { cssVar } from '@toeverything/theme'; diff --git a/packages/frontend/core/src/telemetry.tsx b/packages/frontend/core/src/components/telemetry.tsx similarity index 88% rename from packages/frontend/core/src/telemetry.tsx rename to packages/frontend/core/src/components/telemetry.tsx index 868da53144..838326151b 100644 --- a/packages/frontend/core/src/telemetry.tsx +++ b/packages/frontend/core/src/components/telemetry.tsx @@ -1,9 +1,8 @@ +import { enableAutoTrack, mixpanel } from '@affine/track'; import { appSettingAtom } from '@toeverything/infra'; import { useAtomValue } from 'jotai/react'; import { useLayoutEffect } from 'react'; -import { enableAutoTrack, mixpanel } from './mixpanel'; - export function Telemetry() { const settings = useAtomValue(appSettingAtom); useLayoutEffect(() => { diff --git a/packages/frontend/core/src/components/top-tip.tsx b/packages/frontend/core/src/components/top-tip.tsx index a1e185427b..66c4540be3 100644 --- a/packages/frontend/core/src/components/top-tip.tsx +++ b/packages/frontend/core/src/components/top-tip.tsx @@ -5,9 +5,9 @@ import { useLiveData, useService, type Workspace } from '@toeverything/infra'; import { useSetAtom } from 'jotai'; import { useCallback, useState } from 'react'; -import { authAtom } from '../atoms'; -import { useEnableCloud } from '../hooks/affine/use-enable-cloud'; +import { useEnableCloud } from '../components/hooks/affine/use-enable-cloud'; import { AuthService } from '../modules/cloud'; +import { authAtom } from './atoms'; const minimumChromeVersion = 106; diff --git a/packages/frontend/core/src/components/workspace-selector/index.tsx b/packages/frontend/core/src/components/workspace-selector/index.tsx index 54b5956708..d90f13b519 100644 --- a/packages/frontend/core/src/components/workspace-selector/index.tsx +++ b/packages/frontend/core/src/components/workspace-selector/index.tsx @@ -1,8 +1,7 @@ import { Menu, type MenuProps } from '@affine/component'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; -import { track } from '@affine/core/mixpanel'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import type { CreateWorkspaceCallbackPayload } from '@affine/core/modules/create-workspace'; -import { WorkspaceSubPath } from '@affine/core/shared'; +import { track } from '@affine/track'; import { GlobalContextService, useLiveData, @@ -122,23 +121,23 @@ export const WorkspaceNavigator = ({ onCreatedWorkspace, ...props }: WorkspaceSelectorProps) => { - const { jumpToSubPath, jumpToPage } = useNavigateHelper(); + const { jumpToPage } = useNavigateHelper(); const handleClickWorkspace = useCallback( (workspaceMetadata: WorkspaceMetadata) => { onSelectWorkspace?.(workspaceMetadata); if (document.startViewTransition) { document.startViewTransition(() => { - jumpToSubPath(workspaceMetadata.id, WorkspaceSubPath.ALL); + jumpToPage(workspaceMetadata.id, 'all'); return new Promise(resolve => setTimeout(resolve, 150) ); /* start transition after 150ms */ }); } else { - jumpToSubPath(workspaceMetadata.id, WorkspaceSubPath.ALL); + jumpToPage(workspaceMetadata.id, 'all'); } }, - [onSelectWorkspace, jumpToSubPath] + [onSelectWorkspace, jumpToPage] ); const handleCreatedWorkspace = useCallback( (payload: CreateWorkspaceCallbackPayload) => { @@ -148,7 +147,7 @@ export const WorkspaceNavigator = ({ if (payload.defaultDocId) { jumpToPage(payload.meta.id, payload.defaultDocId); } else { - jumpToSubPath(payload.meta.id, WorkspaceSubPath.ALL); + jumpToPage(payload.meta.id, 'all'); } return new Promise(resolve => setTimeout(resolve, 150) @@ -158,11 +157,11 @@ export const WorkspaceNavigator = ({ if (payload.defaultDocId) { jumpToPage(payload.meta.id, payload.defaultDocId); } else { - jumpToSubPath(payload.meta.id, WorkspaceSubPath.ALL); + jumpToPage(payload.meta.id, 'all'); } } }, - [jumpToPage, jumpToSubPath, onCreatedWorkspace] + [jumpToPage, onCreatedWorkspace] ); return ( { - const { framework, workspace } = await configureTestingEnvironment(); - const docCollection = workspace.docCollection; - - initEmptyPage(docCollection.createDoc({ id: 'page1' })); - initEmptyPage(docCollection.createDoc({ id: 'page2' })); - - return { framework, workspace }; -}; - -beforeEach(async () => { - vi.useFakeTimers({ toFake: ['requestIdleCallback'] }); -}); - -const getWrapper = (framework: FrameworkProvider, workspace: Workspace) => - function Provider({ children }: PropsWithChildren) { - return ( - - {children} - - ); - }; - -describe('useDocCollectionHelper', () => { - test('should create page', async () => { - const { framework, workspace } = await configureTestingWorkspace(); - const docCollection = workspace.docCollection; - const Wrapper = getWrapper(framework, workspace); - - expect(docCollection.meta.docMetas.length).toBe(3); - const helperHook = renderHook(() => useDocCollectionHelper(docCollection), { - wrapper: Wrapper, - }); - const pageMetaHook = renderHook(() => useBlockSuiteDocMeta(docCollection), { - wrapper: Wrapper, - }); - await new Promise(resolve => setTimeout(resolve)); - expect(pageMetaHook.result.current.length).toBe(3); - expect(docCollection.meta.docMetas.length).toBe(3); - const page = helperHook.result.current.createDoc('page4'); - expect(page.id).toBe('page4'); - expect(docCollection.meta.docMetas.length).toBe(4); - pageMetaHook.rerender(); - expect(pageMetaHook.result.current.length).toBe(4); - }); -}); diff --git a/packages/frontend/core/src/hooks/__tests__/use-block-suite-workspace-page-title.spec.tsx b/packages/frontend/core/src/hooks/__tests__/use-block-suite-workspace-page-title.spec.tsx deleted file mode 100644 index 7a48b36d5c..0000000000 --- a/packages/frontend/core/src/hooks/__tests__/use-block-suite-workspace-page-title.spec.tsx +++ /dev/null @@ -1,91 +0,0 @@ -/** - * @vitest-environment happy-dom - */ -import 'fake-indexeddb/auto'; - -import { WorkspacePropertiesAdapter } from '@affine/core/modules/properties'; -import { createI18n } from '@affine/i18n'; -import { render } from '@testing-library/react'; -import { - FrameworkRoot, - FrameworkScope, - useService, - WorkspaceService, -} from '@toeverything/infra'; -import { createStore, Provider } from 'jotai'; -import { Suspense } from 'react'; -import { beforeEach, describe, expect, test, vi } from 'vitest'; - -import { configureTestingEnvironment } from '../../testing'; -import { useDocCollectionPageTitle } from '../use-block-suite-workspace-page-title'; - -const store = createStore(); - -const Component = () => { - const workspaceService = useService(WorkspaceService); - const title = useDocCollectionPageTitle( - workspaceService.workspace.docCollection, - 'page0' - ); - return
title: {title}
; -}; - -beforeEach(async () => { - vi.useFakeTimers({ toFake: ['requestIdleCallback'] }); -}); - -describe('useDocCollectionPageTitle', () => { - test('basic', async () => { - createI18n(); - const { framework, workspace, doc } = await configureTestingEnvironment(); - const { findByText, rerender } = render( - - - - - - - - - - - - ); - expect(await findByText('title: Untitled')).toBeDefined(); - workspace.docCollection.setDocMeta(doc.id, { title: '1' }); - rerender( - - - - - - - - - - - - ); - expect(await findByText('title: 1')).toBeDefined(); - }); - - test('journal', async () => { - const { framework, workspace, doc } = await configureTestingEnvironment(); - const adapter = workspace.scope.get(WorkspacePropertiesAdapter); - adapter.setJournalPageDateString(doc.id, '2021-01-01'); - const { findByText } = render( - - - - - - - - - - - - ); - expect(await findByText('title: Jan 1, 2021')).toBeDefined(); - }); -}); diff --git a/packages/frontend/core/src/modules/app-tabs-header/views/app-tabs-header.tsx b/packages/frontend/core/src/modules/app-tabs-header/views/app-tabs-header.tsx index d3cd48a45a..a8a88e8535 100644 --- a/packages/frontend/core/src/modules/app-tabs-header/views/app-tabs-header.tsx +++ b/packages/frontend/core/src/modules/app-tabs-header/views/app-tabs-header.tsx @@ -12,12 +12,12 @@ import { appSidebarResizingAtom, } from '@affine/core/components/app-sidebar'; import { appSidebarWidthAtom } from '@affine/core/components/app-sidebar/index.jotai'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { apis, events } from '@affine/electron-api'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { CloseIcon, PlusIcon, RightSidebarIcon } from '@blocksuite/icons/rc'; import { useLiveData, diff --git a/packages/frontend/core/src/modules/cloud/services/auth.ts b/packages/frontend/core/src/modules/cloud/services/auth.ts index db987423e0..5e72edc320 100644 --- a/packages/frontend/core/src/modules/cloud/services/auth.ts +++ b/packages/frontend/core/src/modules/cloud/services/auth.ts @@ -1,6 +1,6 @@ -import { track } from '@affine/core/mixpanel'; import { appInfo } from '@affine/electron-api'; import type { OAuthProviderType } from '@affine/graphql'; +import { track } from '@affine/track'; import { ApplicationFocused, ApplicationStarted, diff --git a/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx b/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx index 0db0379902..29d22982b2 100644 --- a/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx +++ b/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx @@ -1,13 +1,13 @@ import { Avatar, ConfirmModal, Input, Switch, toast } from '@affine/component'; import type { ConfirmModalProps } from '@affine/component/ui/modal'; -import { authAtom } from '@affine/core/atoms'; import { CloudSvg } from '@affine/core/components/affine/share-page-modal/cloud-svg'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { authAtom } from '@affine/core/components/atoms'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { DebugLogger } from '@affine/debug'; import { apis } from '@affine/electron-api'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { initEmptyPage, useLiveData, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/collection/index.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/collection/index.tsx index f6ea3d5365..d324168d85 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/collection/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/collection/index.tsx @@ -9,7 +9,6 @@ import { filterPage, useEditCollection, } from '@affine/core/components/page-list'; -import { track } from '@affine/core/mixpanel'; import { CollectionService } from '@affine/core/modules/collection'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { ShareDocsListService } from '@affine/core/modules/share-doc'; @@ -17,6 +16,7 @@ import type { AffineDNDData } from '@affine/core/types/dnd'; import type { Collection } from '@affine/env/filter'; import { PublicPageMode } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { FilterMinusIcon } from '@blocksuite/icons/rc'; import type { DocMeta } from '@blocksuite/store'; import { diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/collection/operations.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/collection/operations.tsx index 9aa6daed6b..c66496ce7f 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/collection/operations.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/collection/operations.tsx @@ -5,13 +5,13 @@ import { useConfirmModal, } from '@affine/component'; import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils'; +import { useDeleteCollectionInfo } from '@affine/core/components/hooks/affine/use-delete-collection-info'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { useDeleteCollectionInfo } from '@affine/core/hooks/affine/use-delete-collection-info'; -import { track } from '@affine/core/mixpanel'; import { CollectionService } from '@affine/core/modules/collection'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DeleteIcon, FilterIcon, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/doc/index.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/doc/index.tsx index cf8f4a6d79..f21de9e321 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/doc/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/doc/index.tsx @@ -6,11 +6,11 @@ import { Tooltip, } from '@affine/component'; import { InfoModal } from '@affine/core/components/affine/page-properties'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { DocsSearchService } from '@affine/core/modules/docs-search'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { EdgelessIcon, LinkedEdgelessIcon, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/doc/operations.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/doc/operations.tsx index fbf1a4b10f..24bbe6dd6f 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/doc/operations.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/doc/operations.tsx @@ -6,13 +6,13 @@ import { useConfirmModal, } from '@affine/component'; import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils'; +import { useBlockSuiteMetaHelper } from '@affine/core/components/hooks/affine/use-block-suite-meta-helper'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { useBlockSuiteMetaHelper } from '@affine/core/hooks/affine/use-block-suite-meta-helper'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; import { CompatibleFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DeleteIcon, DuplicateIcon, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/folder/index.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/folder/index.tsx index c3dc99662a..cc9b6aa339 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/folder/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/folder/index.tsx @@ -15,7 +15,6 @@ import { useSelectDoc, useSelectTag, } from '@affine/core/components/page-list/selector'; -import { track } from '@affine/core/mixpanel'; import { type FolderNode, OrganizeService, @@ -25,6 +24,7 @@ import { WorkbenchService } from '@affine/core/modules/workbench'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { Unreachable } from '@affine/env/constant'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DeleteIcon, FolderIcon, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/tag/index.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/tag/index.tsx index c4d41e4bd0..e2c4af2e0f 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/tag/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/tag/index.tsx @@ -3,11 +3,11 @@ import { type DropTargetOptions, toast, } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import type { Tag } from '@affine/core/modules/tag'; import { TagService } from '@affine/core/modules/tag'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { GlobalContextService, useLiveData, diff --git a/packages/frontend/core/src/modules/explorer/views/nodes/tag/operations.tsx b/packages/frontend/core/src/modules/explorer/views/nodes/tag/operations.tsx index 64a2a6819b..52ffb77f3d 100644 --- a/packages/frontend/core/src/modules/explorer/views/nodes/tag/operations.tsx +++ b/packages/frontend/core/src/modules/explorer/views/nodes/tag/operations.tsx @@ -1,11 +1,11 @@ import { IconButton, MenuItem, MenuSeparator, toast } from '@affine/component'; import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils'; import { IsFavoriteIcon } from '@affine/core/components/pure/icons'; -import { track } from '@affine/core/mixpanel'; import { FavoriteService } from '@affine/core/modules/favorite'; import { TagService } from '@affine/core/modules/tag'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { DeleteIcon, OpenInNewIcon, diff --git a/packages/frontend/core/src/modules/explorer/views/sections/collections/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/collections/index.tsx index 5594c3de6c..81c77fa132 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/collections/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/collections/index.tsx @@ -1,11 +1,11 @@ import { IconButton } from '@affine/component'; import { useEditCollectionName } from '@affine/core/components/page-list'; import { createEmptyCollection } from '@affine/core/components/page-list/use-collection-manager'; -import { track } from '@affine/core/mixpanel'; import { CollectionService } from '@affine/core/modules/collection'; import { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree'; import { WorkbenchService } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { PlusIcon } from '@blocksuite/icons/rc'; import { useLiveData, useServices } from '@toeverything/infra'; import { nanoid } from 'nanoid'; diff --git a/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx index e2730cdb88..054bb2fb0c 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx @@ -4,7 +4,6 @@ import { useDropTarget, } from '@affine/component'; import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils'; -import { track } from '@affine/core/mixpanel'; import { DropEffect, ExplorerTreeRoot, @@ -18,6 +17,7 @@ import { WorkbenchService } from '@affine/core/modules/workbench'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { isNewTabTrigger } from '@affine/core/utils'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { PlusIcon } from '@blocksuite/icons/rc'; import { useLiveData, diff --git a/packages/frontend/core/src/modules/explorer/views/sections/migration-favorites/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/migration-favorites/index.tsx index bb81d22d73..703b9e2df2 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/migration-favorites/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/migration-favorites/index.tsx @@ -1,8 +1,8 @@ import { IconButton, useConfirmModal } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree'; import { MigrationFavoriteItemsAdapter } from '@affine/core/modules/properties'; import { Trans, useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { BroomIcon, HelpIcon } from '@blocksuite/icons/rc'; import { DocsService, useLiveData, useServices } from '@toeverything/infra'; import { useCallback } from 'react'; diff --git a/packages/frontend/core/src/modules/explorer/views/sections/organize/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/organize/index.tsx index 16de2ae154..9928eedc10 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/organize/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/organize/index.tsx @@ -4,7 +4,6 @@ import { IconButton, toast, } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree'; import { type FolderNode, @@ -12,6 +11,7 @@ import { } from '@affine/core/modules/organize'; import type { AffineDNDData } from '@affine/core/types/dnd'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { PlusIcon } from '@blocksuite/icons/rc'; import { useLiveData, useServices } from '@toeverything/infra'; import { useCallback, useEffect, useMemo, useState } from 'react'; diff --git a/packages/frontend/core/src/modules/explorer/views/sections/tags/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/tags/index.tsx index 4def0e4d7c..74abf195b1 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/tags/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/tags/index.tsx @@ -1,9 +1,9 @@ import { IconButton } from '@affine/component'; -import { track } from '@affine/core/mixpanel'; import { ExplorerTreeRoot } from '@affine/core/modules/explorer/views/tree'; import type { Tag } from '@affine/core/modules/tag'; import { TagService } from '@affine/core/modules/tag'; import { useI18n } from '@affine/i18n'; +import { track } from '@affine/track'; import { PlusIcon } from '@blocksuite/icons/rc'; import { useLiveData, useServices } from '@toeverything/infra'; import { useCallback, useEffect, useState } from 'react'; diff --git a/packages/frontend/core/src/modules/import-template/views/dialog.tsx b/packages/frontend/core/src/modules/import-template/views/dialog.tsx index a3b0060f00..c5bc3cdc8d 100644 --- a/packages/frontend/core/src/modules/import-template/views/dialog.tsx +++ b/packages/frontend/core/src/modules/import-template/views/dialog.tsx @@ -1,8 +1,8 @@ import { Button, Modal } from '@affine/component'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; +import { useWorkspaceName } from '@affine/core/components/hooks/use-workspace-info'; import { WorkspaceSelector } from '@affine/core/components/workspace-selector'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; -import { useWorkspaceName } from '@affine/core/hooks/use-workspace-info'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useI18n } from '@affine/i18n'; import { AllDocsIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/modules/navigation/view/use-register-navigation-commands.ts b/packages/frontend/core/src/modules/navigation/view/use-register-navigation-commands.ts index 32307240b1..3f158eb23a 100644 --- a/packages/frontend/core/src/modules/navigation/view/use-register-navigation-commands.ts +++ b/packages/frontend/core/src/modules/navigation/view/use-register-navigation-commands.ts @@ -2,7 +2,7 @@ import { PreconditionStrategy, registerAffineCommand, } from '@affine/core/commands'; -import { track } from '@affine/core/mixpanel'; +import { track } from '@affine/track'; import { useService } from '@toeverything/infra'; import { useEffect } from 'react'; diff --git a/packages/frontend/core/src/modules/peek-view/view/image-preview/index.tsx b/packages/frontend/core/src/modules/peek-view/view/image-preview/index.tsx index 848b74b447..f7db5592a7 100644 --- a/packages/frontend/core/src/modules/peek-view/view/image-preview/index.tsx +++ b/packages/frontend/core/src/modules/peek-view/view/image-preview/index.tsx @@ -1,6 +1,6 @@ import { toast } from '@affine/component'; import { Button, IconButton } from '@affine/component/ui/button'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import type { ImageBlockModel } from '@blocksuite/blocks'; import { assertExists } from '@blocksuite/global/utils'; import { diff --git a/packages/frontend/core/src/modules/quicksearch/services/cmdk.ts b/packages/frontend/core/src/modules/quicksearch/services/cmdk.ts index 92e7e585fd..9691459ec9 100644 --- a/packages/frontend/core/src/modules/quicksearch/services/cmdk.ts +++ b/packages/frontend/core/src/modules/quicksearch/services/cmdk.ts @@ -1,4 +1,4 @@ -import { track } from '@affine/core/mixpanel'; +import { track } from '@affine/track'; import type { DocsService } from '@toeverything/infra'; import { Service } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/modules/telemetry/services/telemetry.ts b/packages/frontend/core/src/modules/telemetry/services/telemetry.ts index 81b1fabeb1..6831858025 100644 --- a/packages/frontend/core/src/modules/telemetry/services/telemetry.ts +++ b/packages/frontend/core/src/modules/telemetry/services/telemetry.ts @@ -1,6 +1,5 @@ -import { mixpanel } from '@affine/core/mixpanel'; -import type { EventProps } from '@affine/core/mixpanel/types'; import type { QuotaQuery } from '@affine/graphql'; +import { mixpanel } from '@affine/track'; import type { GlobalContextService } from '@toeverything/infra'; import { ApplicationStarted, OnEvent, Service } from '@toeverything/infra'; @@ -72,7 +71,7 @@ export class TelemetryService extends Service { ); } - extractGlobalContext(): EventProps { + extractGlobalContext(): { page?: string } { const globalContext = this.globalContextService.globalContext; const page = globalContext.isDoc.get() ? globalContext.isTrashDoc.get() diff --git a/packages/frontend/core/src/modules/workbench/services/workbench.ts b/packages/frontend/core/src/modules/workbench/services/workbench.ts index dad8ba3f68..bf6d3fe37d 100644 --- a/packages/frontend/core/src/modules/workbench/services/workbench.ts +++ b/packages/frontend/core/src/modules/workbench/services/workbench.ts @@ -1,4 +1,4 @@ -import { mixpanel } from '@affine/core/mixpanel'; +import { mixpanel } from '@affine/track'; import { createEvent, Service } from '@toeverything/infra'; import { combineLatest, distinctUntilChanged, map, skip } from 'rxjs'; diff --git a/packages/frontend/core/src/modules/workbench/view/split-view/split-view.tsx b/packages/frontend/core/src/modules/workbench/view/split-view/split-view.tsx index 9c41763bad..4207929568 100644 --- a/packages/frontend/core/src/modules/workbench/view/split-view/split-view.tsx +++ b/packages/frontend/core/src/modules/workbench/view/split-view/split-view.tsx @@ -1,4 +1,4 @@ -import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper'; +import { useAppSettingHelper } from '@affine/core/components/hooks/affine/use-app-setting-helper'; import type { DragEndEvent } from '@dnd-kit/core'; import { closestCenter, diff --git a/packages/frontend/core/src/modules/workbench/view/workbench-link.tsx b/packages/frontend/core/src/modules/workbench/view/workbench-link.tsx index c430ab3ac6..79847a1a4c 100644 --- a/packages/frontend/core/src/modules/workbench/view/workbench-link.tsx +++ b/packages/frontend/core/src/modules/workbench/view/workbench-link.tsx @@ -1,4 +1,4 @@ -import { useCatchEventCallback } from '@affine/core/hooks/use-catch-event-hook'; +import { useCatchEventCallback } from '@affine/core/components/hooks/use-catch-event-hook'; import { isNewTabTrigger } from '@affine/core/utils'; import { FeatureFlagService, diff --git a/packages/frontend/core/src/modules/workbench/view/workbench-root.tsx b/packages/frontend/core/src/modules/workbench/view/workbench-root.tsx index 89fd9fdd86..81a5799015 100644 --- a/packages/frontend/core/src/modules/workbench/view/workbench-root.tsx +++ b/packages/frontend/core/src/modules/workbench/view/workbench-root.tsx @@ -1,5 +1,5 @@ import { ResizePanel } from '@affine/component/resize-panel'; -import { rightSidebarWidthAtom } from '@affine/core/atoms'; +import { rightSidebarWidthAtom } from '@affine/core/components/atoms'; import { workspaceRoutes } from '@affine/core/workspace-router'; import { appSettingAtom, diff --git a/packages/frontend/core/src/pages/404.tsx b/packages/frontend/core/src/pages/404.tsx index 5e350becd2..40f33c02b7 100644 --- a/packages/frontend/core/src/pages/404.tsx +++ b/packages/frontend/core/src/pages/404.tsx @@ -2,14 +2,17 @@ import { NoPermissionOrNotFound, NotFoundPage, } from '@affine/component/not-found-page'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { apis } from '@affine/electron-api'; import { useLiveData, useService } from '@toeverything/infra'; import type { ReactElement } from 'react'; import { useCallback, useEffect, useState } from 'react'; import { SignOutModal } from '../components/affine/sign-out-modal'; -import { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper'; +import { + RouteLogic, + useNavigateHelper, +} from '../components/hooks/use-navigate-helper'; import { AuthService } from '../modules/cloud'; import { SignIn } from './auth/sign-in'; diff --git a/packages/frontend/core/src/pages/auth/auth.tsx b/packages/frontend/core/src/pages/auth/auth.tsx index 9bb3bb6269..c45566f2c9 100644 --- a/packages/frontend/core/src/pages/auth/auth.tsx +++ b/packages/frontend/core/src/pages/auth/auth.tsx @@ -23,8 +23,11 @@ import type { LoaderFunction } from 'react-router-dom'; import { redirect, useParams, useSearchParams } from 'react-router-dom'; import { z } from 'zod'; -import { useMutation } from '../../hooks/use-mutation'; -import { RouteLogic, useNavigateHelper } from '../../hooks/use-navigate-helper'; +import { useMutation } from '../../components/hooks/use-mutation'; +import { + RouteLogic, + useNavigateHelper, +} from '../../components/hooks/use-navigate-helper'; import { AuthService, ServerConfigService } from '../../modules/cloud'; const authTypeSchema = z.enum([ diff --git a/packages/frontend/core/src/pages/auth/sign-in.tsx b/packages/frontend/core/src/pages/auth/sign-in.tsx index eff07bee80..707db9516e 100644 --- a/packages/frontend/core/src/pages/auth/sign-in.tsx +++ b/packages/frontend/core/src/pages/auth/sign-in.tsx @@ -7,7 +7,10 @@ import { useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { AuthPanel } from '../../components/affine/auth'; -import { RouteLogic, useNavigateHelper } from '../../hooks/use-navigate-helper'; +import { + RouteLogic, + useNavigateHelper, +} from '../../components/hooks/use-navigate-helper'; export const SignIn = () => { const session = useService(AuthService).session; diff --git a/packages/frontend/core/src/pages/expired.tsx b/packages/frontend/core/src/pages/expired.tsx index 36211e1e35..5d2d70339f 100644 --- a/packages/frontend/core/src/pages/expired.tsx +++ b/packages/frontend/core/src/pages/expired.tsx @@ -3,7 +3,10 @@ import { Button } from '@affine/component/ui/button'; import { useI18n } from '@affine/i18n'; import { useCallback } from 'react'; -import { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper'; +import { + RouteLogic, + useNavigateHelper, +} from '../components/hooks/use-navigate-helper'; export const Component = () => { const t = useI18n(); diff --git a/packages/frontend/core/src/pages/import-template.tsx b/packages/frontend/core/src/pages/import-template.tsx index 8a67cc0d80..e21eb83afe 100644 --- a/packages/frontend/core/src/pages/import-template.tsx +++ b/packages/frontend/core/src/pages/import-template.tsx @@ -2,7 +2,7 @@ import { useService } from '@toeverything/infra'; import { useEffect } from 'react'; import { useSearchParams } from 'react-router-dom'; -import { useNavigateHelper } from '../hooks/use-navigate-helper'; +import { useNavigateHelper } from '../components/hooks/use-navigate-helper'; import { ImportTemplateDialogService } from '../modules/import-template'; export const Component = () => { diff --git a/packages/frontend/core/src/pages/index.tsx b/packages/frontend/core/src/pages/index.tsx index e29423ea7f..4c2948fc80 100644 --- a/packages/frontend/core/src/pages/index.tsx +++ b/packages/frontend/core/src/pages/index.tsx @@ -19,19 +19,18 @@ import { createFirstAppData, } from '../bootstrap/first-app-data'; import { AppFallback } from '../components/affine/app-container'; +import { useNavigateHelper } from '../components/hooks/use-navigate-helper'; import { WorkspaceNavigator } from '../components/workspace-selector'; -import { useNavigateHelper } from '../hooks/use-navigate-helper'; import { AuthService } from '../modules/cloud'; -import { WorkspaceSubPath } from '../shared'; export const loader: LoaderFunction = async () => { return null; }; export const Component = ({ - defaultIndexRoute = WorkspaceSubPath.ALL, + defaultIndexRoute = 'all', }: { - defaultIndexRoute?: WorkspaceSubPath; + defaultIndexRoute?: string; }) => { // navigating and creating may be slow, to avoid flickering, we show workspace fallback const [navigating, setNavigating] = useState(true); @@ -131,7 +130,7 @@ export const Component = ({ createdWorkspace.defaultPageId ); } else { - openPage(createdWorkspace.meta.id, WorkspaceSubPath.ALL); + openPage(createdWorkspace.meta.id, 'all'); } } }) diff --git a/packages/frontend/core/src/pages/invite.tsx b/packages/frontend/core/src/pages/invite.tsx index c28cb4b31a..54684b52e6 100644 --- a/packages/frontend/core/src/pages/invite.tsx +++ b/packages/frontend/core/src/pages/invite.tsx @@ -1,5 +1,4 @@ import { AcceptInvitePage } from '@affine/component/member-components'; -import { WorkspaceSubPath } from '@affine/core/shared'; import type { GetInviteInfoQuery } from '@affine/graphql'; import { acceptInviteByInviteIdMutation, @@ -12,8 +11,11 @@ import { useCallback, useEffect } from 'react'; import type { LoaderFunction } from 'react-router-dom'; import { redirect, useLoaderData } from 'react-router-dom'; -import { authAtom } from '../atoms'; -import { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper'; +import { authAtom } from '../components/atoms'; +import { + RouteLogic, + useNavigateHelper, +} from '../components/hooks/use-navigate-helper'; import { AuthService } from '../modules/cloud'; export const loader: LoaderFunction = async args => { @@ -56,7 +58,7 @@ export const Component = () => { }, [authService]); const { jumpToSignIn } = useNavigateHelper(); - const { jumpToSubPath } = useNavigateHelper(); + const { jumpToPage } = useNavigateHelper(); const setAuthAtom = useSetAtom(authAtom); const { inviteInfo } = useLoaderData() as { @@ -65,12 +67,8 @@ export const Component = () => { }; const openWorkspace = useCallback(() => { - jumpToSubPath( - inviteInfo.workspace.id, - WorkspaceSubPath.ALL, - RouteLogic.REPLACE - ); - }, [inviteInfo.workspace.id, jumpToSubPath]); + jumpToPage(inviteInfo.workspace.id, 'all', RouteLogic.REPLACE); + }, [inviteInfo.workspace.id, jumpToPage]); useEffect(() => { if (loginStatus === 'unauthenticated' && !isRevalidating) { diff --git a/packages/frontend/core/src/pages/onboarding.tsx b/packages/frontend/core/src/pages/onboarding.tsx index bdb42c7953..f67e857eb2 100644 --- a/packages/frontend/core/src/pages/onboarding.tsx +++ b/packages/frontend/core/src/pages/onboarding.tsx @@ -7,8 +7,11 @@ import { Onboarding } from '../components/affine/onboarding/onboarding'; import { appConfigStorage, useAppConfigStorage, -} from '../hooks/use-app-config-storage'; -import { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper'; +} from '../components/hooks/use-app-config-storage'; +import { + RouteLogic, + useNavigateHelper, +} from '../components/hooks/use-navigate-helper'; export const loader = () => { if (!BUILD_CONFIG.isElectron && !appConfigStorage.get('onBoarding')) { diff --git a/packages/frontend/core/src/pages/root.tsx b/packages/frontend/core/src/pages/root.tsx index 007836e1c1..5f908381b5 100644 --- a/packages/frontend/core/src/pages/root.tsx +++ b/packages/frontend/core/src/pages/root.tsx @@ -1,6 +1,6 @@ import { Outlet } from 'react-router-dom'; -import { AllWorkspaceModals } from '../providers/modal-provider'; +import { AllWorkspaceModals } from '../components/providers/modal-provider'; export const RootWrapper = () => { return ( diff --git a/packages/frontend/core/src/pages/subscribe.tsx b/packages/frontend/core/src/pages/subscribe.tsx index 4c33fba543..8b885eef3c 100644 --- a/packages/frontend/core/src/pages/subscribe.tsx +++ b/packages/frontend/core/src/pages/subscribe.tsx @@ -1,14 +1,17 @@ import { Button, Loading } from '@affine/component'; import { SubscriptionPlan, SubscriptionRecurring } from '@affine/graphql'; +import { mixpanel, track } from '@affine/track'; import { effect, fromPromise, useServices } from '@toeverything/infra'; import { nanoid } from 'nanoid'; import { useEffect, useMemo, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { EMPTY, mergeMap, switchMap } from 'rxjs'; -import { generateSubscriptionCallbackLink } from '../hooks/affine/use-subscription-notify'; -import { RouteLogic, useNavigateHelper } from '../hooks/use-navigate-helper'; -import { mixpanel, track } from '../mixpanel'; +import { generateSubscriptionCallbackLink } from '../components/hooks/affine/use-subscription-notify'; +import { + RouteLogic, + useNavigateHelper, +} from '../components/hooks/use-navigate-helper'; import { AuthService, SubscriptionService } from '../modules/cloud'; import { container } from './subscribe.css'; diff --git a/packages/frontend/core/src/pages/workspace/all-collection/index.tsx b/packages/frontend/core/src/pages/workspace/all-collection/index.tsx index 726a8143cd..7ac6832ebc 100644 --- a/packages/frontend/core/src/pages/workspace/all-collection/index.tsx +++ b/packages/frontend/core/src/pages/workspace/all-collection/index.tsx @@ -1,3 +1,4 @@ +import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; import type { CollectionMeta } from '@affine/core/components/page-list'; import { CollectionListHeader, @@ -5,7 +6,6 @@ import { useEditCollectionName, VirtualizedCollectionList, } from '@affine/core/components/page-list'; -import { useNavigateHelper } from '@affine/core/hooks/use-navigate-helper'; import { ViewIcon, ViewTitle, diff --git a/packages/frontend/core/src/pages/workspace/all-page/all-page-filter.tsx b/packages/frontend/core/src/pages/workspace/all-page/all-page-filter.tsx index 33a0f9eac5..4ed29e37f0 100644 --- a/packages/frontend/core/src/pages/workspace/all-page/all-page-filter.tsx +++ b/packages/frontend/core/src/pages/workspace/all-page/all-page-filter.tsx @@ -4,11 +4,11 @@ import { useService, WorkspaceService } from '@toeverything/infra'; import { useCallback } from 'react'; import { filterContainerStyle } from '../../../components/filter-container.css'; +import { useNavigateHelper } from '../../../components/hooks/use-navigate-helper'; import { FilterList, SaveAsCollectionButton, } from '../../../components/page-list'; -import { useNavigateHelper } from '../../../hooks/use-navigate-helper'; export const FilterContainer = ({ filters, diff --git a/packages/frontend/core/src/pages/workspace/all-page/all-page-header.tsx b/packages/frontend/core/src/pages/workspace/all-page/all-page-header.tsx index f7d4c55477..c67ac82122 100644 --- a/packages/frontend/core/src/pages/workspace/all-page/all-page-header.tsx +++ b/packages/frontend/core/src/pages/workspace/all-page/all-page-header.tsx @@ -1,4 +1,5 @@ import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { AllPageListOperationsMenu, PageDisplayMenu, @@ -6,10 +7,9 @@ import { } from '@affine/core/components/page-list'; import { Header } from '@affine/core/components/pure/header'; import { WorkspaceModeFilterTab } from '@affine/core/components/pure/workspace-mode-filter-tab'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; -import { track } from '@affine/core/mixpanel'; import { isNewTabTrigger } from '@affine/core/utils'; import type { Filter } from '@affine/env/filter'; +import { track } from '@affine/track'; import { PlusIcon } from '@blocksuite/icons/rc'; import { useServices, WorkspaceService } from '@toeverything/infra'; import clsx from 'clsx'; diff --git a/packages/frontend/core/src/pages/workspace/all-page/all-page.tsx b/packages/frontend/core/src/pages/workspace/all-page/all-page.tsx index ec928e3949..7a9da33787 100644 --- a/packages/frontend/core/src/pages/workspace/all-page/all-page.tsx +++ b/packages/frontend/core/src/pages/workspace/all-page/all-page.tsx @@ -1,10 +1,9 @@ +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { PageListHeader, useFilteredPageMetas, VirtualizedPageList, } from '@affine/core/components/page-list'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; -import { performanceRenderLogger } from '@affine/core/shared'; import type { Filter } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; import { @@ -81,7 +80,5 @@ export const AllPage = () => { }; export const Component = () => { - performanceRenderLogger.debug('AllPage'); - return ; }; diff --git a/packages/frontend/core/src/pages/workspace/collection/index.tsx b/packages/frontend/core/src/pages/workspace/collection/index.tsx index fa1f5e7454..2861241107 100644 --- a/packages/frontend/core/src/pages/workspace/collection/index.tsx +++ b/packages/frontend/core/src/pages/workspace/collection/index.tsx @@ -1,10 +1,10 @@ import { notify } from '@affine/component'; import { EmptyCollectionDetail } from '@affine/core/components/affine/empty/collection-detail'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useEditCollection, VirtualizedPageList, } from '@affine/core/components/page-list'; -import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks'; import { CollectionService } from '@affine/core/modules/collection'; import type { Collection } from '@affine/env/filter'; import { useI18n } from '@affine/i18n'; @@ -19,7 +19,7 @@ import { import { useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; -import { useNavigateHelper } from '../../../hooks/use-navigate-helper'; +import { useNavigateHelper } from '../../../components/hooks/use-navigate-helper'; import { useIsActiveView, ViewBody, @@ -27,7 +27,6 @@ import { ViewIcon, ViewTitle, } from '../../../modules/workbench'; -import { WorkspaceSubPath } from '../../../shared'; import { CollectionDetailHeader } from './header'; export const CollectionDetail = ({ @@ -77,7 +76,7 @@ export const Component = function CollectionPage() { const isActiveView = useIsActiveView(); const notifyCollectionDeleted = useCallback(() => { - navigate.jumpToSubPath(workspace.id, WorkspaceSubPath.ALL); + navigate.jumpToPage(workspace.id, 'all'); const collection = collectionService.collectionsTrash$.value.find( v => v.collection.id === params.collectionId ); diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page-header.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page-header.tsx index bf03f1ef94..5019bfddbe 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page-header.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page-header.tsx @@ -3,8 +3,8 @@ import { type InlineEditHandle, observeResize, } from '@affine/component'; -import { openInfoModalAtom } from '@affine/core/atoms'; import { InfoModal } from '@affine/core/components/affine/page-properties'; +import { openInfoModalAtom } from '@affine/core/components/atoms'; import { FavoriteButton } from '@affine/core/components/blocksuite/block-suite-header/favorite'; import { InfoButton } from '@affine/core/components/blocksuite/block-suite-header/info'; import { JournalWeekDatePicker } from '@affine/core/components/blocksuite/block-suite-header/journal/date-picker'; @@ -12,9 +12,9 @@ import { JournalTodayButton } from '@affine/core/components/blocksuite/block-sui import { PageHeaderMenuButton } from '@affine/core/components/blocksuite/block-suite-header/menu'; import { DetailPageHeaderPresentButton } from '@affine/core/components/blocksuite/block-suite-header/present/detail-header-present-button'; import { EditorModeSwitch } from '@affine/core/components/blocksuite/block-suite-mode-switch'; -import { useRegisterCopyLinkCommands } from '@affine/core/hooks/affine/use-register-copy-link-commands'; -import { useDocCollectionPageTitle } from '@affine/core/hooks/use-block-suite-workspace-page-title'; -import { useJournalInfoHelper } from '@affine/core/hooks/use-journal'; +import { useRegisterCopyLinkCommands } from '@affine/core/components/hooks/affine/use-register-copy-link-commands'; +import { useDocCollectionPageTitle } from '@affine/core/components/hooks/use-block-suite-workspace-page-title'; +import { useJournalInfoHelper } from '@affine/core/components/hooks/use-journal'; import { EditorService } from '@affine/core/modules/editor'; import { ViewIcon, ViewTitle } from '@affine/core/modules/workbench'; import type { Doc } from '@blocksuite/store'; diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx index 4f03ba0048..765fffa17d 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx @@ -4,8 +4,8 @@ import type { ChatPanel } from '@affine/core/blocksuite/presets/ai'; import { AIProvider } from '@affine/core/blocksuite/presets/ai'; import { PageAIOnboarding } from '@affine/core/components/affine/ai-onboarding'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; -import { useAppSettingHelper } from '@affine/core/hooks/affine/use-app-setting-helper'; -import { useDocMetaHelper } from '@affine/core/hooks/use-block-suite-page-meta'; +import { useAppSettingHelper } from '@affine/core/components/hooks/affine/use-app-setting-helper'; +import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { EditorService } from '@affine/core/modules/editor'; import { RecentDocsService } from '@affine/core/modules/quicksearch'; import { ViewService } from '@affine/core/modules/workbench/services/view'; @@ -29,13 +29,13 @@ import { useParams } from 'react-router-dom'; import { AffineErrorBoundary } from '../../../components/affine/affine-error-boundary'; import { GlobalPageHistoryModal } from '../../../components/affine/page-history-modal'; +import { useRegisterBlocksuiteEditorCommands } from '../../../components/hooks/affine/use-register-blocksuite-editor-commands'; +import { useActiveBlocksuiteEditor } from '../../../components/hooks/use-block-suite-editor'; +import { usePageDocumentTitle } from '../../../components/hooks/use-global-state'; +import { useNavigateHelper } from '../../../components/hooks/use-navigate-helper'; import { PageDetailEditor } from '../../../components/page-detail-editor'; import { TrashPageFooter } from '../../../components/pure/trash-page-footer'; import { TopTip } from '../../../components/top-tip'; -import { useRegisterBlocksuiteEditorCommands } from '../../../hooks/affine/use-register-blocksuite-editor-commands'; -import { useActiveBlocksuiteEditor } from '../../../hooks/use-block-suite-editor'; -import { usePageDocumentTitle } from '../../../hooks/use-global-state'; -import { useNavigateHelper } from '../../../hooks/use-navigate-helper'; import { useIsActiveView, ViewBody, @@ -43,7 +43,6 @@ import { ViewSidebarTab, WorkbenchService, } from '../../../modules/workbench'; -import { performanceRenderLogger } from '../../../shared'; import { PageNotFound } from '../../404'; import * as styles from './detail-page.css'; import { DetailPageHeader } from './detail-page-header'; @@ -280,8 +279,6 @@ const DetailPageImpl = memo(function DetailPageImpl() { }); export const Component = () => { - performanceRenderLogger.debug('DetailPage'); - const params = useParams(); const recentPages = useService(RecentDocsService); diff --git a/packages/frontend/core/src/pages/workspace/detail-page/tabs/journal.tsx b/packages/frontend/core/src/pages/workspace/detail-page/tabs/journal.tsx index 22ed324c87..9b34882e00 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/tabs/journal.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/tabs/journal.tsx @@ -1,13 +1,13 @@ import type { DateCell } from '@affine/component'; import { DatePicker, IconButton, Menu, Scrollable } from '@affine/component'; -import { MoveToTrash } from '@affine/core/components/page-list'; -import { useTrashModalHelper } from '@affine/core/hooks/affine/use-trash-modal-helper'; -import { useDocCollectionPageTitle } from '@affine/core/hooks/use-block-suite-workspace-page-title'; +import { useTrashModalHelper } from '@affine/core/components/hooks/affine/use-trash-modal-helper'; +import { useDocCollectionPageTitle } from '@affine/core/components/hooks/use-block-suite-workspace-page-title'; import { useJournalHelper, useJournalInfoHelper, useJournalRouteHelper, -} from '@affine/core/hooks/use-journal'; +} from '@affine/core/components/hooks/use-journal'; +import { MoveToTrash } from '@affine/core/components/page-list'; import { WorkbenchLink } from '@affine/core/modules/workbench'; import { useI18n } from '@affine/i18n'; import { diff --git a/packages/frontend/core/src/pages/workspace/index.tsx b/packages/frontend/core/src/pages/workspace/index.tsx index 126abc98ab..fa8eb40c47 100644 --- a/packages/frontend/core/src/pages/workspace/index.tsx +++ b/packages/frontend/core/src/pages/workspace/index.tsx @@ -15,9 +15,8 @@ import { useEffect, useLayoutEffect, useMemo, useState } from 'react'; import { matchPath, useLocation, useParams } from 'react-router-dom'; import { AffineErrorBoundary } from '../../components/affine/affine-error-boundary'; -import { WorkspaceLayout } from '../../layouts/workspace-layout'; +import { WorkspaceLayout } from '../../components/layouts/workspace-layout'; import { WorkbenchRoot } from '../../modules/workbench'; -import { performanceRenderLogger } from '../../shared'; import { PageNotFound } from '../404'; import { SharePage } from './share/share-page'; @@ -37,7 +36,6 @@ declare global { } export const Component = (): ReactElement => { - performanceRenderLogger.debug('WorkspaceLayout'); const { workspacesService } = useServices({ WorkspacesService, }); diff --git a/packages/frontend/core/src/pages/workspace/share/share-page.tsx b/packages/frontend/core/src/pages/workspace/share/share-page.tsx index df8b3eb095..e1fa0cc116 100644 --- a/packages/frontend/core/src/pages/workspace/share/share-page.tsx +++ b/packages/frontend/core/src/pages/workspace/share/share-page.tsx @@ -1,11 +1,11 @@ import { Scrollable } from '@affine/component'; import { AppFallback } from '@affine/core/components/affine/app-container'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; +import { useActiveBlocksuiteEditor } from '@affine/core/components/hooks/use-block-suite-editor'; +import { usePageDocumentTitle } from '@affine/core/components/hooks/use-global-state'; import { PageDetailEditor } from '@affine/core/components/page-detail-editor'; import { SharePageNotFoundError } from '@affine/core/components/share-page-not-found-error'; import { AppContainer, MainContainer } from '@affine/core/components/workspace'; -import { useActiveBlocksuiteEditor } from '@affine/core/hooks/use-block-suite-editor'; -import { usePageDocumentTitle } from '@affine/core/hooks/use-global-state'; import { AuthService } from '@affine/core/modules/cloud'; import { type Editor, diff --git a/packages/frontend/core/src/pages/workspace/tag/index.tsx b/packages/frontend/core/src/pages/workspace/tag/index.tsx index 6f1efda891..5736e69661 100644 --- a/packages/frontend/core/src/pages/workspace/tag/index.tsx +++ b/packages/frontend/core/src/pages/workspace/tag/index.tsx @@ -1,8 +1,8 @@ +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { TagPageListHeader, VirtualizedPageList, } from '@affine/core/components/page-list'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; import { TagService } from '@affine/core/modules/tag'; import { useIsActiveView, diff --git a/packages/frontend/core/src/pages/workspace/trash-page.tsx b/packages/frontend/core/src/pages/workspace/trash-page.tsx index 6de6f28715..a56747e79b 100644 --- a/packages/frontend/core/src/pages/workspace/trash-page.tsx +++ b/packages/frontend/core/src/pages/workspace/trash-page.tsx @@ -1,9 +1,9 @@ +import { useBlockSuiteDocMeta } from '@affine/core/components/hooks/use-block-suite-page-meta'; import { useFilteredPageMetas, VirtualizedTrashList, } from '@affine/core/components/page-list'; import { Header } from '@affine/core/components/pure/header'; -import { useBlockSuiteDocMeta } from '@affine/core/hooks/use-block-suite-page-meta'; import { useI18n } from '@affine/i18n'; import { assertExists } from '@blocksuite/global/utils'; import { DeleteIcon } from '@blocksuite/icons/rc'; diff --git a/packages/frontend/core/src/router.tsx b/packages/frontend/core/src/router.tsx index dcaf04565e..ee5be8cc3a 100644 --- a/packages/frontend/core/src/router.tsx +++ b/packages/frontend/core/src/router.tsx @@ -8,7 +8,7 @@ import { useNavigate, } from 'react-router-dom'; -import { NavigateContext } from './hooks/use-navigate-helper'; +import { NavigateContext } from './components/hooks/use-navigate-helper'; import { RootWrapper } from './pages/root'; export function RootRouter() { diff --git a/packages/frontend/core/src/shared/index.ts b/packages/frontend/core/src/shared/index.ts deleted file mode 100644 index 2b1e3af440..0000000000 --- a/packages/frontend/core/src/shared/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { DebugLogger } from '@affine/debug'; - -export enum WorkspaceSubPath { - ALL = 'all', - TRASH = 'trash', - SHARED = 'shared', - HOME = 'home', -} - -export const WorkspaceSubPathName = { - [WorkspaceSubPath.ALL]: 'All Pages', - [WorkspaceSubPath.TRASH]: 'Trash', - [WorkspaceSubPath.SHARED]: 'Shared', - [WorkspaceSubPath.HOME]: 'Home', -} satisfies { - [Path in WorkspaceSubPath]: string; -}; - -export const pathGenerator = { - all: workspaceId => `/workspace/${workspaceId}/all`, - trash: workspaceId => `/workspace/${workspaceId}/trash`, - shared: workspaceId => `/workspace/${workspaceId}/shared`, - home: workspaceId => `/workspace/${workspaceId}/home`, -} satisfies { - [Path in WorkspaceSubPath]: (workspaceId: string) => string; -}; - -export const performanceLogger = new DebugLogger('performance'); -export const performanceRenderLogger = performanceLogger.namespace('render'); diff --git a/packages/frontend/core/src/testing.ts b/packages/frontend/core/src/testing.ts deleted file mode 100644 index 71fe011463..0000000000 --- a/packages/frontend/core/src/testing.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { WorkspaceFlavour } from '@affine/env/workspace'; -import type { Doc as BlockSuiteDoc } from '@blocksuite/store'; -import { - configureTestingInfraModules, - DocsService, - Framework, - WorkspacesService, -} from '@toeverything/infra'; - -import { configureCommonModules } from './modules'; - -export async function configureTestingEnvironment() { - const framework = new Framework(); - - configureCommonModules(framework); - configureTestingInfraModules(framework); - - const frameworkProvider = framework.provider(); - - const workspaceManager = frameworkProvider.get(WorkspacesService); - - const { workspace } = workspaceManager.open({ - metadata: await workspaceManager.create( - WorkspaceFlavour.LOCAL, - async ws => { - ws.meta.initialize(); - const initDoc = async (page: BlockSuiteDoc) => { - page.load(); - const pageBlockId = page.addBlock('affine:page', { - title: new page.Text(''), - }); - const frameId = page.addBlock('affine:note', {}, pageBlockId); - page.addBlock('affine:paragraph', {}, frameId); - }; - await initDoc(ws.createDoc({ id: 'page0' })); - } - ), - }); - - await workspace.engine.waitForDocSynced(); - - const { doc } = workspace.scope.get(DocsService).open('page0'); - - return { framework: frameworkProvider, workspace, doc }; -} diff --git a/packages/frontend/core/src/unexpected-application-state/errors.ts b/packages/frontend/core/src/unexpected-application-state/errors.ts deleted file mode 100644 index 9fe04fd1dc..0000000000 --- a/packages/frontend/core/src/unexpected-application-state/errors.ts +++ /dev/null @@ -1,31 +0,0 @@ -export abstract class RecoverableError extends Error { - protected ttl = 3; - - canRetry(): boolean { - return this.ttl > 0; - } - - abstract retry(): void | Promise; -} - -// the first session request failed after login or signup succeed. -// should give a hint to the user to refetch the session. -export class SessionFetchErrorRightAfterLoginOrSignUp extends RecoverableError { - constructor( - message: string, - private readonly onRetry: () => void - ) { - super(message); - } - - retry(): void { - if (this.ttl <= 0) { - return; - } - try { - this.onRetry(); - } finally { - this.ttl--; - } - } -} diff --git a/packages/frontend/track/package.json b/packages/frontend/track/package.json new file mode 100644 index 0000000000..7616f7729c --- /dev/null +++ b/packages/frontend/track/package.json @@ -0,0 +1,17 @@ +{ + "name": "@affine/track", + "type": "module", + "private": true, + "version": "0.16.0", + "exports": { + ".": "./src/index.ts" + }, + "sideEffects": "false", + "dependencies": { + "@affine/debug": "workspace:*", + "mixpanel-browser": "^2.49.0" + }, + "devDependencies": { + "vitest": "^2.0.5" + } +} diff --git a/packages/frontend/core/src/mixpanel/__tests__/auto.spec.ts b/packages/frontend/track/src/__tests__/auto.spec.ts similarity index 100% rename from packages/frontend/core/src/mixpanel/__tests__/auto.spec.ts rename to packages/frontend/track/src/__tests__/auto.spec.ts diff --git a/packages/frontend/core/src/mixpanel/auto.ts b/packages/frontend/track/src/auto.ts similarity index 100% rename from packages/frontend/core/src/mixpanel/auto.ts rename to packages/frontend/track/src/auto.ts diff --git a/packages/frontend/core/src/mixpanel/events.ts b/packages/frontend/track/src/events.ts similarity index 100% rename from packages/frontend/core/src/mixpanel/events.ts rename to packages/frontend/track/src/events.ts diff --git a/packages/frontend/core/src/mixpanel/index.ts b/packages/frontend/track/src/index.ts similarity index 91% rename from packages/frontend/core/src/mixpanel/index.ts rename to packages/frontend/track/src/index.ts index 6d962ddc64..02ffebded4 100644 --- a/packages/frontend/core/src/mixpanel/index.ts +++ b/packages/frontend/track/src/index.ts @@ -6,3 +6,4 @@ export const track = makeTracker((event, props) => { }); export { enableAutoTrack, mixpanel }; +export default track; diff --git a/packages/frontend/core/src/mixpanel/mixpanel.ts b/packages/frontend/track/src/mixpanel.ts similarity index 100% rename from packages/frontend/core/src/mixpanel/mixpanel.ts rename to packages/frontend/track/src/mixpanel.ts diff --git a/packages/frontend/core/src/mixpanel/types.ts b/packages/frontend/track/src/types.ts similarity index 100% rename from packages/frontend/core/src/mixpanel/types.ts rename to packages/frontend/track/src/types.ts diff --git a/packages/frontend/track/tsconfig.json b/packages/frontend/track/tsconfig.json new file mode 100644 index 0000000000..335e464abc --- /dev/null +++ b/packages/frontend/track/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "lib", + "typeRoots": ["../../../node_modules", "../../../node_modules/@types"], + "types": ["affine__env"] + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.json"], + "exclude": ["node_modules"], + "references": [ + { + "path": "../../common/debug" + } + ] +} diff --git a/tsconfig.json b/tsconfig.json index cee1a9069d..fdfe414416 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -94,6 +94,9 @@ { "path": "./packages/frontend/core" }, + { + "path": "./packages/frontend/track" + }, { "path": "./packages/frontend/apps/web" }, diff --git a/yarn.lock b/yarn.lock index 92044da738..30452f8565 100644 --- a/yarn.lock +++ b/yarn.lock @@ -413,6 +413,7 @@ __metadata: "@affine/graphql": "workspace:*" "@affine/i18n": "workspace:*" "@affine/templates": "workspace:*" + "@affine/track": "workspace:*" "@blocksuite/affine-block-surface": "npm:0.17.9" "@blocksuite/block-std": "npm:0.17.9" "@blocksuite/blocks": "npm:0.17.9" @@ -673,6 +674,7 @@ __metadata: "@affine/env": "workspace:*" "@affine/graphql": "workspace:*" "@affine/i18n": "workspace:*" + "@affine/track": "workspace:*" "@blocksuite/blocks": "npm:0.17.9" "@blocksuite/icons": "npm:^2.1.66" "@radix-ui/react-collapsible": "npm:^1.0.3" @@ -914,6 +916,16 @@ __metadata: languageName: unknown linkType: soft +"@affine/track@workspace:*, @affine/track@workspace:packages/frontend/track": + version: 0.0.0-use.local + resolution: "@affine/track@workspace:packages/frontend/track" + dependencies: + "@affine/debug": "workspace:*" + mixpanel-browser: "npm:^2.49.0" + vitest: "npm:^2.0.5" + languageName: unknown + linkType: soft + "@affine/web@workspace:packages/frontend/apps/web": version: 0.0.0-use.local resolution: "@affine/web@workspace:packages/frontend/apps/web" @@ -29425,9 +29437,9 @@ __metadata: linkType: hard "path-to-regexp@npm:^6.2.0": - version: 6.3.0 - resolution: "path-to-regexp@npm:6.3.0" - checksum: 10/6822f686f01556d99538b350722ef761541ec0ce95ca40ce4c29e20a5b492fe8361961f57993c71b2418de12e604478dcf7c430de34b2c31a688363a7a944d9c + version: 6.2.2 + resolution: "path-to-regexp@npm:6.2.2" + checksum: 10/f7d11c1a9e02576ce0294f4efdc523c11b73894947afdf7b23a0d0f7c6465d7a7772166e770ddf1495a8017cc0ee99e3e8a15ed7302b6b948b89a6dd4eea895e languageName: node linkType: hard @@ -35654,7 +35666,7 @@ __metadata: languageName: node linkType: hard -"vitest@npm:2.1.0": +"vitest@npm:2.1.0, vitest@npm:^2.0.5": version: 2.1.0 resolution: "vitest@npm:2.1.0" dependencies: