add new dialogs & cleanup

This commit is contained in:
Sacha Weatherstone
2022-12-11 14:38:55 +10:00
parent fad08fe806
commit 916dcdb600
19 changed files with 388 additions and 259 deletions
+11 -2
View File
@@ -15,6 +15,7 @@ interface AppState {
num: number;
}[];
rasterSources: RasterSource[];
commandPaletteOpen: boolean;
setRasterSources: (sources: RasterSource[]) => void;
addRasterSource: (source: RasterSource) => void;
@@ -23,6 +24,7 @@ interface AppState {
setSelectedDevice: (deviceId: number) => void;
addDevice: (device: { id: number; num: number }) => void;
removeDevice: (deviceId: number) => void;
setCommandPaletteOpen: (open: boolean) => void;
}
export const useAppStore = create<AppState>()((set) => ({
@@ -30,6 +32,7 @@ export const useAppStore = create<AppState>()((set) => ({
devices: [],
currentPage: "messages",
rasterSources: [],
commandPaletteOpen: false,
setRasterSources: (sources: RasterSource[]) => {
set(
@@ -52,7 +55,6 @@ export const useAppStore = create<AppState>()((set) => ({
})
);
},
setSelectedDevice: (deviceId) =>
set(() => ({
selectedDevice: deviceId
@@ -64,5 +66,12 @@ export const useAppStore = create<AppState>()((set) => ({
removeDevice: (deviceId) =>
set((state) => ({
devices: state.devices.filter((device) => device.id !== deviceId)
}))
})),
setCommandPaletteOpen: (open: boolean) => {
set(
produce<AppState>((draft) => {
draft.commandPaletteOpen = open;
})
);
}
}));
+26
View File
@@ -56,6 +56,8 @@ export interface Device {
regionUnset: boolean;
currentMetrics: Protobuf.DeviceMetrics;
QRDialogOpen: boolean;
shutdownDialogOpen: boolean;
rebootDialogOpen: boolean;
pendingSettingsChanges: boolean;
setReady(ready: boolean): void;
@@ -79,6 +81,8 @@ export interface Device {
addDeviceMetadataMessage: (metadata: Types.DeviceMetadataPacket) => void;
ackMessage: (channelIndex: number, messageId: number) => void;
setQRDialogOpen: (open: boolean) => void;
setShutdownDialogOpen: (open: boolean) => void;
setRebootDialogOpen: (open: boolean) => void;
}
export interface DeviceState {
@@ -115,6 +119,8 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
regionUnset: false,
currentMetrics: Protobuf.DeviceMetrics.create(),
QRDialogOpen: false,
shutdownDialogOpen: false,
rebootDialogOpen: false,
pendingSettingsChanges: false,
setReady: (ready: boolean) => {
@@ -539,6 +545,26 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
}
})
);
},
setShutdownDialogOpen: (open: boolean) => {
set(
produce<DeviceState>((draft) => {
const device = draft.devices.get(id);
if (device) {
device.shutdownDialogOpen = open;
}
})
);
},
setRebootDialogOpen: (open: boolean) => {
set(
produce<DeviceState>((draft) => {
const device = draft.devices.get(id);
if (device) {
device.rebootDialogOpen = open;
}
})
);
}
});
})