From a2651dff66faf98dc1a6f924227af454eaa2311d Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 26 Dec 2021 21:12:08 +0100 Subject: refactor: Less boilerplate around SophieRenderer --- .../shared/src/contextBridge/SophieRenderer.ts | 10 +++------- packages/shared/src/index.ts | 2 ++ packages/shared/src/ipc.ts | 7 ++----- packages/shared/src/schemas.ts | 22 ++++++++++++++++++++++ 4 files changed, 29 insertions(+), 12 deletions(-) (limited to 'packages/shared') diff --git a/packages/shared/src/contextBridge/SophieRenderer.ts b/packages/shared/src/contextBridge/SophieRenderer.ts index 6a2e432..a471250 100644 --- a/packages/shared/src/contextBridge/SophieRenderer.ts +++ b/packages/shared/src/contextBridge/SophieRenderer.ts @@ -20,14 +20,10 @@ import { SharedStoreListener } from '../stores/SharedStore'; -import { BrowserViewBounds, ThemeSource } from '../schemas'; +import { Action } from '../schemas'; export interface SophieRenderer { - setSharedStoreListener(listener: SharedStoreListener): void; + onSharedStoreChange(listener: SharedStoreListener): void; - setBrowserViewBounds(bounds: BrowserViewBounds): void; - - setThemeSource(mode: ThemeSource): void; - - reloadAllServices(): void; + dispatchAction(action: Action): void; } diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 713984e..2f7146c 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -26,10 +26,12 @@ export { } from './ipc'; export type { + Action, BrowserViewBounds, ThemeSource, } from './schemas'; export { + action, browserViewBounds, themeSource, } from './schemas'; diff --git a/packages/shared/src/ipc.ts b/packages/shared/src/ipc.ts index d2f65f7..54d761a 100644 --- a/packages/shared/src/ipc.ts +++ b/packages/shared/src/ipc.ts @@ -19,13 +19,10 @@ */ export enum MainToRendererIpcMessage { - SharedStoreSnapshot = 'sophie-main-to-renderer:shared-store-snapshot', SharedStorePatch = 'sophie-main-to-renderer:shared-store-patch', } export enum RendererToMainIpcMessage { - SharedStoreSnapshotRequest = 'sophie-renderer-to-main:shared-store-snapshot-request', - SetBrowserViewBounds = 'sophie-renderer-to-main:set-browser-view-bounds', - SetThemeSource = 'sophie-renderer-to-main:set-theme-source', - ReloadAllServices = 'sophie-renderer-to-main:reload-all-services', + GetSharedStoreSnapshot = 'sophie-renderer-to-main:get-shared-store-snapshot', + DispatchAction = 'sophie-renderer-to-main:dispatch-action', } diff --git a/packages/shared/src/schemas.ts b/packages/shared/src/schemas.ts index 0eff581..9090486 100644 --- a/packages/shared/src/schemas.ts +++ b/packages/shared/src/schemas.ts @@ -29,6 +29,28 @@ export const browserViewBounds = z.object({ export type BrowserViewBounds = z.infer; +const setBrowserViewBoundsAction = z.object({ + action: z.literal('set-browser-view-bounds'), + browserViewBounds, +}); + export const themeSource = z.enum(['system', 'light', 'dark']); export type ThemeSource = z.infer; + +const setThemeSourceAction = z.object({ + action: z.literal('set-theme-source'), + themeSource, +}); + +const reloadAllServicesAction = z.object({ + action: z.literal('reload-all-services'), +}); + +export const action = z.union([ + setBrowserViewBoundsAction, + setThemeSourceAction, + reloadAllServicesAction, +]); + +export type Action = z.infer; -- cgit v1.2.3-70-g09d2