diff --git a/src/App.vue b/src/App.vue
index 735ced1b..c157314b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -36,7 +36,7 @@ export default {
});
if ("indexedDB" in window) {
- const request = indexedDB.open("piped-db", 5);
+ const request = indexedDB.open("piped-db", 6);
request.onupgradeneeded = ev => {
const db = request.result;
console.log("Upgrading object store.");
@@ -64,6 +64,23 @@ export default {
const playlistVideosStore = db.createObjectStore("playlist_videos", { keyPath: "videoId" });
playlistVideosStore.createIndex("videoId", "videoId", { unique: true });
}
+ // migration to fix an invalid previous length of channel ids: 11 -> 24
+ (async () => {
+ if (ev.oldVersion < 6) {
+ const subscriptions = await this.fetchSubscriptions();
+ const channelGroups = await this.getChannelGroups();
+ for (let group of channelGroups) {
+ for (let i = 0; i < group.channels.length; i++) {
+ const tooShortChannelId = group.channels[i];
+ const foundChannel = subscriptions.find(
+ channel => channel.url.substr(-11) == tooShortChannelId,
+ );
+ if (foundChannel) group.channels[i] = foundChannel.url.substr(-24);
+ }
+ this.createOrUpdateChannelGroup(group);
+ }
+ }
+ })();
};
request.onsuccess = e => {
window.db = e.target.result;
diff --git a/src/components/ChannelPage.vue b/src/components/ChannelPage.vue
index 1bc71548..664a7eaf 100644
--- a/src/components/ChannelPage.vue
+++ b/src/components/ChannelPage.vue
@@ -79,7 +79,7 @@
/>
-
+
diff --git a/src/components/SubscriptionsPage.vue b/src/components/SubscriptionsPage.vue
index 85b49050..568eccf9 100644
--- a/src/components/SubscriptionsPage.vue
+++ b/src/components/SubscriptionsPage.vue
@@ -107,7 +107,7 @@
@@ -140,7 +140,7 @@ export default {
filteredSubscriptions(_this) {
return _this.selectedGroup.groupName == ""
? _this.subscriptions
- : _this.subscriptions.filter(channel => _this.selectedGroup.channels.includes(channel.url.substr(-11)));
+ : _this.subscriptions.filter(channel => _this.selectedGroup.channels.includes(channel.url.substr(-24)));
},
},
mounted() {
@@ -159,28 +159,6 @@ export default {
document.title = "Subscriptions - Piped";
},
methods: {
- async fetchSubscriptions() {
- if (this.authenticated) {
- return await this.fetchJson(this.authApiUrl() + "/subscriptions", null, {
- headers: {
- Authorization: this.getAuthToken(),
- },
- });
- } else {
- const channels = this.getUnauthenticatedChannels();
- const split = channels.split(",");
- if (split.length > 100) {
- return await this.fetchJson(this.authApiUrl() + "/subscriptions/unauthenticated", null, {
- method: "POST",
- body: JSON.stringify(split),
- });
- } else {
- return await this.fetchJson(this.authApiUrl() + "/subscriptions/unauthenticated", {
- channels: this.getUnauthenticatedChannels(),
- });
- }
- }
- },
async loadChannelGroups() {
const groups = await this.getChannelGroups();
this.channelGroups.push(...groups);
@@ -256,7 +234,7 @@ export default {
this.selectedGroup = this.channelGroups[0];
},
checkedChange(subscription) {
- const channelId = subscription.url.substr(-11);
+ const channelId = subscription.url.substr(-24);
this.selectedGroup.channels = this.selectedGroup.channels.includes(channelId)
? this.selectedGroup.channels.filter(channel => channel != channelId)
: this.selectedGroup.channels.concat(channelId);
diff --git a/src/main.js b/src/main.js
index 9d6f8382..b3cc9f1e 100644
--- a/src/main.js
+++ b/src/main.js
@@ -236,6 +236,28 @@ const mixin = {
const localSubscriptions = this.getLocalSubscriptions() ?? [];
return localSubscriptions.join(",");
},
+ async fetchSubscriptions() {
+ if (this.authenticated) {
+ return await this.fetchJson(this.authApiUrl() + "/subscriptions", null, {
+ headers: {
+ Authorization: this.getAuthToken(),
+ },
+ });
+ } else {
+ const channels = this.getUnauthenticatedChannels();
+ const split = channels.split(",");
+ if (split.length > 100) {
+ return await this.fetchJson(this.authApiUrl() + "/subscriptions/unauthenticated", null, {
+ method: "POST",
+ body: JSON.stringify(split),
+ });
+ } else {
+ return await this.fetchJson(this.authApiUrl() + "/subscriptions/unauthenticated", {
+ channels: this.getUnauthenticatedChannels(),
+ });
+ }
+ }
+ },
/* generate a temporary file and ask the user to download it */
download(text, filename, mimeType) {
var file = new Blob([text], { type: mimeType });