}
updateMyAnonymousProfile (profile: UserUpdateMe) {
- try {
- this.localStorageService.setItem(UserLocalStorageKeys.NSFW_POLICY, profile.nsfwPolicy)
- this.localStorageService.setItem(UserLocalStorageKeys.WEBTORRENT_ENABLED, profile.webTorrentEnabled)
+ const localStorageKeys: { [ id in keyof UserUpdateMe ]: string } = {
+ nsfwPolicy: UserLocalStorageKeys.NSFW_POLICY,
+ webTorrentEnabled: UserLocalStorageKeys.WEBTORRENT_ENABLED,
+ autoPlayNextVideo: UserLocalStorageKeys.AUTO_PLAY_VIDEO,
+ autoPlayNextVideoPlaylist: UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST,
+ theme: UserLocalStorageKeys.THEME,
+ videoLanguages: UserLocalStorageKeys.VIDEO_LANGUAGES
+ }
- this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO, profile.autoPlayNextVideo)
- this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST, profile.autoPlayNextVideoPlaylist)
+ const obj = Object.keys(localStorageKeys)
+ .filter(key => key in profile)
+ .map(key => ([ localStorageKeys[key], profile[key] ]))
- this.localStorageService.setItem(UserLocalStorageKeys.THEME, profile.theme)
- this.localStorageService.setItem(UserLocalStorageKeys.VIDEO_LANGUAGES, profile.videoLanguages)
- } catch (err) {
- console.error(`Cannot set item in localStorage. Likely due to a value impossible to stringify.`, err)
+ for (const [ key, value ] of obj) {
+ try {
+ if (!value) {
+ this.localStorageService.removeItem(key)
+ continue
+ }
+
+ const localStorageValue = typeof value === 'string'
+ ? value
+ : JSON.stringify(value)
+
+ this.localStorageService.setItem(key, localStorageValue)
+ } catch (err) {
+ console.error(`Cannot set ${key}->${value} in localStorage. Likely due to a value impossible to stringify.`, err)
+ }
}
}
let videoLanguages: string[]
try {
- videoLanguages = JSON.parse(this.localStorageService.getItem(UserLocalStorageKeys.VIDEO_LANGUAGES))
+ const languagesString = this.localStorageService.getItem(UserLocalStorageKeys.VIDEO_LANGUAGES)
+ videoLanguages = languagesString && languagesString !== 'undefined'
+ ? JSON.parse(languagesString)
+ : null
} catch (err) {
videoLanguages = null
console.error('Cannot parse desired video languages from localStorage.', err)