From 60b4ee7ba27bee3b8ece01b1b5a681a03e52762c Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 1/6] Add `localforage` package This package makes working with the browser databases a breeze. --- bun.lockb | Bin 369937 -> 370980 bytes package.json | 1 + 2 files changed, 1 insertion(+) diff --git a/bun.lockb b/bun.lockb index d6a1139ca9f29983c8fbdda09e3e76246f7151cb..d1ecbf665931bb139d0cd12128d71c60498705e4 100755 GIT binary patch delta 69256 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

k@VWe(Ms>atXV_UUzJ^OVVrc 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 z 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 Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 2/6] Define video filename on recording start --- src/components/mini-widgets/MiniVideoRecorder.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/mini-widgets/MiniVideoRecorder.vue b/src/components/mini-widgets/MiniVideoRecorder.vue index 3a7ea2e9e..c49b237cb 100644 --- a/src/components/mini-widgets/MiniVideoRecorder.vue +++ b/src/components/mini-widgets/MiniVideoRecorder.vue @@ -183,6 +183,7 @@ const startRecording = async (): Promise => { } timeRecordingStart.value = new Date() + const fileName = `${missionName || 'Cockpit'} (${format(timeRecordingStart.value, 'LLL dd, yyyy - HH꞉mm꞉ss O')})` mediaRecorder.value = new MediaRecorder(mediaStream.value) mediaRecorder.value.start() let chunks: Blob[] = [] @@ -191,7 +192,6 @@ const startRecording = async (): Promise => { mediaRecorder.value.onstop = () => { const blob = new Blob(chunks, { type: 'video/webm' }) fixWebmDuration(blob, Date.now() - timeRecordingStart.value.getTime()).then((fixedBlob) => { - const fileName = `${missionName || 'Cockpit'} (${format(timeRecordingStart.value, 'LLL dd, yyyy - HH꞉mm꞉ss O')})` saveAs(fixedBlob, fileName) }) chunks = [] From 4038e8d674bad61dd083be80e5b65ca534a50570 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 3/6] Generate video recording chunks every second This is needed so we can trigger the `ondataevailable` callback and use it to store periodic video backups. --- src/components/mini-widgets/MiniVideoRecorder.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/mini-widgets/MiniVideoRecorder.vue b/src/components/mini-widgets/MiniVideoRecorder.vue index c49b237cb..4fdfceb17 100644 --- a/src/components/mini-widgets/MiniVideoRecorder.vue +++ b/src/components/mini-widgets/MiniVideoRecorder.vue @@ -185,7 +185,7 @@ const startRecording = async (): Promise => { timeRecordingStart.value = new Date() const fileName = `${missionName || 'Cockpit'} (${format(timeRecordingStart.value, 'LLL dd, yyyy - HH꞉mm꞉ss O')})` mediaRecorder.value = new MediaRecorder(mediaStream.value) - mediaRecorder.value.start() + mediaRecorder.value.start(1000) let chunks: Blob[] = [] mediaRecorder.value.ondataavailable = (e) => chunks.push(e.data) From 56d10728d7dcbdb165d8b4cdd178d6fdca448db5 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 4/6] Save (and update) a backup of the video recording everytime new video data is available With this, there are no more chances of the user losing a video recording because of power loss or cockpit termination. --- src/components/mini-widgets/MiniVideoRecorder.vue | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/components/mini-widgets/MiniVideoRecorder.vue b/src/components/mini-widgets/MiniVideoRecorder.vue index 4fdfceb17..31330bbd9 100644 --- a/src/components/mini-widgets/MiniVideoRecorder.vue +++ b/src/components/mini-widgets/MiniVideoRecorder.vue @@ -57,6 +57,7 @@ import { useMouseInElement, useTimestamp } from '@vueuse/core' import { format, intervalToDuration } from 'date-fns' import { saveAs } from 'file-saver' import fixWebmDuration from 'fix-webm-duration' +import localforage from 'localforage' import { storeToRefs } from 'pinia' import Swal, { type SweetAlertResult } from 'sweetalert2' import { computed, onBeforeMount, onBeforeUnmount, ref, toRefs, watch } from 'vue' @@ -101,6 +102,14 @@ const isRecording = computed(() => { return mediaRecorder.value !== undefined && mediaRecorder.value.state === 'recording' }) +const cockpitVideoDB = localforage.createInstance({ + driver: localforage.INDEXEDDB, + name: 'CockpitVideoDB', + storeName: 'cockpit-video-db', + version: 1.0, + description: 'Local backups of Cockpit video recordings to be retrieved in case of failure.', +}) + onBeforeMount(async () => { // Set initial widget options if they don't exist if (Object.keys(miniWidget.value.options).length === 0) { @@ -187,12 +196,16 @@ const startRecording = async (): Promise => { mediaRecorder.value = new MediaRecorder(mediaStream.value) mediaRecorder.value.start(1000) let chunks: Blob[] = [] - mediaRecorder.value.ondataavailable = (e) => chunks.push(e.data) + mediaRecorder.value.ondataavailable = async (e) => { + chunks.push(e.data) + await cockpitVideoDB.setItem(fileName, chunks) + } mediaRecorder.value.onstop = () => { const blob = new Blob(chunks, { type: 'video/webm' }) fixWebmDuration(blob, Date.now() - timeRecordingStart.value.getTime()).then((fixedBlob) => { saveAs(fixedBlob, fileName) + cockpitVideoDB.removeItem(fileName) }) chunks = [] mediaRecorder.value = undefined From 7fc2d8027c30b4c86139a5d3398f13d3e3a3755b Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 5/6] Offer download of video recording backups if they are available Remove them, independently if they were downloaded or not. --- src/stores/video.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/stores/video.ts b/src/stores/video.ts index 3e9718275..5243fd643 100644 --- a/src/stores/video.ts +++ b/src/stores/video.ts @@ -1,4 +1,6 @@ import { useStorage } from '@vueuse/core' +import { saveAs } from 'file-saver' +import localforage from 'localforage' import { defineStore } from 'pinia' import { reactive } from 'vue' @@ -6,5 +8,22 @@ export const useVideoStore = defineStore('video', () => { const availableIceIps = reactive([]) const allowedIceIps = useStorage('cockpit-allowed-stream-ips', []) + // Offer download of backuped videos + const cockpitVideoDB = localforage.createInstance({ + driver: localforage.INDEXEDDB, + name: 'CockpitVideoDB', + storeName: 'cockpit-video-db', + version: 1.0, + description: 'Local backups of Cockpit video recordings to be retrieved in case of failure.', + }) + + cockpitVideoDB.iterate((videoFile, videoName) => { + const blob = (videoFile as Blob[]).reduce((a, b) => new Blob([a, b], { type: 'video/webm' })) + saveAs(blob, videoName) + }) + cockpitVideoDB.iterate((_, videoName) => { + cockpitVideoDB.removeItem(videoName) + }) + return { availableIceIps, allowedIceIps } }) From 46bed7fc34d5488476fbc95dd3a605514e3a95c2 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 24 Nov 2023 15:25:45 -0300 Subject: [PATCH 6/6] Add proper alert with information about the recovered video files --- src/stores/video.ts | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/stores/video.ts b/src/stores/video.ts index 5243fd643..0d534fd93 100644 --- a/src/stores/video.ts +++ b/src/stores/video.ts @@ -2,6 +2,7 @@ import { useStorage } from '@vueuse/core' import { saveAs } from 'file-saver' import localforage from 'localforage' import { defineStore } from 'pinia' +import Swal from 'sweetalert2' import { reactive } from 'vue' export const useVideoStore = defineStore('video', () => { @@ -17,12 +18,34 @@ export const useVideoStore = defineStore('video', () => { description: 'Local backups of Cockpit video recordings to be retrieved in case of failure.', }) - cockpitVideoDB.iterate((videoFile, videoName) => { - const blob = (videoFile as Blob[]).reduce((a, b) => new Blob([a, b], { type: 'video/webm' })) - saveAs(blob, videoName) - }) - cockpitVideoDB.iterate((_, videoName) => { - cockpitVideoDB.removeItem(videoName) + cockpitVideoDB.length().then((len) => { + if (len === 0) return + + Swal.fire({ + title: 'Video recording recovery', + text: `Cockpit has pending backups for videos that you started recording but did not download. + Click 'Discard' to remove the backuped files. + Click 'Dismiss' to postpone this decision for the next boot. + Click 'Download' to download the files. If you decide to download them, they will be removed afterwards. + `, + icon: 'warning', + showDenyButton: true, + showCancelButton: true, + confirmButtonText: 'Download', + denyButtonText: 'Discard', + cancelButtonText: 'Dismiss', + }).then((decision) => { + if (decision.isDismissed) return + if (decision.isDenied) { + cockpitVideoDB.iterate((_, videoName) => cockpitVideoDB.removeItem(videoName)) + } else if (decision.isConfirmed) { + cockpitVideoDB.iterate((videoFile, videoName) => { + const blob = (videoFile as Blob[]).reduce((a, b) => new Blob([a, b], { type: 'video/webm' })) + saveAs(blob, videoName) + }) + cockpitVideoDB.iterate((_, videoName) => cockpitVideoDB.removeItem(videoName)) + } + }) }) return { availableIceIps, allowedIceIps }