diff --git a/src/App.vue b/src/App.vue index be3ba6cc..450678f6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -42,8 +42,8 @@ export default { }); if (this.getPreferenceBoolean("watchHistory", false)) if ("indexedDB" in window) { - const request = indexedDB.open("piped-db", 1); - request.onupgradeneeded = function () { + const request = indexedDB.open("piped-db", 2); + request.onupgradeneeded = ev => { const db = request.result; console.log("Upgrading object store."); if (!db.objectStoreNames.contains("watch_history")) { @@ -51,6 +51,10 @@ export default { store.createIndex("video_id_idx", "videoId", { unique: true }); store.createIndex("id_idx", "id", { unique: true, autoIncrement: true }); } + if (ev.oldVersion < 2) { + const store = request.transaction.objectStore("watch_history"); + store.createIndex("watchedAt", "watchedAt", { unique: false }); + } }; request.onsuccess = e => { window.db = e.target.result; diff --git a/src/components/HistoryPage.vue b/src/components/HistoryPage.vue index d6cfc224..f41c8a4a 100644 --- a/src/components/HistoryPage.vue +++ b/src/components/HistoryPage.vue @@ -39,7 +39,7 @@ export default { if (window.db) { var tx = window.db.transaction("watch_history", "readonly"); var store = tx.objectStore("watch_history"); - const cursorRequest = store.openCursor(); + const cursorRequest = store.index("watchedAt").openCursor(null, "prev"); cursorRequest.onsuccess = e => { const cursor = e.target.result; if (cursor) { @@ -53,7 +53,6 @@ export default { thumbnail: video.thumbnail, watchedAt: video.watchedAt, }); - this.videos.sort((a, b) => b.watchedAt - a.watchedAt); // TODO: Optimize if (this.videos.length < 1000) cursor.continue(); } };