Skip to content

Commit c5ee950

Browse files
Added application slice and relevant state for controlling modal
1 parent da3863a commit c5ee950

3 files changed

Lines changed: 72 additions & 52 deletions

File tree

gcs/src/components/toolbar/toolbar.jsx

Lines changed: 39 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,62 +16,53 @@ import AdvancedMenu from "./menus/advanced.jsx"
1616
import FileMenu from "./menus/file.jsx"
1717
import ViewMenu from "./menus/view.jsx"
1818

19-
2019
// Redux
2120
import { useSelector } from "react-redux"
2221
import { selectConnectedToDrone } from "../../redux/slices/droneConnectionSlice.js"
2322
import { Button, Group, Modal } from "@mantine/core"
2423

25-
2624
// Tailwind
2725
import tailwindConfig from "../../../tailwind.config.js"
2826
const tailwindColors = resolveConfig(tailwindConfig).theme.colors
2927

30-
3128
function ConfirmExitModal() {
32-
33-
return (
34-
<Modal
35-
opened={false}
36-
onClose={() => {
37-
}}
38-
title="Confirm Quit"
39-
centered
40-
overlayProps={{
41-
backgroundOpacity: 0.55,
42-
blur: 3,
43-
}}
44-
styles={{
45-
content: {
46-
borderRadius: "0.5rem",
47-
},
48-
}}
49-
withCloseButton={true}
50-
>
51-
52-
<Group justify="space-between" className="pt-4">
53-
<Button
54-
variant="filled"
55-
color={tailwindColors.red[600]}
56-
onClick={() => {
57-
}}
58-
>
59-
Close
60-
</Button>
61-
<Button
62-
variant="filled"
63-
type="submit"
64-
color={tailwindColors.green[600]}
65-
>
66-
Connect
67-
</Button>
68-
</Group>
69-
70-
</Modal>
71-
)
29+
return (
30+
<Modal
31+
opened={false}
32+
onClose={() => {}}
33+
title="Confirm Quit"
34+
centered
35+
overlayProps={{
36+
backgroundOpacity: 0.55,
37+
blur: 3,
38+
}}
39+
styles={{
40+
content: {
41+
borderRadius: "0.5rem",
42+
},
43+
}}
44+
withCloseButton={true}
45+
>
46+
<Group justify="space-between" className="pt-4">
47+
<Button
48+
variant="filled"
49+
color={tailwindColors.red[600]}
50+
onClick={() => {}}
51+
>
52+
Close
53+
</Button>
54+
<Button
55+
variant="filled"
56+
type="submit"
57+
color={tailwindColors.green[600]}
58+
>
59+
Connect
60+
</Button>
61+
</Group>
62+
</Modal>
63+
)
7264
}
7365

74-
7566
export default function Toolbar() {
7667
const [areMenusActive, setMenusActive] = useState(false)
7768
const [isMac, setIsMac] = useState(false)
@@ -86,11 +77,9 @@ export default function Toolbar() {
8677
}, [])
8778

8879
const onClose = () => {
89-
if (connectedToDrone) {
90-
setConfirmModelOpen(true);
91-
}
92-
93-
80+
if (connectedToDrone) {
81+
setConfirmModelOpen(true)
82+
}
9483
}
9584

9685
return (
@@ -177,8 +166,7 @@ export default function Toolbar() {
177166
)}
178167
</div>
179168

180-
<ConfirmExitModal></ConfirmExitModal>
181-
169+
<ConfirmExitModal></ConfirmExitModal>
182170
</>
183171
)
184172
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { createSlice } from "@reduxjs/toolkit"
2+
import droneConnectionSlice from "./droneConnectionSlice"
3+
4+
const initialState = {
5+
confirmExitModalOpen: false,
6+
}
7+
8+
const applicationSlice = createSlice({
9+
name: "application",
10+
initialState,
11+
reducers: {
12+
// Setters
13+
setConfirmExitModalOpen: (state, action) => {
14+
if (action.payload !== state.confirmExitModalOpen) {
15+
state.confirmExitModalOpen = action.payload
16+
}
17+
},
18+
},
19+
selectors: {
20+
selectConfirmExitModalOpen: (state) => state.confirmExitModalOpen,
21+
},
22+
})
23+
24+
export const {
25+
setConfirmExitModalOpen
26+
} = applicationSlice.actions
27+
export const {
28+
selectConfirmExitModalOpen
29+
} = applicationSlice.selectors
30+
31+
export default droneConnectionSlice

gcs/src/redux/store.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { combineSlices, configureStore } from "@reduxjs/toolkit"
22
import droneInfoSlice, { setGraphValues } from "./slices/droneInfoSlice"
33
import logAnalyserSlice from "./slices/logAnalyserSlice"
44
import socketSlice from "./slices/socketSlice"
5-
5+
import applicationSlice from "./slices/applicationSlice"
66
import socketMiddleware from "./middleware/socketMiddleware"
77
import configSlice from "./slices/configSlice"
88
import droneConnectionSlice, {
@@ -30,6 +30,7 @@ const rootReducer = combineSlices(
3030
statusTextSlice,
3131
paramsSlice,
3232
configSlice,
33+
applicationSlice
3334
)
3435

3536
export const store = configureStore({

0 commit comments

Comments
 (0)