diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-12-26 21:12:08 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-12-26 21:15:53 +0100 |
commit | a2651dff66faf98dc1a6f924227af454eaa2311d (patch) | |
tree | 7f15c402d449b934d5a2b7858aa16523e9fc121e /packages/shared/src | |
parent | refactor: Rename RootStore to RendererStore (diff) | |
download | sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.gz sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.zst sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.zip |
refactor: Less boilerplate around SophieRenderer
Diffstat (limited to 'packages/shared/src')
-rw-r--r-- | packages/shared/src/contextBridge/SophieRenderer.ts | 10 | ||||
-rw-r--r-- | packages/shared/src/index.ts | 2 | ||||
-rw-r--r-- | packages/shared/src/ipc.ts | 7 | ||||
-rw-r--r-- | packages/shared/src/schemas.ts | 22 |
4 files changed, 29 insertions, 12 deletions
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 @@ | |||
20 | 20 | ||
21 | import { SharedStoreListener } from '../stores/SharedStore'; | 21 | import { SharedStoreListener } from '../stores/SharedStore'; |
22 | 22 | ||
23 | import { BrowserViewBounds, ThemeSource } from '../schemas'; | 23 | import { Action } from '../schemas'; |
24 | 24 | ||
25 | export interface SophieRenderer { | 25 | export interface SophieRenderer { |
26 | setSharedStoreListener(listener: SharedStoreListener): void; | 26 | onSharedStoreChange(listener: SharedStoreListener): void; |
27 | 27 | ||
28 | setBrowserViewBounds(bounds: BrowserViewBounds): void; | 28 | dispatchAction(action: Action): void; |
29 | |||
30 | setThemeSource(mode: ThemeSource): void; | ||
31 | |||
32 | reloadAllServices(): void; | ||
33 | } | 29 | } |
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 { | |||
26 | } from './ipc'; | 26 | } from './ipc'; |
27 | 27 | ||
28 | export type { | 28 | export type { |
29 | Action, | ||
29 | BrowserViewBounds, | 30 | BrowserViewBounds, |
30 | ThemeSource, | 31 | ThemeSource, |
31 | } from './schemas'; | 32 | } from './schemas'; |
32 | export { | 33 | export { |
34 | action, | ||
33 | browserViewBounds, | 35 | browserViewBounds, |
34 | themeSource, | 36 | themeSource, |
35 | } from './schemas'; | 37 | } 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 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | export enum MainToRendererIpcMessage { | 21 | export enum MainToRendererIpcMessage { |
22 | SharedStoreSnapshot = 'sophie-main-to-renderer:shared-store-snapshot', | ||
23 | SharedStorePatch = 'sophie-main-to-renderer:shared-store-patch', | 22 | SharedStorePatch = 'sophie-main-to-renderer:shared-store-patch', |
24 | } | 23 | } |
25 | 24 | ||
26 | export enum RendererToMainIpcMessage { | 25 | export enum RendererToMainIpcMessage { |
27 | SharedStoreSnapshotRequest = 'sophie-renderer-to-main:shared-store-snapshot-request', | 26 | GetSharedStoreSnapshot = 'sophie-renderer-to-main:get-shared-store-snapshot', |
28 | SetBrowserViewBounds = 'sophie-renderer-to-main:set-browser-view-bounds', | 27 | DispatchAction = 'sophie-renderer-to-main:dispatch-action', |
29 | SetThemeSource = 'sophie-renderer-to-main:set-theme-source', | ||
30 | ReloadAllServices = 'sophie-renderer-to-main:reload-all-services', | ||
31 | } | 28 | } |
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({ | |||
29 | 29 | ||
30 | export type BrowserViewBounds = z.infer<typeof browserViewBounds>; | 30 | export type BrowserViewBounds = z.infer<typeof browserViewBounds>; |
31 | 31 | ||
32 | const setBrowserViewBoundsAction = z.object({ | ||
33 | action: z.literal('set-browser-view-bounds'), | ||
34 | browserViewBounds, | ||
35 | }); | ||
36 | |||
32 | export const themeSource = z.enum(['system', 'light', 'dark']); | 37 | export const themeSource = z.enum(['system', 'light', 'dark']); |
33 | 38 | ||
34 | export type ThemeSource = z.infer<typeof themeSource>; | 39 | export type ThemeSource = z.infer<typeof themeSource>; |
40 | |||
41 | const setThemeSourceAction = z.object({ | ||
42 | action: z.literal('set-theme-source'), | ||
43 | themeSource, | ||
44 | }); | ||
45 | |||
46 | const reloadAllServicesAction = z.object({ | ||
47 | action: z.literal('reload-all-services'), | ||
48 | }); | ||
49 | |||
50 | export const action = z.union([ | ||
51 | setBrowserViewBoundsAction, | ||
52 | setThemeSourceAction, | ||
53 | reloadAllServicesAction, | ||
54 | ]); | ||
55 | |||
56 | export type Action = z.infer<typeof action>; | ||