aboutsummaryrefslogtreecommitdiffhomepage
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/src/app/core/users/user.service.ts40
1 files changed, 30 insertions, 10 deletions
diff --git a/client/src/app/core/users/user.service.ts b/client/src/app/core/users/user.service.ts
index f4850c3ba..16ea8aa1a 100644
--- a/client/src/app/core/users/user.service.ts
+++ b/client/src/app/core/users/user.service.ts
@@ -77,17 +77,34 @@ export class UserService {
77 } 77 }
78 78
79 updateMyAnonymousProfile (profile: UserUpdateMe) { 79 updateMyAnonymousProfile (profile: UserUpdateMe) {
80 try { 80 const localStorageKeys: { [ id in keyof UserUpdateMe ]: string } = {
81 this.localStorageService.setItem(UserLocalStorageKeys.NSFW_POLICY, profile.nsfwPolicy) 81 nsfwPolicy: UserLocalStorageKeys.NSFW_POLICY,
82 this.localStorageService.setItem(UserLocalStorageKeys.WEBTORRENT_ENABLED, profile.webTorrentEnabled) 82 webTorrentEnabled: UserLocalStorageKeys.WEBTORRENT_ENABLED,
83 autoPlayNextVideo: UserLocalStorageKeys.AUTO_PLAY_VIDEO,
84 autoPlayNextVideoPlaylist: UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST,
85 theme: UserLocalStorageKeys.THEME,
86 videoLanguages: UserLocalStorageKeys.VIDEO_LANGUAGES
87 }
83 88
84 this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO, profile.autoPlayNextVideo) 89 const obj = Object.keys(localStorageKeys)
85 this.localStorageService.setItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST, profile.autoPlayNextVideoPlaylist) 90 .filter(key => key in profile)
91 .map(key => ([ localStorageKeys[key], profile[key] ]))
86 92
87 this.localStorageService.setItem(UserLocalStorageKeys.THEME, profile.theme) 93 for (const [ key, value ] of obj) {
88 this.localStorageService.setItem(UserLocalStorageKeys.VIDEO_LANGUAGES, profile.videoLanguages) 94 try {
89 } catch (err) { 95 if (!value) {
90 console.error(`Cannot set item in localStorage. Likely due to a value impossible to stringify.`, err) 96 this.localStorageService.removeItem(key)
97 continue
98 }
99
100 const localStorageValue = typeof value === 'string'
101 ? value
102 : JSON.stringify(value)
103
104 this.localStorageService.setItem(key, localStorageValue)
105 } catch (err) {
106 console.error(`Cannot set ${key}->${value} in localStorage. Likely due to a value impossible to stringify.`, err)
107 }
91 } 108 }
92 } 109 }
93 110
@@ -266,7 +283,10 @@ export class UserService {
266 let videoLanguages: string[] 283 let videoLanguages: string[]
267 284
268 try { 285 try {
269 videoLanguages = JSON.parse(this.localStorageService.getItem(UserLocalStorageKeys.VIDEO_LANGUAGES)) 286 const languagesString = this.localStorageService.getItem(UserLocalStorageKeys.VIDEO_LANGUAGES)
287 videoLanguages = languagesString && languagesString !== 'undefined'
288 ? JSON.parse(languagesString)
289 : null
270 } catch (err) { 290 } catch (err) {
271 videoLanguages = null 291 videoLanguages = null
272 console.error('Cannot parse desired video languages from localStorage.', err) 292 console.error('Cannot parse desired video languages from localStorage.', err)