Select Git revision
FeaturesMapperTest.java
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);
}
}