summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2022-01-05 03:23:22 +0100
committerGitHub <noreply@github.com>2022-01-05 03:23:22 +0100
commitedcc1554827aa3d0f22c39765ec03d5b5cd01421 (patch)
tree048e2910bde8319a262fb4e1aea208500b6836c1
parent823121637146c4b5b13ab4f4326cb73ff16828d6 (diff)
parent73a142fd9b778162c129af2da1c6bdbe9b8ed69b (diff)
downloadinvidious-edcc1554827aa3d0f22c39765ec03d5b5cd01421.tar.gz
invidious-edcc1554827aa3d0f22c39765ec03d5b5cd01421.tar.bz2
invidious-edcc1554827aa3d0f22c39765ec03d5b5cd01421.zip
Merge pull request #2744 from tirz/feature-fix_null_ptr_for_localStorage
fix: null ptr while retaining video time
-rw-r--r--assets/js/player.js44
-rw-r--r--assets/js/themes.js21
2 files changed, 46 insertions, 19 deletions
diff --git a/assets/js/player.js b/assets/js/player.js
index d45ff5d0..5ff55eb3 100644
--- a/assets/js/player.js
+++ b/assets/js/player.js
@@ -59,6 +59,16 @@ videojs.Hls.xhr.beforeRequest = function(options) {
var player = videojs('player', options);
+const storage = (() => {
+ try {
+ if (localStorage.length !== -1) {
+ return localStorage;
+ }
+ } catch (e) {
+ console.info('No storage available: ' + e);
+ }
+ return undefined;
+})();
if (location.pathname.startsWith('/embed/')) {
player.overlay({
@@ -386,25 +396,35 @@ function get_video_time() {
}
function set_all_video_times(times) {
- const json = JSON.stringify(times);
-
- localStorage.setItem(save_player_pos_key, json);
+ if (storage) {
+ if (times) {
+ try {
+ storage.setItem(save_player_pos_key, JSON.stringify(times));
+ } catch (e) {
+ console.debug('set_all_video_times: ' + e);
+ }
+ } else {
+ storage.removeItem(save_player_pos_key);
+ }
+ }
}
function get_all_video_times() {
- try {
- const raw = localStorage.getItem(save_player_pos_key);
- const times = JSON.parse(raw);
-
- return times || {};
- }
- catch {
- return {};
+ if (storage) {
+ const raw = storage.getItem(save_player_pos_key);
+ if (raw !== null) {
+ try {
+ return JSON.parse(raw);
+ } catch (e) {
+ console.debug('get_all_video_times: ' + e);
+ }
+ }
}
+ return {};
}
function remove_all_video_times() {
- localStorage.removeItem(save_player_pos_key);
+ set_all_video_times(null);
}
function set_time_percent(percent) {
diff --git a/assets/js/themes.js b/assets/js/themes.js
index 543b849e..470f10bf 100644
--- a/assets/js/themes.js
+++ b/assets/js/themes.js
@@ -11,7 +11,9 @@ toggle_theme.addEventListener('click', function () {
xhr.open('GET', url, true);
set_mode(dark_mode);
- window.localStorage.setItem('dark_mode', dark_mode ? 'dark' : 'light');
+ try {
+ window.localStorage.setItem('dark_mode', dark_mode ? 'dark' : 'light');
+ } catch {}
xhr.send();
});
@@ -23,9 +25,12 @@ window.addEventListener('storage', function (e) {
});
window.addEventListener('DOMContentLoaded', function () {
- window.localStorage.setItem('dark_mode', document.getElementById('dark_mode_pref').textContent);
- // Update localStorage if dark mode preference changed on preferences page
- update_mode(window.localStorage.dark_mode);
+ const dark_mode = document.getElementById('dark_mode_pref').textContent;
+ try {
+ // Update localStorage if dark mode preference changed on preferences page
+ window.localStorage.setItem('dark_mode', dark_mode);
+ } catch {}
+ update_mode(dark_mode);
});
@@ -37,9 +42,11 @@ lightScheme.addListener(scheme_switch);
function scheme_switch (e) {
// ignore this method if we have a preference set
- if (localStorage.getItem('dark_mode')) {
- return;
- }
+ try {
+ if (localStorage.getItem('dark_mode')) {
+ return;
+ }
+ } catch {}
if (e.matches) {
if (e.media.includes("dark")) {
set_mode(true);