Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

FeaturesMapperTest.java

Blame
  • user-settings.service.ts NaN GiB
    import { Injectable } from '@angular/core';
    import { createEmptyStateResource, doIfLoadingRequired, StateResource } from '@goofy-client/tech-shared';
    import { UserProfileService } from '@goofy-client/user-profile-shared';
    import { combineLatest, Observable } from 'rxjs';
    import { map, startWith, tap } from 'rxjs/operators';
    import { UserSettingsFacade } from './+state/user-settings.facade';
    import { UserSettings, UserSettingsResource } from './user-settings.model';
    @Injectable({
    	providedIn: 'root',
    })
    export class UserSettingsService {
    
    	constructor(
    		private userSettingsFacade: UserSettingsFacade,
    		private userProfileService: UserProfileService,
    	) { }
    
    	getUserSettings(): Observable<StateResource<UserSettingsResource>> {
    		const userProfile$ = this.userProfileService.getCurrentUser();
    		const userSetting$ = this.userSettingsFacade.getUserSettings();
    
    		return combineLatest([userProfile$, userSetting$]).pipe(
    			tap(([userProfile, userSettings]) => doIfLoadingRequired(userSettings, () => {
    				if (userProfile.resource) {
    					this.userSettingsFacade.loadUserSettings(userProfile.resource);
    				}
    			})),
    			map(([, userSettings]) => userSettings),
    			startWith(createEmptyStateResource<UserSettingsResource>(true))
    		);
    	}
    
    	setUserSettings(userSettings: UserSettings): void {
    		this.userSettingsFacade.setUserSettings(userSettings);
    	}
    }