From 6b9151e47f9ec28ab8c8463cbf31c065b8f3ac68 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Mon, 7 Nov 2022 10:20:13 +0000 Subject: [PATCH] Add better error messages for localStorage disabled. --- src/components/ChannelPage.vue | 2 +- src/components/ImportPage.vue | 6 +++++- src/components/NavBar.vue | 4 ++-- src/components/WatchVideo.vue | 2 +- src/locales/en.json | 3 ++- src/main.js | 20 +++++++++++++++++--- 6 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/components/ChannelPage.vue b/src/components/ChannelPage.vue index 93a0e055..64cdb27f 100644 --- a/src/components/ChannelPage.vue +++ b/src/components/ChannelPage.vue @@ -195,7 +195,7 @@ export default { }, }); } else { - this.handleLocalSubscriptions(this.channel.id); + if (!this.handleLocalSubscriptions(this.channel.id)) return; } this.subscribed = !this.subscribed; }, diff --git a/src/components/ImportPage.vue b/src/components/ImportPage.vue index 2af7cd6a..9e598018 100644 --- a/src/components/ImportPage.vue +++ b/src/components/ImportPage.vue @@ -158,7 +158,11 @@ export default { : [...new Set((this.getLocalSubscriptions() ?? []).concat(newChannels))]; // Sort for better cache hits subscriptions.sort(); - localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions)); + try { + localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions)); + } catch (e) { + alert(this.$t("info.local_storage")); + } }, }, }; diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index 6a046e1d..2b810a22 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -137,8 +137,8 @@ export default { shouldShowTrending(_this) { return _this.getPreferenceString("homepage", "trending") != "trending"; }, - showSearchHistory() { - return localStorage.getItem("searchHistory") && localStorage.getItem("search_history"); + showSearchHistory(_this) { + return _this.getPreferenceBoolean("searchHistory", false) && localStorage.getItem("search_history"); }, }, methods: { diff --git a/src/components/WatchVideo.vue b/src/components/WatchVideo.vue index 91c95f1f..adbbb66a 100644 --- a/src/components/WatchVideo.vue +++ b/src/components/WatchVideo.vue @@ -485,7 +485,7 @@ export default { }, }); } else { - this.handleLocalSubscriptions(this.channelId); + if (!this.handleLocalSubscriptions(this.channelId)) return; } this.subscribed = !this.subscribed; }, diff --git a/src/locales/en.json b/src/locales/en.json index ba56ead5..fab0ced3 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -167,6 +167,7 @@ "preferences_note": "Note: preferences are saved in the local storage of your browser. Deleting your browser data will reset them.", "page_not_found": "Page not found", "copied": "Copied!", - "cannot_copy": "Can't copy!" + "cannot_copy": "Can't copy!", + "local_storage": "This action requires localStorage, are cookies enabled?" } } diff --git a/src/main.js b/src/main.js index e5126cc3..c4596ac0 100644 --- a/src/main.js +++ b/src/main.js @@ -119,7 +119,11 @@ const mixin = { return DOMPurify.sanitize(original); }, setPreference(key, value) { - if (localStorage) localStorage.setItem(key, value); + try { + localStorage.setItem(key, value); + } catch { + alert(this.$t("info.local_storage")); + } }, getPreferenceBoolean(key, defaultVal) { var value; @@ -204,7 +208,11 @@ const mixin = { } }, getLocalSubscriptions() { - return JSON.parse(localStorage.getItem("localSubscriptions")); + try { + return JSON.parse(localStorage.getItem("localSubscriptions")); + } catch { + return []; + } }, isSubscribedLocally(channelId) { const localSubscriptions = this.getLocalSubscriptions(); @@ -218,7 +226,13 @@ const mixin = { else localSubscriptions.push(channelId); // Sort for better cache hits localSubscriptions.sort(); - localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions)); + try { + localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions)); + return true; + } catch { + alert(this.$t("info.local_storage")); + } + return false; }, getUnauthenticatedChannels() { const localSubscriptions = this.getLocalSubscriptions() ?? [];