From 25969a34e8a783d3b579c583de761f93bd5c792c Mon Sep 17 00:00:00 2001 From: forehalo Date: Fri, 13 Sep 2024 07:27:11 +0000 Subject: [PATCH] refactor: avoid runtime config object (#8202) --- packages/common/env/src/global.ts | 28 ++++--------------- .../src/modules/feature-flag/constant.ts | 4 +-- .../admin/src/modules/config/about.tsx | 12 ++++---- .../frontend/apps/electron/renderer/index.tsx | 4 +-- packages/frontend/apps/mobile/src/index.tsx | 4 +-- .../workspace/detail/mobile-detail-page.tsx | 14 ++++------ .../apps/mobile/src/pages/workspace/home.tsx | 2 +- .../mobile/src/views/settings/about/index.tsx | 6 ++-- packages/frontend/apps/web/src/index.tsx | 4 +-- .../affine-other-page-layout/layout.tsx | 2 +- .../core/src/bootstrap/first-app-data.ts | 2 +- .../core/src/commands/affine-help.tsx | 2 +- .../core/src/components/affine/auth/oauth.tsx | 2 +- .../affine/create-workspace-modal/index.tsx | 6 ++-- .../affine/issue-feedback-modal/index.tsx | 2 +- .../general-setting/about/index.tsx | 8 +++--- .../general-setting/appearance/index.tsx | 6 ++-- .../setting-modal/general-setting/index.tsx | 2 +- .../affine/star-affine-modal/index.tsx | 2 +- .../block-suite-editor/blocksuite-editor.tsx | 12 ++++---- .../specs/font-extension.ts | 2 +- .../block-suite-header/menu/index.tsx | 17 +++++------ .../components/page-list/operation-cell.tsx | 8 ++---- .../src/components/pure/help-island/index.tsx | 2 +- .../src/components/root-app-sidebar/index.tsx | 2 +- .../add-workspace/index.tsx | 2 +- .../user-with-workspace-list/index.tsx | 2 +- ...se-register-blocksuite-editor-commands.tsx | 4 +-- .../core/src/hooks/use-app-updater.ts | 2 +- .../frontend/core/src/mixpanel/mixpanel.ts | 8 +++--- .../core/src/modules/cloud/services/fetch.ts | 2 +- .../modules/create-workspace/views/dialog.tsx | 6 ++-- .../explorer/views/nodes/doc/operations.tsx | 26 ++++++++--------- .../theme-editor/views/custom-theme.tsx | 2 +- .../userspace/impls/user-db-doc-server.ts | 2 +- .../impls/engine/awareness-cloud.ts | 2 +- .../impls/engine/doc-cloud.ts | 2 +- .../detail-page/detail-page-header.tsx | 2 +- packages/frontend/core/src/utils/popup.ts | 4 +-- packages/frontend/core/src/utils/url.ts | 2 +- packages/frontend/graphql/src/index.ts | 2 +- scripts/setup/global.ts | 14 ++++------ tools/@types/env/__all.d.ts | 4 +-- tools/cli/src/webpack/config.ts | 14 ++++++---- tools/cli/src/webpack/runtime-config.ts | 16 +++-------- 45 files changed, 117 insertions(+), 156 deletions(-) diff --git a/packages/common/env/src/global.ts b/packages/common/env/src/global.ts index dc694d55e..e9c2eca1c 100644 --- a/packages/common/env/src/global.ts +++ b/packages/common/env/src/global.ts @@ -5,7 +5,7 @@ import { z } from 'zod'; import { isElectron } from './constant.js'; import { UaHelper } from './ua-helper.js'; -export const runtimeFlagsSchema = z.object({ +export const BUILD_CONFIG_SCHEMA = z.object({ // this is for the electron app serverUrlPrefix: z.string(), appVersion: z.string(), @@ -27,14 +27,11 @@ export const runtimeFlagsSchema = z.object({ allowLocalWorkspace: z.boolean(), enablePreloading: z.boolean(), enableNewSettingUnstableApi: z.boolean(), - enableEnhanceShareMode: z.boolean(), enableExperimentalFeature: z.boolean(), - enableInfoModal: z.boolean(), - enableOrganize: z.boolean(), enableThemeEditor: z.boolean(), }); -export type RuntimeConfig = z.infer; +export type BUILD_CONFIG_TYPE = z.infer; export type Environment = { isDebug: boolean; @@ -61,24 +58,11 @@ export type Environment = { chromeVersion?: number; }; -function setupRuntimeConfig() { - if (!process.env.RUNTIME_CONFIG) { - return; - } - - // registered by [webpack.DefinePlugin] - const runtimeConfig = JSON.parse(process.env.RUNTIME_CONFIG ?? ''); - runtimeFlagsSchema.parse(runtimeConfig); - globalThis.runtimeConfig = runtimeConfig; -} - export function setupGlobal() { if (globalThis.$AFFINE_SETUP) { return; } - setupRuntimeConfig(); - let environment: Environment; const isDebug = process.env.NODE_ENV === 'development'; @@ -103,10 +87,10 @@ export function setupGlobal() { const uaHelper = new UaHelper(globalThis.navigator); environment = { - isDesktopEdition: runtimeConfig.distribution !== 'mobile', - isMobileEdition: runtimeConfig.distribution === 'mobile', - isDesktopWeb: runtimeConfig.distribution === 'web', - isMobileWeb: runtimeConfig.distribution === 'mobile', + isDesktopEdition: BUILD_CONFIG.distribution !== 'mobile', + isMobileEdition: BUILD_CONFIG.distribution === 'mobile', + isDesktopWeb: BUILD_CONFIG.distribution === 'web', + isMobileWeb: BUILD_CONFIG.distribution === 'mobile', isElectron, isDebug, isMobile: uaHelper.isMobile, diff --git a/packages/common/infra/src/modules/feature-flag/constant.ts b/packages/common/infra/src/modules/feature-flag/constant.ts index a7632eb64..715c48315 100644 --- a/packages/common/infra/src/modules/feature-flag/constant.ts +++ b/packages/common/infra/src/modules/feature-flag/constant.ts @@ -1,8 +1,8 @@ import type { FlagInfo } from './types'; -const isNotStableBuild = runtimeConfig.appBuildType !== 'stable'; +const isNotStableBuild = BUILD_CONFIG.appBuildType !== 'stable'; const isDesktopEnvironment = environment.isElectron; -const isCanaryBuild = runtimeConfig.appBuildType === 'canary'; +const isCanaryBuild = BUILD_CONFIG.appBuildType === 'canary'; export const AFFINE_FLAGS = { enable_ai: { diff --git a/packages/frontend/admin/src/modules/config/about.tsx b/packages/frontend/admin/src/modules/config/about.tsx index 8812c0905..762107b95 100644 --- a/packages/frontend/admin/src/modules/config/about.tsx +++ b/packages/frontend/admin/src/modules/config/about.tsx @@ -20,15 +20,16 @@ const appNames = { beta: 'AFFiNE Beta', internal: 'AFFiNE Internal', } satisfies Record; +const appName = appNames[BUILD_CONFIG.appBuildType]; const links = [ { - href: runtimeConfig.githubUrl, + href: BUILD_CONFIG.githubUrl, icon: , label: 'Star AFFiNE on GitHub', }, { - href: runtimeConfig.githubUrl, + href: BUILD_CONFIG.githubUrl, icon: , label: 'Report an Issue', }, @@ -45,9 +46,6 @@ const links = [ ]; export function AboutAFFiNE() { - const { appBuildType, appVersion, editorVersion } = runtimeConfig; - const appName = appNames[appBuildType]; - return (
@@ -80,8 +78,8 @@ export function AboutAFFiNE() {
-
{`App Version: ${appName} ${appVersion}`}
-
{`Editor Version: ${editorVersion}`}
+
{`App Version: ${appName} ${BUILD_CONFIG.appVersion}`}
+
{`Editor Version: ${BUILD_CONFIG.editorVersion}`}
); diff --git a/packages/frontend/apps/electron/renderer/index.tsx b/packages/frontend/apps/electron/renderer/index.tsx index 83225c248..41b06f014 100644 --- a/packages/frontend/apps/electron/renderer/index.tsx +++ b/packages/frontend/apps/electron/renderer/index.tsx @@ -55,8 +55,8 @@ function main() { ], }); setTags({ - appVersion: runtimeConfig.appVersion, - editorVersion: runtimeConfig.editorVersion, + appVersion: BUILD_CONFIG.appVersion, + editorVersion: BUILD_CONFIG.editorVersion, }); apis?.ui.handleNetworkChange(navigator.onLine); diff --git a/packages/frontend/apps/mobile/src/index.tsx b/packages/frontend/apps/mobile/src/index.tsx index f8106ecc2..654d7cb48 100644 --- a/packages/frontend/apps/mobile/src/index.tsx +++ b/packages/frontend/apps/mobile/src/index.tsx @@ -36,8 +36,8 @@ function main() { ], }); setTags({ - appVersion: runtimeConfig.appVersion, - editorVersion: runtimeConfig.editorVersion, + appVersion: BUILD_CONFIG.appVersion, + editorVersion: BUILD_CONFIG.editorVersion, }); } performanceMainLogger.info('setup done'); 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 2c90d2285..b3af4c977 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 @@ -112,21 +112,19 @@ const DetailPageImpl = () => { // provide image proxy endpoint to blocksuite editorHost?.std.clipboard.use( - customImageProxyMiddleware(runtimeConfig.imageProxyUrl) + customImageProxyMiddleware(BUILD_CONFIG.imageProxyUrl) ); - ImageBlockService.setImageProxyURL(runtimeConfig.imageProxyUrl); + ImageBlockService.setImageProxyURL(BUILD_CONFIG.imageProxyUrl); // provide link preview endpoint to blocksuite - BookmarkBlockService.setLinkPreviewEndpoint(runtimeConfig.linkPreviewUrl); + BookmarkBlockService.setLinkPreviewEndpoint(BUILD_CONFIG.linkPreviewUrl); EmbedGithubBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); EmbedYoutubeBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl - ); - EmbedLoomBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); + EmbedLoomBlockService.setLinkPreviewEndpoint(BUILD_CONFIG.linkPreviewUrl); // provide page mode and updated date to blocksuite const refNodeService = editorHost?.std.getOptional(RefNodeSlotsProvider); diff --git a/packages/frontend/apps/mobile/src/pages/workspace/home.tsx b/packages/frontend/apps/mobile/src/pages/workspace/home.tsx index d055b5e35..e48c96ead 100644 --- a/packages/frontend/apps/mobile/src/pages/workspace/home.tsx +++ b/packages/frontend/apps/mobile/src/pages/workspace/home.tsx @@ -28,7 +28,7 @@ export const Component = () => { }} > - {runtimeConfig.enableOrganize && } + diff --git a/packages/frontend/apps/mobile/src/views/settings/about/index.tsx b/packages/frontend/apps/mobile/src/views/settings/about/index.tsx index fcb225fd0..645a18cfb 100644 --- a/packages/frontend/apps/mobile/src/views/settings/about/index.tsx +++ b/packages/frontend/apps/mobile/src/views/settings/about/index.tsx @@ -3,19 +3,17 @@ import { useI18n } from '@affine/i18n'; import { SettingGroup } from '../group'; import { RowLayout } from '../row.layout'; -const { appVersion, editorVersion } = runtimeConfig; - export const AboutGroup = () => { const t = useI18n(); return ( - {appVersion} + {BUILD_CONFIG.appVersion} - {editorVersion} + {BUILD_CONFIG.editorVersion} ); diff --git a/packages/frontend/apps/web/src/index.tsx b/packages/frontend/apps/web/src/index.tsx index 44d86cb6a..e1442525d 100644 --- a/packages/frontend/apps/web/src/index.tsx +++ b/packages/frontend/apps/web/src/index.tsx @@ -43,8 +43,8 @@ function main() { ], }); setTags({ - appVersion: runtimeConfig.appVersion, - editorVersion: runtimeConfig.editorVersion, + appVersion: BUILD_CONFIG.appVersion, + editorVersion: BUILD_CONFIG.editorVersion, }); } performanceMainLogger.info('setup done'); diff --git a/packages/frontend/component/src/components/affine-other-page-layout/layout.tsx b/packages/frontend/component/src/components/affine-other-page-layout/layout.tsx index c7a06af80..90747aff2 100644 --- a/packages/frontend/component/src/components/affine-other-page-layout/layout.tsx +++ b/packages/frontend/component/src/components/affine-other-page-layout/layout.tsx @@ -15,7 +15,7 @@ export const AffineOtherPageLayout = ({ const t = useI18n(); const openDownloadLink = useCallback(() => { - open(runtimeConfig.downloadUrl, '_blank'); + open(BUILD_CONFIG.downloadUrl, '_blank'); }, []); return ( diff --git a/packages/frontend/core/src/bootstrap/first-app-data.ts b/packages/frontend/core/src/bootstrap/first-app-data.ts index 8ea7248e5..667479668 100644 --- a/packages/frontend/core/src/bootstrap/first-app-data.ts +++ b/packages/frontend/core/src/bootstrap/first-app-data.ts @@ -46,7 +46,7 @@ export async function createFirstAppData(workspacesService: WorkspacesService) { return; } localStorage.setItem('is-first-open', 'false'); - if (runtimeConfig.enablePreloading) { + if (BUILD_CONFIG.enablePreloading) { const { meta, defaultDocId } = await buildShowcaseWorkspace( workspacesService, WorkspaceFlavour.LOCAL, diff --git a/packages/frontend/core/src/commands/affine-help.tsx b/packages/frontend/core/src/commands/affine-help.tsx index 369beee72..9236b163a 100644 --- a/packages/frontend/core/src/commands/affine-help.tsx +++ b/packages/frontend/core/src/commands/affine-help.tsx @@ -23,7 +23,7 @@ export function registerAffineHelpCommands({ label: t['com.affine.cmdk.affine.whats-new'](), run() { track.$.cmdk.help.openChangelog(); - popupWindow(runtimeConfig.changelogUrl); + popupWindow(BUILD_CONFIG.changelogUrl); }, }) ); diff --git a/packages/frontend/core/src/components/affine/auth/oauth.tsx b/packages/frontend/core/src/components/affine/auth/oauth.tsx index 926e199c9..fa0c10236 100644 --- a/packages/frontend/core/src/components/affine/auth/oauth.tsx +++ b/packages/frontend/core/src/components/affine/auth/oauth.tsx @@ -50,7 +50,7 @@ function OAuthProvider({ provider }: { provider: OAuthProviderType }) { const onClick = useCallback(() => { let oauthUrl = - (environment.isElectron ? runtimeConfig.serverUrlPrefix : '') + + (environment.isElectron ? BUILD_CONFIG.serverUrlPrefix : '') + `/oauth/login?provider=${provider}`; if (environment.isElectron) { 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 fe7cdaca0..f1318eda4 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 @@ -48,7 +48,7 @@ interface NameWorkspaceContentProps extends ConfirmModalProps { ) => void; } -const shouldEnableCloud = !runtimeConfig.allowLocalWorkspace; +const shouldEnableCloud = !BUILD_CONFIG.allowLocalWorkspace; const NameWorkspaceContent = ({ loading, @@ -159,7 +159,7 @@ const NameWorkspaceContent = ({ {shouldEnableCloud ? ( @@ -229,7 +229,7 @@ export const CreateWorkspaceModal = ({ // this will be the last step for web for now // fix me later - if (runtimeConfig.enablePreloading) { + if (BUILD_CONFIG.enablePreloading) { const { meta, defaultDocId } = await buildShowcaseWorkspace( workspacesService, workspaceFlavour, 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 a3e6ef095..b8ba67960 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 @@ -24,7 +24,7 @@ export const IssueFeedbackModal = () => { onOpenChange={setOpen} description={t['com.affine.issue-feedback.description']()} cancelText={t['com.affine.issue-feedback.cancel']()} - to={`${runtimeConfig.githubUrl}/issues/new/choose`} + to={`${BUILD_CONFIG.githubUrl}/issues/new/choose`} confirmText={t['com.affine.issue-feedback.confirm']()} confirmButtonOptions={{ variant: 'primary', 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 4a0c8b08d..ad437413a 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 @@ -21,7 +21,7 @@ export const AboutAffine = () => { const t = useI18n(); const { appSettings, updateSettings } = useAppSettingHelper(); const { toggleAutoCheck, toggleAutoDownload } = useAppUpdater(); - const channel = runtimeConfig.appBuildType; + const channel = BUILD_CONFIG.appBuildType; const appIcon = appIconMap[channel]; const appName = appNames[channel]; @@ -63,14 +63,14 @@ export const AboutAffine = () => { {appName} {environment.isElectron ? ( <> @@ -100,7 +100,7 @@ export const AboutAffine = () => { desc={t['com.affine.aboutAFFiNE.changelog.description']()} style={{ cursor: 'pointer' }} onClick={() => { - popupWindow(runtimeConfig.changelogUrl); + popupWindow(BUILD_CONFIG.changelogUrl); }} > 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 639f4b84b..acab88cae 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 @@ -98,7 +98,7 @@ export const AppearanceSettings = () => { /> ) : null} - {runtimeConfig.enableNewSettingUnstableApi && environment.isElectron ? ( + {BUILD_CONFIG.enableNewSettingUnstableApi && environment.isElectron ? ( { /> ) : null} - {runtimeConfig.enableThemeEditor ? : null} + {BUILD_CONFIG.enableThemeEditor ? : null} {/* // TODO(@JimmFly): remove Page component when stable release */} - {runtimeConfig.enableNewSettingUnstableApi ? ( + {BUILD_CONFIG.enableNewSettingUnstableApi ? ( { } } - if (runtimeConfig.enableExperimentalFeature) { + if (BUILD_CONFIG.enableExperimentalFeature) { settings.push({ key: 'experimental-features', title: t['com.affine.settings.workspace.experimental-features'](), 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 41bd5c185..b78b8d42f 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 @@ -24,7 +24,7 @@ export const StarAFFiNEModal = () => { onOpenChange={setOpen} description={t['com.affine.star-affine.description']()} cancelText={t['com.affine.star-affine.cancel']()} - to={runtimeConfig.githubUrl} + to={BUILD_CONFIG.githubUrl} confirmButtonOptions={{ variant: 'primary', }} diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx index a92e2707c..45553c323 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx @@ -89,22 +89,22 @@ const BlockSuiteEditorImpl = ({ // provide image proxy endpoint to blocksuite editor.host?.std.clipboard.use( - customImageProxyMiddleware(runtimeConfig.imageProxyUrl) + customImageProxyMiddleware(BUILD_CONFIG.imageProxyUrl) ); - ImageBlockService.setImageProxyURL(runtimeConfig.imageProxyUrl); + ImageBlockService.setImageProxyURL(BUILD_CONFIG.imageProxyUrl); // provide link preview endpoint to blocksuite BookmarkBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); EmbedGithubBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); EmbedYoutubeBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); EmbedLoomBlockService.setLinkPreviewEndpoint( - runtimeConfig.linkPreviewUrl + BUILD_CONFIG.linkPreviewUrl ); return editor.host?.updateComplete; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/font-extension.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/font-extension.ts index 65ebbbb56..8d2473eca 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/font-extension.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/font-extension.ts @@ -2,7 +2,7 @@ import { AffineCanvasTextFonts, FontConfigExtension } from '@blocksuite/blocks'; export function getFontConfigExtension() { return FontConfigExtension( - runtimeConfig.isSelfHosted + BUILD_CONFIG.isSelfHosted ? AffineCanvasTextFonts.map(font => ({ ...font, // self-hosted fonts are served from /assets 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 7e07dc26e..0deba414c 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 @@ -304,16 +304,13 @@ export const PageHeaderMenuButton = ({ )} - - {runtimeConfig.enableInfoModal && ( - } - data-testid="editor-option-menu-info" - onSelect={openInfoModal} - > - {t['com.affine.page-properties.page-info.view']()} - - )} + } + data-testid="editor-option-menu-info" + onSelect={openInfoModal} + > + {t['com.affine.page-properties.page-info.view']()} + {currentMode === 'page' ? ( } 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 05ce681c8..2a106c64c 100644 --- a/packages/frontend/core/src/components/page-list/operation-cell.tsx +++ b/packages/frontend/core/src/components/page-list/operation-cell.tsx @@ -173,11 +173,9 @@ export const PageOperationCell = ({ ? t['com.affine.favoritePageOperation.remove']() : t['com.affine.favoritePageOperation.add']()} - {runtimeConfig.enableInfoModal ? ( - }> - {t['com.affine.page-properties.page-info.view']()} - - ) : null} + }> + {t['com.affine.page-properties.page-info.view']()} + }> {t['com.affine.workbench.tab.page-menu-open']()} 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 df5882bf0..66d505c92 100644 --- a/packages/frontend/core/src/components/pure/help-island/index.tsx +++ b/packages/frontend/core/src/components/pure/help-island/index.tsx @@ -77,7 +77,7 @@ export const HelpIsland = () => { { - popupWindow(runtimeConfig.changelogUrl); + popupWindow(BUILD_CONFIG.changelogUrl); }} > 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 efd38bbe6..a78d54f8f 100644 --- a/packages/frontend/core/src/components/root-app-sidebar/index.tsx +++ b/packages/frontend/core/src/components/root-app-sidebar/index.tsx @@ -176,7 +176,7 @@ export const RootAppSidebar = (): ReactElement => { - {runtimeConfig.enableOrganize && } + diff --git a/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/add-workspace/index.tsx b/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/add-workspace/index.tsx index 9b88a8a0c..d03d6cfda 100644 --- a/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/add-workspace/index.tsx +++ b/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/add-workspace/index.tsx @@ -36,7 +36,7 @@ export const AddWorkspace = ({ className={styles.ItemContainer} >
- {runtimeConfig.allowLocalWorkspace + {BUILD_CONFIG.allowLocalWorkspace ? t['com.affine.workspaceList.addWorkspace.create']() : t['com.affine.workspaceList.addWorkspace.create-cloud']()}
diff --git a/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/index.tsx b/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/index.tsx index 88b700c54..449bd6ea1 100644 --- a/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/index.tsx +++ b/packages/frontend/core/src/components/workspace-selector/user-with-workspace-list/index.tsx @@ -88,7 +88,7 @@ const UserWithWorkspaceListInner = ({ }, [setOpenSignIn]); const onNewWorkspace = useCallback(() => { - if (!isAuthenticated && !runtimeConfig.allowLocalWorkspace) { + if (!isAuthenticated && !BUILD_CONFIG.allowLocalWorkspace) { return openSignInModal(); } track.$.navigationPanel.workspaceList.createWorkspace(); diff --git a/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx b/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx index a9c6983e9..a4dbb46a4 100644 --- a/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx +++ b/packages/frontend/core/src/hooks/affine/use-register-blocksuite-editor-commands.tsx @@ -95,9 +95,7 @@ export function useRegisterBlocksuiteEditorCommands(editor: Editor) { registerAffineCommand({ id: `editor:${mode}-view-info`, preconditionStrategy: () => - PreconditionStrategy.InPaperOrEdgeless && - !trash && - runtimeConfig.enableInfoModal, + PreconditionStrategy.InPaperOrEdgeless && !trash, category: `editor:${mode}`, icon: mode === 'page' ? : , label: t['com.affine.page-properties.page-info.view'](), diff --git a/packages/frontend/core/src/hooks/use-app-updater.ts b/packages/frontend/core/src/hooks/use-app-updater.ts index 0ded3e133..cf725b46a 100644 --- a/packages/frontend/core/src/hooks/use-app-updater.ts +++ b/packages/frontend/core/src/hooks/use-app-updater.ts @@ -177,7 +177,7 @@ export const useAppUpdater = () => { const openChangelog = useAsyncCallback(async () => { track.$.navigationPanel.bottomButtons.openChangelog(); - popupWindow(runtimeConfig.changelogUrl); + popupWindow(BUILD_CONFIG.changelogUrl); await setChangelogUnread(true); }, [setChangelogUnread]); diff --git a/packages/frontend/core/src/mixpanel/mixpanel.ts b/packages/frontend/core/src/mixpanel/mixpanel.ts index b38e1c7d6..e886d4d00 100644 --- a/packages/frontend/core/src/mixpanel/mixpanel.ts +++ b/packages/frontend/core/src/mixpanel/mixpanel.ts @@ -32,10 +32,10 @@ function createMixpanel() { const wrapped = { init() { mixpanel.register({ - appVersion: runtimeConfig.appVersion, - environment: runtimeConfig.appBuildType, - editorVersion: runtimeConfig.editorVersion, - isSelfHosted: Boolean(runtimeConfig.isSelfHosted), + appVersion: BUILD_CONFIG.appVersion, + environment: BUILD_CONFIG.appBuildType, + editorVersion: BUILD_CONFIG.editorVersion, + isSelfHosted: Boolean(BUILD_CONFIG.isSelfHosted), isDesktop: environment.isElectron, }); }, diff --git a/packages/frontend/core/src/modules/cloud/services/fetch.ts b/packages/frontend/core/src/modules/cloud/services/fetch.ts index 1ad6d39d3..378737532 100644 --- a/packages/frontend/core/src/modules/cloud/services/fetch.ts +++ b/packages/frontend/core/src/modules/cloud/services/fetch.ts @@ -6,7 +6,7 @@ import { BackendError, NetworkError } from '../error'; export function getAffineCloudBaseUrl(): string { if (environment.isElectron) { - return runtimeConfig.serverUrlPrefix; + return BUILD_CONFIG.serverUrlPrefix; } const { protocol, hostname, port } = window.location; return `${protocol}//${hostname}${port ? `:${port}` : ''}`; 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 fd5b0ef92..0db037990 100644 --- a/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx +++ b/packages/frontend/core/src/modules/create-workspace/views/dialog.tsx @@ -35,7 +35,7 @@ interface NameWorkspaceContentProps extends ConfirmModalProps { ) => void; } -const shouldEnableCloud = !runtimeConfig.allowLocalWorkspace; +const shouldEnableCloud = !BUILD_CONFIG.allowLocalWorkspace; const NameWorkspaceContent = ({ loading, @@ -146,7 +146,7 @@ const NameWorkspaceContent = ({ {shouldEnableCloud ? (
@@ -213,7 +213,7 @@ const CreateWorkspaceDialog = () => { // this will be the last step for web for now // fix me later - if (runtimeConfig.enablePreloading) { + if (BUILD_CONFIG.enablePreloading) { const { meta, defaultDocId } = await buildShowcaseWorkspace( workspacesService, workspaceFlavour, 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 461aeed03..b0492e2a3 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 @@ -154,21 +154,17 @@ export const useExplorerDocNodeOperations = ( /> ), }, - ...(runtimeConfig.enableInfoModal - ? [ - { - index: 50, - view: ( - } - onClick={handleOpenInfoModal} - > - {t['com.affine.page-properties.page-info.view']()} - - ), - }, - ] - : []), + { + index: 50, + view: ( + } + onClick={handleOpenInfoModal} + > + {t['com.affine.page-properties.page-info.view']()} + + ), + }, { index: 99, view: ( diff --git a/packages/frontend/core/src/modules/theme-editor/views/custom-theme.tsx b/packages/frontend/core/src/modules/theme-editor/views/custom-theme.tsx index aca604b6d..d7ded593a 100644 --- a/packages/frontend/core/src/modules/theme-editor/views/custom-theme.tsx +++ b/packages/frontend/core/src/modules/theme-editor/views/custom-theme.tsx @@ -11,7 +11,7 @@ export const useCustomTheme = (target: HTMLElement) => { const { resolvedTheme } = useTheme(); useEffect(() => { - if (!runtimeConfig.enableThemeEditor) return; + if (!BUILD_CONFIG.enableThemeEditor) return; if (_provided) return; _provided = true; diff --git a/packages/frontend/core/src/modules/userspace/impls/user-db-doc-server.ts b/packages/frontend/core/src/modules/userspace/impls/user-db-doc-server.ts index 766cc193e..0bd4ba980 100644 --- a/packages/frontend/core/src/modules/userspace/impls/user-db-doc-server.ts +++ b/packages/frontend/core/src/modules/userspace/impls/user-db-doc-server.ts @@ -36,7 +36,7 @@ export class UserDBDocServer implements DocServer { await this.socket.emitWithAck('space:join', { spaceType: 'userspace', spaceId: this.userId, - clientVersion: runtimeConfig.appVersion, + clientVersion: BUILD_CONFIG.appVersion, }); } diff --git a/packages/frontend/core/src/modules/workspace-engine/impls/engine/awareness-cloud.ts b/packages/frontend/core/src/modules/workspace-engine/impls/engine/awareness-cloud.ts index 824ad84a3..0d2c23a5b 100644 --- a/packages/frontend/core/src/modules/workspace-engine/impls/engine/awareness-cloud.ts +++ b/packages/frontend/core/src/modules/workspace-engine/impls/engine/awareness-cloud.ts @@ -166,7 +166,7 @@ export class CloudAwarenessConnection implements AwarenessConnection { spaceType: 'workspace', spaceId: this.workspaceId, docId: this.workspaceId, - clientVersion: runtimeConfig.appVersion, + clientVersion: BUILD_CONFIG.appVersion, }, (res: any) => { logger.debug('awareness handshake finished', res); diff --git a/packages/frontend/core/src/modules/workspace-engine/impls/engine/doc-cloud.ts b/packages/frontend/core/src/modules/workspace-engine/impls/engine/doc-cloud.ts index 5773164db..9d10de35a 100644 --- a/packages/frontend/core/src/modules/workspace-engine/impls/engine/doc-cloud.ts +++ b/packages/frontend/core/src/modules/workspace-engine/impls/engine/doc-cloud.ts @@ -37,7 +37,7 @@ export class CloudDocEngineServer implements DocServer { await this.socket.emitWithAck('space:join', { spaceType: 'workspace', spaceId: this.workspaceId, - clientVersion: runtimeConfig.appVersion, + clientVersion: BUILD_CONFIG.appVersion, }); } 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 0647d848b..bf03f1ef9 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 @@ -139,7 +139,7 @@ export function NormalPageHeader({ page, workspace }: PageHeaderProps) { {hideCollect ? null : ( <> - {runtimeConfig.enableInfoModal ? : null} + )} { export const createConfiguration: ( cwd: string, buildFlags: BuildFlags, - runtimeConfig: RuntimeConfig -) => webpack.Configuration = (cwd, buildFlags, runtimeConfig) => { + buildConfig: BUILD_CONFIG_TYPE +) => webpack.Configuration = (cwd, buildFlags, buildConfig) => { const blocksuiteBaseDir = buildFlags.localBlockSuite; const config = { name: 'affine', @@ -350,8 +350,12 @@ export const createConfiguration: ( process.env.MIXPANEL_TOKEN ), 'process.env.DEBUG_JOTAI': JSON.stringify(process.env.DEBUG_JOTAI), - 'process.env.RUNTIME_CONFIG': JSON.stringify( - JSON.stringify(runtimeConfig) + ...Object.entries(buildConfig).reduce( + (def, [k, v]) => { + def[`BUILD_CONFIG.${k}`] = JSON.stringify(v); + return def; + }, + {} as Record ), }), buildFlags.distribution === 'admin' diff --git a/tools/cli/src/webpack/runtime-config.ts b/tools/cli/src/webpack/runtime-config.ts index 76bf65019..d71cf6119 100644 --- a/tools/cli/src/webpack/runtime-config.ts +++ b/tools/cli/src/webpack/runtime-config.ts @@ -1,10 +1,10 @@ -import type { RuntimeConfig } from '@affine/env/global'; +import type { BUILD_CONFIG_TYPE } from '@affine/env/global'; import packageJson from '../../package.json' assert { type: 'json' }; import type { BuildFlags } from '../config'; -export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig { - const buildPreset: Record = { +export function getRuntimeConfig(buildFlags: BuildFlags): BUILD_CONFIG_TYPE { + const buildPreset: Record = { get stable() { return { distribution: buildFlags.distribution, @@ -21,13 +21,10 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig { enableExperimentalFeature: true, allowLocalWorkspace: buildFlags.distribution === 'desktop' ? true : false, - enableOrganize: true, - enableInfoModal: true, + enableThemeEditor: false, // CAUTION(@forehalo): product not ready, do not enable it enableNewSettingUnstableApi: false, - enableEnhanceShareMode: false, - enableThemeEditor: false, }; }, get beta() { @@ -53,8 +50,6 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig { appBuildType: 'canary' as const, serverUrlPrefix: 'https://affine.fail', changelogUrl: 'https://github.com/toeverything/AFFiNE/releases', - enableInfoModal: true, - enableOrganize: true, enableThemeEditor: true, }; }, @@ -76,9 +71,6 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig { enableNewSettingUnstableApi: process.env.ENABLE_NEW_SETTING_UNSTABLE_API ? process.env.ENABLE_NEW_SETTING_UNSTABLE_API === 'true' : currentBuildPreset.enableNewSettingUnstableApi, - enableEnhanceShareMode: process.env.ENABLE_ENHANCE_SHARE_MODE - ? process.env.ENABLE_ENHANCE_SHARE_MODE === 'true' - : currentBuildPreset.enableEnhanceShareMode, allowLocalWorkspace: process.env.ALLOW_LOCAL_WORKSPACE ? process.env.ALLOW_LOCAL_WORKSPACE === 'true' : buildFlags.mode === 'development'