From dd8347412677fe26402139ec485707d4a0bc3afe Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 23 Nov 2023 21:48:23 +0000 Subject: [PATCH] Make the indexeddb call syncronous to fix race condition --- src/components/VideoPlayer.vue | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/components/VideoPlayer.vue b/src/components/VideoPlayer.vue index f67045bb..5628db69 100644 --- a/src/components/VideoPlayer.vue +++ b/src/components/VideoPlayer.vue @@ -401,7 +401,7 @@ export default { videoEl.currentTime = segment.segment[1]; segment.skipped = true; }, - setPlayerAttrs(localPlayer, videoEl, uri, mime, shaka) { + async setPlayerAttrs(localPlayer, videoEl, uri, mime, shaka) { const url = "/watch?v=" + this.video.id; if (!this.$ui) { @@ -502,22 +502,25 @@ export default { startTime = parseTimeParam(time); this.initialSeekComplete = true; } else if (window.db && this.getPreferenceBoolean("watchHistory", false)) { - var tx = window.db.transaction("watch_history", "readonly"); - var store = tx.objectStore("watch_history"); - var request = store.get(this.video.id); - request.onsuccess = function (event) { - var video = event.target.result; - const currentTime = video?.currentTime; - if (currentTime) { - if (currentTime < video.duration * 0.9) { - startTime = currentTime; + await new Promise(resolve => { + var tx = window.db.transaction("watch_history", "readonly"); + var store = tx.objectStore("watch_history"); + var request = store.get(this.video.id); + request.onsuccess = function (event) { + var video = event.target.result; + const currentTime = video?.currentTime; + if (currentTime) { + if (currentTime < video.duration * 0.9) { + startTime = currentTime; + } } - } - }; + resolve(); + }; - tx.oncomplete = () => { - this.initialSeekComplete = true; - }; + tx.oncomplete = () => { + this.initialSeekComplete = true; + }; + }); } else { this.initialSeekComplete = true; }