MOBILE-3320 user: Make preferences fail-safe
This commit is contained in:
		
							parent
							
								
									70d14de8ec
								
							
						
					
					
						commit
						c1e2acf98a
					
				| @ -566,14 +566,14 @@ export class AddonCalendarProvider { | ||||
|      */ | ||||
|     async getCalendarLookAhead(siteId?: string): Promise<number> { | ||||
|         const site = await CoreSites.getSite(siteId); | ||||
|         let value: string | undefined; | ||||
|         let value: string | undefined | null; | ||||
|         try { | ||||
|             value = await CoreUser.getUserPreference('calendar_lookahead'); | ||||
|         } catch { | ||||
|             // Ignore errors.
 | ||||
|         } | ||||
| 
 | ||||
|         if (typeof value == 'undefined') { | ||||
|         if (typeof value == 'undefined' || value === null) { | ||||
|             value = site.getStoredConfig('calendar_lookahead'); | ||||
|         } | ||||
| 
 | ||||
| @ -588,7 +588,7 @@ export class AddonCalendarProvider { | ||||
|      */ | ||||
|     async getCalendarTimeFormat(siteId?: string): Promise<string> { | ||||
|         const site = await CoreSites.getSite(siteId); | ||||
|         let format: string | undefined; | ||||
|         let format: string | undefined | null; | ||||
| 
 | ||||
|         try { | ||||
|             format = await CoreUser.getUserPreference('calendar_timeformat'); | ||||
|  | ||||
| @ -391,7 +391,7 @@ export class CoreUserProvider { | ||||
|      * @param siteId Site Id. If not defined, use current site. | ||||
|      * @return Preference value or null if preference not set. | ||||
|      */ | ||||
|     async getUserPreference(name: string, siteId?: string): Promise<string> { | ||||
|     async getUserPreference(name: string, siteId?: string): Promise<string | null> { | ||||
|         siteId = siteId || CoreSites.getCurrentSiteId(); | ||||
| 
 | ||||
|         const preference = await CoreUtils.ignoreErrors(CoreUserOffline.getPreference(name, siteId)); | ||||
| @ -403,20 +403,15 @@ export class CoreUserProvider { | ||||
| 
 | ||||
|         const wsValue = await this.getUserPreferenceOnline(name, siteId); | ||||
| 
 | ||||
|         if (!wsValue) { | ||||
|             if (preference) { | ||||
|                 // Return the local value.
 | ||||
|                 return preference.value; | ||||
|             } | ||||
| 
 | ||||
|             throw new CoreError('Preference not found'); | ||||
|         } | ||||
| 
 | ||||
|         if (preference && preference.value != preference.onlinevalue && preference.onlinevalue == wsValue) { | ||||
|             // Sync is pending for this preference, return stored value.
 | ||||
|             return preference.value; | ||||
|         } | ||||
| 
 | ||||
|         if (!wsValue) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         await CoreUserOffline.setPreference(name, wsValue, wsValue); | ||||
| 
 | ||||
|         return wsValue; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user