WIP updates

This commit is contained in:
Sacha Weatherstone
2022-11-27 22:50:46 +10:00
parent a9561fe622
commit e457cef3da
79 changed files with 2100 additions and 1284 deletions
+40 -4
View File
@@ -1,11 +1,24 @@
import { produce } from "immer";
import create from "zustand";
export interface RasterSource {
enabled: boolean;
title: string;
tiles: string[];
tileSize: number;
}
interface AppState {
selectedDevice: number;
devices: {
id: number;
num: number;
}[];
rasterSources: RasterSource[];
setRasterSources: (sources: RasterSource[]) => void;
addRasterSource: (source: RasterSource) => void;
removeRasterSource: (index: number) => void;
setSelectedDevice: (deviceId: number) => void;
addDevice: (device: { id: number; num: number }) => void;
@@ -16,17 +29,40 @@ export const useAppStore = create<AppState>()((set) => ({
selectedDevice: 0,
devices: [],
currentPage: "messages",
rasterSources: [],
setRasterSources: (sources: RasterSource[]) => {
set(
produce<AppState>((draft) => {
draft.rasterSources = sources;
})
);
},
addRasterSource: (source: RasterSource) => {
set(
produce<AppState>((draft) => {
draft.rasterSources.push(source);
})
);
},
removeRasterSource: (index: number) => {
set(
produce<AppState>((draft) => {
draft.rasterSources.splice(index, 1);
})
);
},
setSelectedDevice: (deviceId) =>
set(() => ({
selectedDevice: deviceId,
selectedDevice: deviceId
})),
addDevice: (device) =>
set((state) => ({
devices: [...state.devices, device],
devices: [...state.devices, device]
})),
removeDevice: (deviceId) =>
set((state) => ({
devices: state.devices.filter((device) => device.id !== deviceId),
})),
devices: state.devices.filter((device) => device.id !== deviceId)
}))
}));