From bfbb7e9e6bbd93f8ab3a0f618edcdb33844abaab Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Fri, 30 Jun 2023 00:15:44 +0800 Subject: [PATCH] fix(electron): window only ui (#2926) --- apps/electron/src/preload/bootstrap.ts | 1 + apps/electron/tests/basic.spec.ts | 9 +++++++++ apps/web/src/bootstrap/index.ts | 9 ++++++++- .../blocksuite/workspace-header/header.tsx | 9 ++++++--- packages/env/src/global.ts | 18 ++++++++++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/apps/electron/src/preload/bootstrap.ts b/apps/electron/src/preload/bootstrap.ts index 9b5d4e315c..98536f94ef 100644 --- a/apps/electron/src/preload/bootstrap.ts +++ b/apps/electron/src/preload/bootstrap.ts @@ -7,6 +7,7 @@ import { contextBridge, ipcRenderer } from 'electron'; contextBridge.exposeInMainWorld('appInfo', appInfo); contextBridge.exposeInMainWorld('apis', apis); contextBridge.exposeInMainWorld('events', events); + contextBridge.exposeInMainWorld('platform', process.platform); // Credit to microsoft/vscode const globals = { diff --git a/apps/electron/tests/basic.spec.ts b/apps/electron/tests/basic.spec.ts index aeb8d72161..ea1f429314 100644 --- a/apps/electron/tests/basic.spec.ts +++ b/apps/electron/tests/basic.spec.ts @@ -140,3 +140,12 @@ test('affine onboarding button', async ({ page }) => { expect(await onboardingModal.isVisible()).toEqual(false); }); + +test('windows only check', async ({ page }) => { + const windowOnlyUI = page.locator('[data-platform-target=win32]'); + if (process.platform === 'win32') { + await expect(windowOnlyUI).toBeVisible(); + } else { + await expect(windowOnlyUI).not.toBeVisible(); + } +}); diff --git a/apps/web/src/bootstrap/index.ts b/apps/web/src/bootstrap/index.ts index 2a99b55070..45a26d0aed 100644 --- a/apps/web/src/bootstrap/index.ts +++ b/apps/web/src/bootstrap/index.ts @@ -1,5 +1,5 @@ import { migrateToSubdoc } from '@affine/env/blocksuite'; -import { setupGlobal } from '@affine/env/global'; +import { platformSchema, setupGlobal } from '@affine/env/global'; import type { LocalIndexedDBDownloadProvider, WorkspaceAdapter, @@ -39,6 +39,13 @@ if (!environment.isServer) { import('@affine/bookmark-block'); } +// platform check +{ + if (globalThis.platform) { + platformSchema.parse(globalThis.platform); + } +} + if (!environment.isDesktop && !environment.isServer) { // Polyfill Electron const unimplemented = () => { diff --git a/apps/web/src/components/blocksuite/workspace-header/header.tsx b/apps/web/src/components/blocksuite/workspace-header/header.tsx index 7ec44be567..8a3f6bb002 100644 --- a/apps/web/src/components/blocksuite/workspace-header/header.tsx +++ b/apps/web/src/components/blocksuite/workspace-header/header.tsx @@ -4,7 +4,7 @@ import { appSidebarOpenAtom, } from '@affine/component/app-sidebar'; import { SidebarSwitch } from '@affine/component/app-sidebar/sidebar-header'; -import { isBrowser, isDesktop } from '@affine/env/constant'; +import { isDesktop } from '@affine/env/constant'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { CloseIcon, MinusIcon, RoundedRectangleIcon } from '@blocksuite/icons'; import type { Page } from '@blocksuite/store'; @@ -123,7 +123,10 @@ const HeaderRightItems: Record = { }); }, []); return ( -
+