diff --git a/src/App.vue b/src/App.vue index 331a2065..4eec7018 100644 --- a/src/App.vue +++ b/src/App.vue @@ -55,7 +55,7 @@ export default { }); if ("indexedDB" in window) { - const request = indexedDB.open("piped-db", 4); + const request = indexedDB.open("piped-db", 5); request.onupgradeneeded = ev => { const db = request.result; console.log("Upgrading object store."); @@ -77,6 +77,12 @@ export default { const store = db.createObjectStore("channel_groups", { keyPath: "groupName" }); store.createIndex("groupName", "groupName", { unique: true }); } + if (!db.objectStoreNames.contains("playlists")) { + const playlistStore = db.createObjectStore("playlists", { keyPath: "playlistId" }); + playlistStore.createIndex("playlistId", "playlistId", { unique: true }); + const playlistVideosStore = db.createObjectStore("playlistVideos", { keyPath: "videoId" }); + playlistVideosStore.createIndex("videoId", "videoId", { unique: true }); + } }; request.onsuccess = e => { window.db = e.target.result; diff --git a/src/components/PlaylistPage.vue b/src/components/PlaylistPage.vue index b2ea2361..80ad5cb4 100644 --- a/src/components/PlaylistPage.vue +++ b/src/components/PlaylistPage.vue @@ -86,14 +86,11 @@ export default { mounted() { const playlistId = this.$route.query.list; if (this.authenticated && playlistId?.length == 36) - this.fetchJson(this.authApiUrl() + "/user/playlists", null, { - headers: { - Authorization: this.getAuthToken(), - }, - }).then(json => { + this.getPlaylists().then(json => { if (json.error) alert(json.error); else if (json.some(playlist => playlist.id === playlistId)) this.admin = true; }); + else if (playlistId.startsWith("local")) this.admin = true; this.isPlaylistBookmarked(); }, activated() { @@ -106,6 +103,11 @@ export default { }, methods: { async fetchPlaylist() { + const playlistId = this.$route.query.list; + if (playlistId.startsWith("local")) { + return this.getPlaylist(playlistId); + } + return await await this.fetchJson(this.authApiUrl() + "/playlists/" + this.$route.query.list); }, async getPlaylistData() { diff --git a/src/components/PlaylistsPage.vue b/src/components/PlaylistsPage.vue index 58c14543..06f4da30 100644 --- a/src/components/PlaylistsPage.vue +++ b/src/components/PlaylistsPage.vue @@ -238,8 +238,7 @@ export default { cursorRequest.onsuccess = e => { const cursor = e.target.result; if (cursor) { - const bookmark = cursor.value; - this.bookmarks.push(bookmark); + this.bookmarks.push(cursor.value); cursor.continue(); } }; diff --git a/src/components/VideoItem.vue b/src/components/VideoItem.vue index 702814e0..4b9a7dca 100644 --- a/src/components/VideoItem.vue +++ b/src/components/VideoItem.vue @@ -107,7 +107,7 @@ > -