summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormeow <woem>2022-05-06 07:21:19 +0300
committermeow <woem>2022-05-06 07:21:19 +0300
commitfd890f9c0a78635a3ea1ab56ec5a735fef27c1c4 (patch)
tree54eb0506221eb12c5ce92a53511598a5d89f45d1
parent835237382fd2e316a5e118dafc929f6ffb8e33fd (diff)
downloadinvidious-fd890f9c0a78635a3ea1ab56ec5a735fef27c1c4.tar.gz
invidious-fd890f9c0a78635a3ea1ab56ec5a735fef27c1c4.tar.bz2
invidious-fd890f9c0a78635a3ea1ab56ec5a735fef27c1c4.zip
fix helpers storage
-rw-r--r--assets/js/_helpers.js28
-rw-r--r--assets/js/notifications.js9
-rw-r--r--assets/js/player.js5
3 files changed, 20 insertions, 22 deletions
diff --git a/assets/js/_helpers.js b/assets/js/_helpers.js
index 4583dbe3..838a4612 100644
--- a/assets/js/_helpers.js
+++ b/assets/js/_helpers.js
@@ -171,7 +171,7 @@ window.helpers = window.helpers || {
*/
/**
- * Universal storage proxy. Uses inside localStorage or cookies
+ * Universal storage, stores and returns JS objects. Uses inside localStorage or cookies
* @type {invidiousStorage}
*/
storage: (function () {
@@ -181,8 +181,8 @@ window.helpers = window.helpers || {
if (localStorageIsUsable) {
return {
- get: function (key) { return localStorage[key]; },
- set: function (key, value) { localStorage[key] = value; },
+ get: function (key) { if (localStorage[key]) return JSON.parse(decodeURIComponent(localStorage[key])); },
+ set: function (key, value) { localStorage[key] = encodeURIComponent(JSON.stringify(value)); },
remove: function (key) { localStorage.removeItem(key); }
};
}
@@ -192,27 +192,21 @@ window.helpers = window.helpers || {
get: function (key) {
const cookiePrefix = key + '=';
function findCallback(cookie) {return cookie.startsWith(cookiePrefix);}
- const matchedCookie = document.cookie.split(';').find(findCallback);
- if (matchedCookie)
- return matchedCookie.replace(cookiePrefix, '');
- return null;
+ const matchedCookie = document.cookie.split('; ').find(findCallback);
+ if (matchedCookie) {
+ const cookieBody = matchedCookie.replace(cookiePrefix, '');
+ if (cookieBody.length === 0) return;
+ return JSON.parse(decodeURIComponent(cookieBody));
+ }
},
set: function (key, value) {
const cookie_data = encodeURIComponent(JSON.stringify(value));
// Set expiration in 2 year
const date = new Date();
- date.setTime(date.getTime() + 2*365.25*24*60*60);
+ date.setFullYear(date.getFullYear()+2);
- const ip_regex = /^((\d+\.){3}\d+|[A-Fa-f0-9]*:[A-Fa-f0-9:]*:[A-Fa-f0-9:]+)$/;
- let domain_used = location.hostname;
-
- // Fix for a bug in FF where the leading dot in the FQDN is not ignored
- if (domain_used.charAt(0) !== '.' && !ip_regex.test(domain_used) && domain_used !== 'localhost')
- domain_used = '.' + location.hostname;
-
- document.cookie = key + '=' + cookie_data + '; SameSite=Strict; path=/; domain=' +
- domain_used + '; expires=' + date.toGMTString() + ';';
+ document.cookie = key + '=' + cookie_data + '; expires=' + date.toGMTString();
},
remove: function (key) {
document.cookie = key + '=; Max-Age=0';
diff --git a/assets/js/notifications.js b/assets/js/notifications.js
index f8cc750b..568f5ff6 100644
--- a/assets/js/notifications.js
+++ b/assets/js/notifications.js
@@ -48,7 +48,7 @@ function create_notification_stream(subscriptions) {
}
delivered.push(notification.videoId);
- helpers.storage.set('notification_count', parseInt(helpers.storage.get('notification_count') || '0') + 1);
+ helpers.storage.set('notification_count', (helpers.storage.get('notification_count') || 0) + 1);
var notification_ticker = document.getElementById('notification_ticker');
if (parseInt(helpers.storage.get('notification_count')) > 0) {
@@ -72,7 +72,12 @@ function handle_notification_error(event) {
}
addEventListener('load', function (e) {
- helpers.storage.set('notification_count', document.getElementById('notification_count') ? document.getElementById('notification_count').innerText : '0');
+ var notification_count = document.getElementById('notification_count');
+ if (notification_count) {
+ helpers.storage.set('notification_count', parseInt(notification_count.innerText));
+ } else {
+ helpers.storage.set('notification_count', 0);
+ }
if (helpers.storage.get('stream')) {
helpers.storage.remove('stream');
diff --git a/assets/js/player.js b/assets/js/player.js
index 07a5c128..5bff7ee5 100644
--- a/assets/js/player.js
+++ b/assets/js/player.js
@@ -432,7 +432,7 @@ function save_video_time(seconds) {
all_video_times[videoId] = seconds;
- helpers.storage.set(save_player_pos_key, JSON.stringify(all_video_times));
+ helpers.storage.set(save_player_pos_key, all_video_times);
}
function get_video_time() {
@@ -444,8 +444,7 @@ function get_video_time() {
}
function get_all_video_times() {
- const raw = helpers.storage.get(save_player_pos_key);
- return raw ? JSON.parse(raw) : {};
+ return helpers.storage.get(save_player_pos_key) || {};
}
function remove_all_video_times() {