persist vm session

This commit is contained in:
Rachel Powers
2024-04-20 01:39:10 -07:00
parent 9a374a4f73
commit e4d42d69a5
17 changed files with 321 additions and 85 deletions

View File

@@ -127,6 +127,7 @@ class VirtualMachine extends EventTarget {
detail: ids,
}),
);
this.app.session.save();
}
}
@@ -152,7 +153,7 @@ class VirtualMachine extends EventTarget {
}
}
}
this.update();
this.update(false);
}
step() {
@@ -193,7 +194,7 @@ class VirtualMachine extends EventTarget {
}
}
update() {
update(save: boolean = true) {
this.updateDevices();
this.ic10vm.lastOperationModified.forEach((id, _index, _modifiedIds) => {
if (this.devices.has(id)) {
@@ -202,16 +203,18 @@ class VirtualMachine extends EventTarget {
);
}
}, this);
this.updateDevice(this.activeIC);
this.updateDevice(this.activeIC, save);
if (save) this.app.session.save();
}
updateDevice(device: DeviceRef) {
updateDevice(device: DeviceRef, save: boolean = true) {
this.dispatchEvent(
new CustomEvent("vm-device-modified", { detail: device.id }),
);
if (typeof device.ic !== "undefined") {
this.app.session.setActiveLine(device.id, device.ip!);
}
if (save) this.app.session.save();
}
handleVmError(err: Error) {
@@ -272,6 +275,7 @@ class VirtualMachine extends EventTarget {
this.dispatchEvent(
new CustomEvent("vm-device-modified", { detail: id }),
);
this.app.session.save();
return true;
} catch (e) {
this.handleVmError(e);
@@ -372,6 +376,7 @@ class VirtualMachine extends EventTarget {
detail: Array.from(device_ids),
}),
);
this.app.session.save();
return true;
} catch (err) {
this.handleVmError(err);
@@ -413,9 +418,4 @@ class VirtualMachine extends EventTarget {
}
}
export interface VMState {
activeIC: number;
vm: FrozenVM;
}
export { VirtualMachine };