From 4de367b0bbe5b7138aa5736dede9cd229fc32757 Mon Sep 17 00:00:00 2001 From: Vitalii Lysak Date: Thu, 14 Jul 2022 21:24:15 +0300 Subject: add file name to localStorage --- src/views/Operations/VirtualMedia/VirtualMedia.vue | 81 +++++++++++++++++++--- 1 file changed, 70 insertions(+), 11 deletions(-) diff --git a/src/views/Operations/VirtualMedia/VirtualMedia.vue b/src/views/Operations/VirtualMedia/VirtualMedia.vue index ef4f27b8..189f93c1 100644 --- a/src/views/Operations/VirtualMedia/VirtualMedia.vue +++ b/src/views/Operations/VirtualMedia/VirtualMedia.vue @@ -11,10 +11,10 @@ @@ -27,7 +27,11 @@
@@ -35,7 +39,7 @@
0 || this.legacyDevices.length > 0) return; this.startLoader(); - this.$store - .dispatch('virtualMedia/getData') - .finally(() => this.endLoader()); + this.$store.dispatch('virtualMedia/getData').finally(() => { + this.proxyDevices = this.$store.getters['virtualMedia/proxyDevices']; + this.recoverFromStorage(); + this.endLoader(); + }); }, methods: { + isDeviceActive(device) { + return device.isActive || (device.file && device.file.recovered); + }, + recoverFromStorage() { + const storedVirtualMedia = + JSON.parse(localStorage.getItem('storedVirtualMedia')) || []; + + storedVirtualMedia.forEach((storedDevice) => { + this.proxyDevices = this.proxyDevices.map((device) => { + if (device.id === storedDevice.id) { + return { + ...device, + file: { name: storedDevice.name, recovered: true }, + }; + } + + return device; + }); + }); + }, + + addToStorage(device) { + const storedVirtualMedia = + JSON.parse(localStorage.getItem('storedVirtualMedia')) || []; + + storedVirtualMedia.push({ id: device.id, name: device.file.name }); + + localStorage.setItem( + 'storedVirtualMedia', + JSON.stringify(storedVirtualMedia) + ); + }, + + removeFromStorage(id) { + const storedVirtualMedia = JSON.parse( + localStorage.getItem('storedVirtualMedia') + ); + + const indexOfDevice = storedVirtualMedia.findIndex((device) => { + return device.id === id; + }); + + storedVirtualMedia.splice(indexOfDevice, 1); + + if (storedVirtualMedia.length > 0) { + localStorage.setItem( + 'storedVirtualMedia', + JSON.stringify(storedVirtualMedia) + ); + } else { + localStorage.removeItem('storedVirtualMedia'); + } + }, startVM(device) { const token = this.$store.getters['authentication/token']; device.nbd = new NbdServer( @@ -180,10 +237,12 @@ export default { }; device.nbd.start(); + this.addToStorage(device); device.isActive = true; }, stopVM(device) { device.nbd.stop(); + this.removeFromStorage(device.id); }, startLegacy(connectionData) { var data = {}; -- cgit v1.2.3