diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2022-01-05 03:23:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-05 03:23:22 +0100 |
| commit | edcc1554827aa3d0f22c39765ec03d5b5cd01421 (patch) | |
| tree | 048e2910bde8319a262fb4e1aea208500b6836c1 /assets/js | |
| parent | 823121637146c4b5b13ab4f4326cb73ff16828d6 (diff) | |
| parent | 73a142fd9b778162c129af2da1c6bdbe9b8ed69b (diff) | |
| download | invidious-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
Diffstat (limited to 'assets/js')
| -rw-r--r-- | assets/js/player.js | 44 | ||||
| -rw-r--r-- | assets/js/themes.js | 21 |
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); |
