diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-01-20 19:13:45 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-02-08 21:43:16 +0100 |
commit | cef1c2fd221e81424195026645386370662ef398 (patch) | |
tree | 77fc9d044adef735adb2c2acc0ba3e74858aa1f8 /packages/renderer/src | |
parent | refactor: Rename main services to infrastructure (diff) | |
download | sophie-cef1c2fd221e81424195026645386370662ef398.tar.gz sophie-cef1c2fd221e81424195026645386370662ef398.tar.zst sophie-cef1c2fd221e81424195026645386370662ef398.zip |
feat: Add selected service field to SharedStore
Lets the main process see which service is currently selected.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'packages/renderer/src')
-rw-r--r-- | packages/renderer/src/components/ServiceSwitcher.tsx | 15 | ||||
-rw-r--r-- | packages/renderer/src/stores/RendererStore.ts | 9 | ||||
-rw-r--r-- | packages/renderer/src/stores/SharedStore.ts | 2 |
3 files changed, 18 insertions, 8 deletions
diff --git a/packages/renderer/src/components/ServiceSwitcher.tsx b/packages/renderer/src/components/ServiceSwitcher.tsx index b454451..0786b71 100644 --- a/packages/renderer/src/components/ServiceSwitcher.tsx +++ b/packages/renderer/src/components/ServiceSwitcher.tsx | |||
@@ -22,7 +22,7 @@ import Tab from '@mui/material/Tab'; | |||
22 | import Tabs from '@mui/material/Tabs'; | 22 | import Tabs from '@mui/material/Tabs'; |
23 | import { alpha, styled } from '@mui/material/styles'; | 23 | import { alpha, styled } from '@mui/material/styles'; |
24 | import { observer } from 'mobx-react-lite'; | 24 | import { observer } from 'mobx-react-lite'; |
25 | import React, { useState } from 'react'; | 25 | import React from 'react'; |
26 | 26 | ||
27 | import ServiceIcon from './ServiceIcon'; | 27 | import ServiceIcon from './ServiceIcon'; |
28 | import { useStore } from './StoreProvider'; | 28 | import { useStore } from './StoreProvider'; |
@@ -62,18 +62,17 @@ const ServiceSwitcherTab = styled(Tab, { | |||
62 | })); | 62 | })); |
63 | 63 | ||
64 | export default observer(() => { | 64 | export default observer(() => { |
65 | const { services } = useStore(); | 65 | const store = useStore(); |
66 | // TODO Move this to the `SharedStore`. | 66 | const { selectedService, services } = store; |
67 | const [selectedService, setSelectedService] = useState<string | boolean>( | ||
68 | false, | ||
69 | ); | ||
70 | 67 | ||
71 | return ( | 68 | return ( |
72 | <ServiceSwitcherRoot | 69 | <ServiceSwitcherRoot |
73 | variant="scrollable" | 70 | variant="scrollable" |
74 | orientation="vertical" | 71 | orientation="vertical" |
75 | value={selectedService} | 72 | value={selectedService === undefined ? false : selectedService.id} |
76 | onChange={(_event, newValue: string) => setSelectedService(newValue)} | 73 | onChange={(_event, newValue: string) => |
74 | store.setSelectedServiceId(newValue) | ||
75 | } | ||
77 | > | 76 | > |
78 | {services.map((service) => ( | 77 | {services.map((service) => ( |
79 | <ServiceSwitcherTab | 78 | <ServiceSwitcherTab |
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts index d0e7843..731ca28 100644 --- a/packages/renderer/src/stores/RendererStore.ts +++ b/packages/renderer/src/stores/RendererStore.ts | |||
@@ -42,8 +42,17 @@ export const rendererStore = types | |||
42 | get services(): Service[] { | 42 | get services(): Service[] { |
43 | return this.config.services; | 43 | return this.config.services; |
44 | }, | 44 | }, |
45 | get selectedService(): Service | undefined { | ||
46 | return self.shared.selectedService; | ||
47 | }, | ||
45 | })) | 48 | })) |
46 | .actions((self) => ({ | 49 | .actions((self) => ({ |
50 | setSelectedServiceId(serviceId: string): void { | ||
51 | getEnv(self).dispatchMainAction({ | ||
52 | action: 'set-selected-service-id', | ||
53 | serviceId, | ||
54 | }); | ||
55 | }, | ||
47 | setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void { | 56 | setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void { |
48 | getEnv(self).dispatchMainAction({ | 57 | getEnv(self).dispatchMainAction({ |
49 | action: 'set-browser-view-bounds', | 58 | action: 'set-browser-view-bounds', |
diff --git a/packages/renderer/src/stores/SharedStore.ts b/packages/renderer/src/stores/SharedStore.ts index baaf061..962f7e2 100644 --- a/packages/renderer/src/stores/SharedStore.ts +++ b/packages/renderer/src/stores/SharedStore.ts | |||
@@ -22,9 +22,11 @@ import { sharedStore as originalSharedStore } from '@sophie/shared'; | |||
22 | import { Instance, types } from 'mobx-state-tree'; | 22 | import { Instance, types } from 'mobx-state-tree'; |
23 | 23 | ||
24 | import { config } from './Config'; | 24 | import { config } from './Config'; |
25 | import { service } from './Service'; | ||
25 | 26 | ||
26 | export const sharedStore = originalSharedStore.props({ | 27 | export const sharedStore = originalSharedStore.props({ |
27 | config: types.optional(config, {}), | 28 | config: types.optional(config, {}), |
29 | selectedService: types.safeReference(service), | ||
28 | }); | 30 | }); |
29 | 31 | ||
30 | export interface SharedStore extends Instance<typeof sharedStore> {} | 32 | export interface SharedStore extends Instance<typeof sharedStore> {} |