Fix anonymous user settings

pull/3778/head
Chocobozzz 2021-02-25 10:26:10 +01:00
parent 0221f8c9b1
commit 24d3352ce4
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 30 additions and 10 deletions

View File

@ -77,17 +77,34 @@ export class UserService {
}
updateMyAnonymousProfile (profile: UserUpdateMe) {
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
}
const obj = Object.keys(localStorageKeys)
.filter(key => key in profile)
.map(key => ([ localStorageKeys[key], profile[key] ]))
for (const [ key, value ] of obj) {
try {
this.localStorageService.setItem(UserLocalStorageKeys.NSFW_POLICY, profile.nsfwPolicy)
this.localStorageService.setItem(UserLocalStorageKeys.WEBTORRENT_ENABLED, profile.webTorrentEnabled)
if (!value) {
this.localStorageService.removeItem(key)
continue
}
this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO, profile.autoPlayNextVideo)
this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST, profile.autoPlayNextVideoPlaylist)
const localStorageValue = typeof value === 'string'
? value
: JSON.stringify(value)
this.localStorageService.setItem(UserLocalStorageKeys.THEME, profile.theme)
this.localStorageService.setItem(UserLocalStorageKeys.VIDEO_LANGUAGES, profile.videoLanguages)
this.localStorageService.setItem(key, localStorageValue)
} catch (err) {
console.error(`Cannot set item in localStorage. Likely due to a value impossible to stringify.`, err)
console.error(`Cannot set ${key}->${value} in localStorage. Likely due to a value impossible to stringify.`, err)
}
}
}
@ -266,7 +283,10 @@ export class UserService {
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)