mirror of
https://github.com/RoboSats/robosats.git
synced 2025-07-26 05:43:22 +00:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { Robot, Order } from '.';
|
|
import { systemClient } from '../services/System';
|
|
import { saveAsJson } from '../utils';
|
|
export interface Slot {
|
|
robot: Robot;
|
|
order: Order | null;
|
|
}
|
|
|
|
const emptySlot: Slot = { robot: new Robot(), order: null };
|
|
|
|
class Garage {
|
|
constructor(initialState?: Garage) {
|
|
const slotsDump: string | undefined = systemClient.getItem('garage');
|
|
if (initialState?.slots === undefined && slotsDump != '') {
|
|
this.slots = JSON.parse(slotsDump);
|
|
console.log('Robot Garage was loaded from local storage');
|
|
} else {
|
|
this.slots = [emptySlot];
|
|
}
|
|
this.setGarage = initialState?.setGarage ?? (() => {});
|
|
}
|
|
|
|
slots: Slot[] = [emptySlot];
|
|
setGarage: (state: Garage) => void = () => {};
|
|
|
|
save = () => {
|
|
systemClient.setItem('garage', JSON.stringify(this.slots));
|
|
this.setGarage(new Garage(this));
|
|
};
|
|
|
|
delete = () => {
|
|
this.slots = [emptySlot];
|
|
systemClient.deleteItem('garage');
|
|
this.save();
|
|
};
|
|
|
|
updateRobot: (robot: Robot, index: number) => void = (robot, index) => {
|
|
this.slots[index] = { robot, order: null };
|
|
this.save();
|
|
};
|
|
|
|
download = () => {
|
|
saveAsJson(`robotGarage_${new Date().toISOString()}.json`, this.slots);
|
|
};
|
|
|
|
deleteSlot: (index?: number) => void = (index) => {
|
|
const targetSlot = index ?? this.slots.length - 1;
|
|
this.slots.splice(targetSlot, 1);
|
|
this.save();
|
|
};
|
|
}
|
|
|
|
export default Garage;
|