From 00e24879b742e3517a64dda6e6b3224847a9e710 Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Wed, 12 Mar 2025 17:44:18 +0100 Subject: [PATCH] Save video playback position in browser localstorage --- svelte/src/file_viewer/GalleryView.svelte | 14 +++ svelte/src/file_viewer/viewers/Video.svelte | 4 +- svelte/src/filesystem/viewers/Video.svelte | 4 +- svelte/src/lib/VideoPosition.mts | 101 ++++++++++++++++++++ svelte/src/util/ProgressBar.svelte | 6 +- 5 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 svelte/src/lib/VideoPosition.mts diff --git a/svelte/src/file_viewer/GalleryView.svelte b/svelte/src/file_viewer/GalleryView.svelte index 97efdd8..7418ea9 100644 --- a/svelte/src/file_viewer/GalleryView.svelte +++ b/svelte/src/file_viewer/GalleryView.svelte @@ -3,6 +3,8 @@ import { createEventDispatcher } from "svelte" import { flip } from "svelte/animate" import FilePicker from "./FilePicker.svelte" import { file_type } from "./FileUtilities.svelte"; +import { get_video_position } from "./../lib/VideoPosition.mjs" +import ProgressBar from "./../util/ProgressBar.svelte" let dispatch = createEventDispatcher() export let list = { @@ -112,6 +114,7 @@ const drop = (e, index) => { {/if} {#each list.files as file, index (file)} + {@const vp = get_video_position(file.id)} { {/if} + + {#if vp !== null} +
+ + {/if} + {file.name}
{/each} @@ -195,6 +204,8 @@ const drop = (e, index) => { text-decoration: none; } .icon_container { + display: flex; + flex-direction: column; margin: 3px; height: 148px; border-radius: 6px; @@ -248,4 +259,7 @@ const drop = (e, index) => { flex-direction: column; justify-content: center; } +.grow { + flex: 1 1 auto; +} diff --git a/svelte/src/file_viewer/viewers/Video.svelte b/svelte/src/file_viewer/viewers/Video.svelte index 22291f0..6b05bcc 100644 --- a/svelte/src/file_viewer/viewers/Video.svelte +++ b/svelte/src/file_viewer/viewers/Video.svelte @@ -1,5 +1,6 @@ -
+