import { Injectable } from '@angular/core'; import { DialogService } from 'primeng'; import { BehaviorSubject, Observable } from 'rxjs'; import { UserRole } from '../enums/user-role.enum'; import { User } from '../models/user.model'; import { ApiService } from './api.service'; @Injectable({ providedIn: 'root', }) export class UserService { public anonymous: User = new User('', '', [], UserRole.ANONYMOUS); private _user: BehaviorSubject = new BehaviorSubject(this.anonymous); public readonly user: Observable = this._user.asObservable(); constructor(private apiService: ApiService, public dialogService: DialogService) {} public updateUser(user: User): void { this._user.next(user); } public isCurrentUserIdentifiable(): boolean { return this._user.getValue().pseudo ? true : false; } public async getUserPolls(): Promise { const currentUser: User = this._user.getValue(); currentUser.polls = await this.apiService.getPollsUrlsByUserEmail(currentUser.email); this.updateUser(currentUser); } public async sendEmailToUserTheListOfItsPolls(): Promise { await this.apiService.sendEmailToUserOfItsPollsList(this._user.getValue().email); } }