From 5a6b3d8e6158730cd7dede97234884d9137c1285 Mon Sep 17 00:00:00 2001 From: "peter.kottke" Date: Wed, 1 Apr 2026 21:05:48 -0400 Subject: [PATCH] updates to allow share t argument to over-ride server stored position --- client/pages/share/_slug.vue | 4 +++- server/controllers/ShareController.js | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/client/pages/share/_slug.vue b/client/pages/share/_slug.vue index 64c09963..15748b48 100644 --- a/client/pages/share/_slug.vue +++ b/client/pages/share/_slug.vue @@ -363,7 +363,9 @@ export default { console.log('Loaded media item share', this.mediaItemShare) } - const startTime = this.playbackSession.currentTime || 0 + const startTime = this.$route.query.t && !isNaN(this.$route.query.t) + ? parseFloat(this.$route.query.t) + : (this.playbackSession.currentTime || 0) this.localAudioPlayer.set(null, this.audioTracks, false, startTime, false) this.localAudioPlayer.on('stateChange', this.playerStateChange.bind(this)) this.localAudioPlayer.on('timeupdate', this.playerTimeUpdate.bind(this)) diff --git a/server/controllers/ShareController.js b/server/controllers/ShareController.js index 3e7ea1de..f7dd36f8 100644 --- a/server/controllers/ShareController.js +++ b/server/controllers/ShareController.js @@ -20,7 +20,7 @@ const ShareManager = require('../managers/ShareManager') */ class ShareController { - constructor() {} + constructor() { } /** * Public route @@ -53,6 +53,10 @@ class ShareController { if (playbackSession) { if (mediaItemShare.id === playbackSession.mediaItemShareId) { Logger.debug(`[ShareController] Found share playback session ${req.cookies.share_session_id}`) + // If ?t was provided, override the cached currentTime + if (startTime > 0) { + playbackSession.currentTime = startTime + } mediaItemShare.playbackSession = playbackSession.toJSONForClient() return res.json(mediaItemShare) } else {