aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'packages/renderer')
-rw-r--r--packages/renderer/src/components/locationBar/GoAdornment.tsx9
-rw-r--r--packages/renderer/src/components/locationBar/LocationTextField.tsx19
-rw-r--r--packages/renderer/src/components/locationBar/NavigationButtons.tsx16
-rw-r--r--packages/renderer/src/stores/Service.ts46
4 files changed, 79 insertions, 11 deletions
diff --git a/packages/renderer/src/components/locationBar/GoAdornment.tsx b/packages/renderer/src/components/locationBar/GoAdornment.tsx
index 43c8b7b..f049b8e 100644
--- a/packages/renderer/src/components/locationBar/GoAdornment.tsx
+++ b/packages/renderer/src/components/locationBar/GoAdornment.tsx
@@ -20,11 +20,15 @@
20 20
21import IconGo from '@mui/icons-material/Send'; 21import IconGo from '@mui/icons-material/Send';
22import Button from '@mui/material/Button'; 22import Button from '@mui/material/Button';
23import React from 'react'; 23import React, { MouseEventHandler } from 'react';
24 24
25import ButtonAdornment, { NO_LABEL_BUTTON_CLASS_NAME } from './ButtonAdornment'; 25import ButtonAdornment, { NO_LABEL_BUTTON_CLASS_NAME } from './ButtonAdornment';
26 26
27export default function GoAdornment(): JSX.Element { 27export default function GoAdornment({
28 onClick,
29}: {
30 onClick: MouseEventHandler<HTMLButtonElement>;
31}): JSX.Element {
28 return ( 32 return (
29 <ButtonAdornment position="end"> 33 <ButtonAdornment position="end">
30 <Button 34 <Button
@@ -32,6 +36,7 @@ export default function GoAdornment(): JSX.Element {
32 color="inherit" 36 color="inherit"
33 startIcon={<IconGo />} 37 startIcon={<IconGo />}
34 className={NO_LABEL_BUTTON_CLASS_NAME} 38 className={NO_LABEL_BUTTON_CLASS_NAME}
39 onClick={onClick}
35 /> 40 />
36 </ButtonAdornment> 41 </ButtonAdornment>
37 ); 42 );
diff --git a/packages/renderer/src/components/locationBar/LocationTextField.tsx b/packages/renderer/src/components/locationBar/LocationTextField.tsx
index e6da59f..e711abc 100644
--- a/packages/renderer/src/components/locationBar/LocationTextField.tsx
+++ b/packages/renderer/src/components/locationBar/LocationTextField.tsx
@@ -94,9 +94,18 @@ function LocationTextField({
94 setChanged(true); 94 setChanged(true);
95 }} 95 }}
96 onKeyUp={(event) => { 96 onKeyUp={(event) => {
97 if (event.key === 'Escape') { 97 switch (event.key) {
98 resetValue(); 98 case 'Escape':
99 event.preventDefault(); 99 resetValue();
100 event.preventDefault();
101 break;
102 case 'Enter':
103 service?.go(value);
104 event.preventDefault();
105 break;
106 default:
107 // Nothing to do, let the key event through.
108 break;
100 } 109 }
101 }} 110 }}
102 size="small" 111 size="small"
@@ -106,7 +115,9 @@ function LocationTextField({
106 startAdornment={ 115 startAdornment={
107 <UrlAdornment changed={changed} splitResult={splitResult} /> 116 <UrlAdornment changed={changed} splitResult={splitResult} />
108 } 117 }
109 endAdornment={changed ? <GoAdornment /> : undefined} 118 endAdornment={
119 changed ? <GoAdornment onClick={() => service?.go(value)} /> : undefined
120 }
110 value={value} 121 value={value}
111 /> 122 />
112 ); 123 );
diff --git a/packages/renderer/src/components/locationBar/NavigationButtons.tsx b/packages/renderer/src/components/locationBar/NavigationButtons.tsx
index ce59692..e71d3d8 100644
--- a/packages/renderer/src/components/locationBar/NavigationButtons.tsx
+++ b/packages/renderer/src/components/locationBar/NavigationButtons.tsx
@@ -48,25 +48,35 @@ function NavigationButtons({
48 <IconButton 48 <IconButton
49 aria-label="Back" 49 aria-label="Back"
50 disabled={service === undefined || !service.canGoBack} 50 disabled={service === undefined || !service.canGoBack}
51 onClick={() => service?.goBack()}
51 > 52 >
52 {direction === 'ltr' ? <IconArrowBack /> : <IconArrowForward />} 53 {direction === 'ltr' ? <IconArrowBack /> : <IconArrowForward />}
53 </IconButton> 54 </IconButton>
54 <IconButton 55 <IconButton
55 aria-label="Forward" 56 aria-label="Forward"
56 disabled={service === undefined || !service.canGoForward} 57 disabled={service === undefined || !service.canGoForward}
58 onClick={() => service?.goForward()}
57 > 59 >
58 {direction === 'ltr' ? <IconArrowForward /> : <IconArrowBack />} 60 {direction === 'ltr' ? <IconArrowForward /> : <IconArrowBack />}
59 </IconButton> 61 </IconButton>
60 {service?.state === 'loading' ? ( 62 {service?.state === 'loading' ? (
61 <IconButton aria-label="Stop"> 63 <IconButton aria-label="Stop" onClick={() => service?.stop()}>
62 <IconStop /> 64 <IconStop />
63 </IconButton> 65 </IconButton>
64 ) : ( 66 ) : (
65 <IconButton aria-label="Refresh" disabled={service === undefined}> 67 <IconButton
68 aria-label="Refresh"
69 disabled={service === undefined}
70 onClick={(event) => service?.reload(event.shiftKey)}
71 >
66 <IconRefresh /> 72 <IconRefresh />
67 </IconButton> 73 </IconButton>
68 )} 74 )}
69 <IconButton aria-label="Home" disabled={service === undefined}> 75 <IconButton
76 aria-label="Home"
77 disabled={service === undefined}
78 onClick={() => service?.goHome()}
79 >
70 <IconHome /> 80 <IconHome />
71 </IconButton> 81 </IconButton>
72 </Box> 82 </Box>
diff --git a/packages/renderer/src/stores/Service.ts b/packages/renderer/src/stores/Service.ts
index c2c938a..7878ea0 100644
--- a/packages/renderer/src/stores/Service.ts
+++ b/packages/renderer/src/stores/Service.ts
@@ -18,12 +18,54 @@
18 * SPDX-License-Identifier: AGPL-3.0-only 18 * SPDX-License-Identifier: AGPL-3.0-only
19 */ 19 */
20 20
21import { defineServiceModel } from '@sophie/shared'; 21import { defineServiceModel, ServiceAction } from '@sophie/shared';
22import { Instance } from 'mobx-state-tree'; 22import { Instance } from 'mobx-state-tree';
23 23
24import getEnv from '../env/getEnv';
25
24import ServiceSettings from './ServiceSettings'; 26import ServiceSettings from './ServiceSettings';
25 27
26const Service = defineServiceModel(ServiceSettings); 28const Service = defineServiceModel(ServiceSettings).actions((self) => ({
29 dispatch(serviceAction: ServiceAction): void {
30 getEnv(self).dispatchMainAction({
31 action: 'dispatch-service-action',
32 serviceId: self.id,
33 serviceAction,
34 });
35 },
36 goBack(): void {
37 this.dispatch({
38 action: 'back',
39 });
40 },
41 goForward(): void {
42 this.dispatch({
43 action: 'forward',
44 });
45 },
46 reload(ignoreCache = false): void {
47 this.dispatch({
48 action: 'reload',
49 ignoreCache,
50 });
51 },
52 stop(): void {
53 this.dispatch({
54 action: 'stop',
55 });
56 },
57 go(url: string): void {
58 this.dispatch({
59 action: 'go',
60 url,
61 });
62 },
63 goHome(): void {
64 this.dispatch({
65 action: 'go-home',
66 });
67 },
68}));
27 69
28/* 70/*
29 eslint-disable-next-line @typescript-eslint/no-redeclare -- 71 eslint-disable-next-line @typescript-eslint/no-redeclare --