aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 21:12:08 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 21:15:53 +0100
commita2651dff66faf98dc1a6f924227af454eaa2311d (patch)
tree7f15c402d449b934d5a2b7858aa16523e9fc121e /packages/shared
parentrefactor: Rename RootStore to RendererStore (diff)
downloadsophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.gz
sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.zst
sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.zip
refactor: Less boilerplate around SophieRenderer
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/src/contextBridge/SophieRenderer.ts10
-rw-r--r--packages/shared/src/index.ts2
-rw-r--r--packages/shared/src/ipc.ts7
-rw-r--r--packages/shared/src/schemas.ts22
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
21import { SharedStoreListener } from '../stores/SharedStore'; 21import { SharedStoreListener } from '../stores/SharedStore';
22 22
23import { BrowserViewBounds, ThemeSource } from '../schemas'; 23import { Action } from '../schemas';
24 24
25export interface SophieRenderer { 25export 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
28export type { 28export type {
29 Action,
29 BrowserViewBounds, 30 BrowserViewBounds,
30 ThemeSource, 31 ThemeSource,
31} from './schemas'; 32} from './schemas';
32export { 33export {
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
21export enum MainToRendererIpcMessage { 21export 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
26export enum RendererToMainIpcMessage { 25export 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
30export type BrowserViewBounds = z.infer<typeof browserViewBounds>; 30export type BrowserViewBounds = z.infer<typeof browserViewBounds>;
31 31
32const setBrowserViewBoundsAction = z.object({
33 action: z.literal('set-browser-view-bounds'),
34 browserViewBounds,
35});
36
32export const themeSource = z.enum(['system', 'light', 'dark']); 37export const themeSource = z.enum(['system', 'light', 'dark']);
33 38
34export type ThemeSource = z.infer<typeof themeSource>; 39export type ThemeSource = z.infer<typeof themeSource>;
40
41const setThemeSourceAction = z.object({
42 action: z.literal('set-theme-source'),
43 themeSource,
44});
45
46const reloadAllServicesAction = z.object({
47 action: z.literal('reload-all-services'),
48});
49
50export const action = z.union([
51 setBrowserViewBoundsAction,
52 setThemeSourceAction,
53 reloadAllServicesAction,
54]);
55
56export type Action = z.infer<typeof action>;