From b940617257217a8d25cc501ab31f134dea65a0e3 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 14 Jul 2020 15:16:04 +0200 Subject: [PATCH] Update to the way last audiobooks are stored. --- src/catalogue/static/player/player.js | 24 +++++++++++++++---- .../templates/catalogue/snippets/jplayer.html | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/catalogue/static/player/player.js b/src/catalogue/static/player/player.js index d93bbad1c..639937930 100644 --- a/src/catalogue/static/player/player.js +++ b/src/catalogue/static/player/player.js @@ -19,9 +19,9 @@ media['mp3'] = li.attr('data-mp3'); media['oga'] = li.attr('data-ogg'); + media['id'] = li.attr('data-media-id'); $(".title", $root).html(li.html()); - $root.attr('data-media-id', li.attr('data-media-id')); player.jPlayer("setMedia", media); player.jPlayer("pause", time); }; @@ -51,7 +51,12 @@ } catch { audiobooks = {}; } - last = audiobooks[$root.attr("data-book-id")] + last = audiobooks[$root.attr("data-book-slug")] + // Fallback for book id; + if (!last) { + last = audiobooks[$root.attr("data-book-id")] + } + if (last) { initialElem = $('[data-media-id="' + last[1] + '"] .play', $root).first(); initialTime = last[2]; @@ -61,13 +66,24 @@ }, timeupdate: function(event) { - if (Modernizr.localstorage) { + if (event.jPlayer.status.currentTime && Modernizr.localstorage) { try { audiobooks = JSON.parse(localStorage["audiobook-history"]); } catch { audiobooks = {}; } - audiobooks[$root.attr("data-book-id")] = [Date.now(), $root.attr("data-media-id"), event.jPlayer.status.currentTime]; + t = event.jPlayer.status.currentTime; + if (t && event.jPlayer.status.duration - t > 10) { + audiobooks[$root.attr("data-book-slug")] = [ + Date.now(), + event.jPlayer.status.media.id, + event.jPlayer.status.currentTime + ]; + } else { + delete audiobooks[$root.attr("data-book-slug")]; + } + // Remove old book id, if present. + delete audiobooks[$root.attr("data-book-id")]; localStorage["audiobook-history"] = JSON.stringify(audiobooks); } } diff --git a/src/catalogue/templates/catalogue/snippets/jplayer.html b/src/catalogue/templates/catalogue/snippets/jplayer.html index 96d359141..4398746b6 100644 --- a/src/catalogue/templates/catalogue/snippets/jplayer.html +++ b/src/catalogue/templates/catalogue/snippets/jplayer.html @@ -1,6 +1,6 @@ {% load i18n catalogue_tags %} {% if audiobooks %}{% if book|status:request.user != 'closed' %} -
+