diff --git a/packages/frontend/electron-api/src/index.ts b/packages/frontend/electron-api/src/index.ts index 0f7ea8970d..e6cbc6d167 100644 --- a/packages/frontend/electron-api/src/index.ts +++ b/packages/frontend/electron-api/src/index.ts @@ -6,10 +6,7 @@ import type { events as mainEvents, handlers as mainHandlers, } from '@affine/electron/main/exposed'; -import type { - affine as exposedAffineGlobal, - appInfo as exposedAppInfo, -} from '@affine/electron/preload/electron-api'; +import type { appInfo as exposedAppInfo } from '@affine/electron/preload/electron-api'; import type { sharedStorage as exposedSharedStorage } from '@affine/electron/preload/shared-storage'; type MainHandlers = typeof mainHandlers; @@ -37,9 +34,7 @@ export const appInfo = (globalThis as any).appInfo as | null; export const apis = (globalThis as any).apis as ClientHandler | null; export const events = (globalThis as any).events as ClientEvents | null; -export const affine = (globalThis as any).affine as - | typeof exposedAffineGlobal - | null; + export const sharedStorage = (globalThis as any).sharedStorage as | typeof exposedSharedStorage | null; diff --git a/packages/frontend/electron/src/preload/bootstrap.ts b/packages/frontend/electron/src/preload/bootstrap.ts index 3df4e29ccc..6aa3bc8de1 100644 --- a/packages/frontend/electron/src/preload/bootstrap.ts +++ b/packages/frontend/electron/src/preload/bootstrap.ts @@ -1,6 +1,6 @@ import { contextBridge } from 'electron'; -import { affine, appInfo, getElectronAPIs } from './electron-api'; +import { appInfo, getElectronAPIs } from './electron-api'; import { sharedStorage } from './shared-storage'; const { apis, events } = getElectronAPIs(); @@ -9,9 +9,3 @@ contextBridge.exposeInMainWorld('appInfo', appInfo); contextBridge.exposeInMainWorld('apis', apis); contextBridge.exposeInMainWorld('events', events); contextBridge.exposeInMainWorld('sharedStorage', sharedStorage); - -try { - contextBridge.exposeInMainWorld('affine', affine); -} catch (error) { - console.error('Failed to expose affine APIs to window object!', error); -} diff --git a/packages/frontend/electron/src/preload/electron-api.ts b/packages/frontend/electron/src/preload/electron-api.ts index ae6773155f..f36868ba9f 100644 --- a/packages/frontend/electron/src/preload/electron-api.ts +++ b/packages/frontend/electron/src/preload/electron-api.ts @@ -11,42 +11,6 @@ import type { RendererToHelper, } from '../shared/type'; -export const affine = { - ipcRenderer: { - send(channel: string, ...args: any[]) { - ipcRenderer.send(channel, ...args); - }, - - invoke(channel: string, ...args: any[]) { - return ipcRenderer.invoke(channel, ...args); - }, - - on( - channel: string, - listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void - ) { - ipcRenderer.on(channel, listener); - return this; - }, - - once( - channel: string, - listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void - ) { - ipcRenderer.once(channel, listener); - return this; - }, - - removeListener( - channel: string, - listener: (event: Electron.IpcRendererEvent, ...args: any[]) => void - ) { - ipcRenderer.removeListener(channel, listener); - return this; - }, - }, -}; - export function getElectronAPIs() { const mainAPIs = getMainAPIs(); const helperAPIs = getHelperAPIs(); diff --git a/tests/affine-desktop/e2e/behavior.spec.ts b/tests/affine-desktop/e2e/behavior.spec.ts deleted file mode 100644 index 7231b5a543..0000000000 --- a/tests/affine-desktop/e2e/behavior.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import os from 'node:os'; - -import { test } from '@affine-test/kit/electron'; -import { shouldCallIpcRendererHandler } from '@affine-test/kit/utils/ipc'; - -test.describe.skip('behavior test', () => { - if (os.platform() === 'darwin') { - test('system button should hidden correctly', async ({ - page, - electronApp, - }) => { - { - const promise = shouldCallIpcRendererHandler( - electronApp, - 'ui:handleSidebarVisibilityChange' - ); - await page - .locator( - '[data-testid=app-sidebar-arrow-button-collapse][data-show=true]' - ) - .click(); - await promise; - } - { - const promise = shouldCallIpcRendererHandler( - electronApp, - 'ui:handleSidebarVisibilityChange' - ); - await page - .locator( - '[data-testid=app-sidebar-arrow-button-expand][data-show=true]' - ) - .click(); - await promise; - } - }); - } -}); diff --git a/tests/kit/utils/ipc.ts b/tests/kit/utils/ipc.ts deleted file mode 100644 index e5f5544694..0000000000 --- a/tests/kit/utils/ipc.ts +++ /dev/null @@ -1,64 +0,0 @@ -// TODO(@pengx17): remove - -import type { affine } from '@affine/electron-api'; -// Credit: https://github.com/spaceagetv/electron-playwright-helpers/blob/main/src/ipc_helpers.ts -import type { Page } from '@playwright/test'; -import type { ElectronApplication } from 'playwright'; - -declare global { - interface Window { - affine: typeof affine; - } -} - -export function ipcRendererInvoke(page: Page, channel: string, ...args: any[]) { - return page.evaluate( - ({ channel, args }) => { - return window.affine?.ipcRenderer.invoke(channel, ...args); - }, - { channel, args } - ); -} - -export function ipcRendererSend(page: Page, channel: string, ...args: any[]) { - return page.evaluate( - ({ channel, args }) => { - window.affine?.ipcRenderer.send(channel, ...args); - }, - { channel, args } - ); -} - -type IpcMainWithHandlers = Electron.IpcMain & { - _invokeHandlers: Map< - string, - (e: Electron.IpcMainInvokeEvent, ...args: unknown[]) => Promise - >; -}; - -export function shouldCallIpcRendererHandler( - electronApp: ElectronApplication, - channel: string -) { - return electronApp.evaluate( - async ({ ipcMain }, { channel }) => { - const ipcMainWH = ipcMain as IpcMainWithHandlers; - // this is all a bit of a hack, so let's test as we go - if (!ipcMainWH._invokeHandlers) { - throw new Error(`Cannot access ipcMain._invokeHandlers`); - } - const handler = ipcMainWH._invokeHandlers.get(channel); - if (!handler) { - throw new Error(`No ipcMain handler registered for '${channel}'`); - } - return new Promise(resolve => { - ipcMainWH._invokeHandlers.set(channel, async (e, ...args) => { - ipcMainWH._invokeHandlers.set(channel, handler); - resolve(); - return handler(e, ...args); - }); - }); - }, - { channel } - ); -}