Pre-load localstorage from query params

This commit is contained in:
Zane Claes
2020-03-29 17:50:10 -06:00
parent 5b9a93cd79
commit 955d34cc9b
2 changed files with 27 additions and 1 deletions

View File

@ -50,6 +50,7 @@ import ImageZoom from './views/modals/ImageZoom';
import EditCommand from './views/modals/EditCommand';
import { scrollTo, isTouchDevice } from './util/helpers';
import storage from './util/storage';
import * as coreActions from './services/core/actions';
import * as uiActions from './services/ui/actions';
import * as pusherActions from './services/pusher/actions';
@ -62,6 +63,27 @@ import * as snapcastActions from './services/snapcast/actions';
export class App extends React.Component {
constructor(props) {
super(props);
// Load query param settings
const configs = ['ui', 'spotify', 'pusher', 'snapcast', 'mopidy', 'google', 'lastfm', 'genius']
const params = new URLSearchParams(window.location.search)
var changed = []
var urlParams = params.forEach((v, k) => {
if (!configs.includes(k)) return;
try {
storage.set(k, JSON.parse(v))
changed.push(k)
} catch (error) {
console.error(error)
}
})
if (changed.length > 0) {
changed.forEach((k) => params.delete(k))
const url = window.location.toString().replace(window.location.search, params.toString())
console.log('settings changed:', changed, 'redirect to:', url)
window.location.assign(url)
}
this.handleInstallPrompt = this.handleInstallPrompt.bind(this);
this.handleFocusAndBlur = this.handleFocusAndBlur.bind(this);
}