aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-20 19:13:45 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-02-08 21:43:16 +0100
commitcef1c2fd221e81424195026645386370662ef398 (patch)
tree77fc9d044adef735adb2c2acc0ba3e74858aa1f8 /packages/renderer/src
parentrefactor: Rename main services to infrastructure (diff)
downloadsophie-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.tsx15
-rw-r--r--packages/renderer/src/stores/RendererStore.ts9
-rw-r--r--packages/renderer/src/stores/SharedStore.ts2
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';
22import Tabs from '@mui/material/Tabs'; 22import Tabs from '@mui/material/Tabs';
23import { alpha, styled } from '@mui/material/styles'; 23import { alpha, styled } from '@mui/material/styles';
24import { observer } from 'mobx-react-lite'; 24import { observer } from 'mobx-react-lite';
25import React, { useState } from 'react'; 25import React from 'react';
26 26
27import ServiceIcon from './ServiceIcon'; 27import ServiceIcon from './ServiceIcon';
28import { useStore } from './StoreProvider'; 28import { useStore } from './StoreProvider';
@@ -62,18 +62,17 @@ const ServiceSwitcherTab = styled(Tab, {
62})); 62}));
63 63
64export default observer(() => { 64export 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';
22import { Instance, types } from 'mobx-state-tree'; 22import { Instance, types } from 'mobx-state-tree';
23 23
24import { config } from './Config'; 24import { config } from './Config';
25import { service } from './Service';
25 26
26export const sharedStore = originalSharedStore.props({ 27export const sharedStore = originalSharedStore.props({
27 config: types.optional(config, {}), 28 config: types.optional(config, {}),
29 selectedService: types.safeReference(service),
28}); 30});
29 31
30export interface SharedStore extends Instance<typeof sharedStore> {} 32export interface SharedStore extends Instance<typeof sharedStore> {}