Projekt

Obecné

Profil

Stáhnout (1.64 KB) Statistiky
| Větev: | Tag: | Revize:
1
import {Injectable} from '@angular/core';
2
import {BehaviorSubject, Observable} from 'rxjs';
3
import {Group, UserInfo} from '../../shared/api/endpoints/models';
4

    
5
@Injectable({
6
  providedIn: 'root'
7
})
8
export class UserState {
9
  private userState$: BehaviorSubject<UserInfo> = new BehaviorSubject<UserInfo>(null);
10
  private isLoggedAdmin$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
11
  private isLoggedIn$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
12
  private userGroups$: BehaviorSubject<Group[]> = new BehaviorSubject<Group[]>(null);
13

    
14
  constructor() {
15
  }
16

    
17
  setUser(user: UserInfo): void {
18
    this.userState$.next(user);
19
  }
20

    
21
  getUser(): UserInfo {
22
    return this.userState$.getValue();
23
  }
24

    
25
  getUser$(refresh: boolean = false): Observable<UserInfo> {
26
    /*if (this.userState$.getValue() === null || refresh){
27
      this.accountService.getAccountUsingGET('body')
28
        .subscribe(res => this.setUser(res));
29
    }*/
30
    return this.userState$.asObservable();
31
  }
32

    
33
  setLoggedAdmin(adminLogged: boolean): void {
34
    this.isLoggedAdmin$.next(adminLogged);
35
  }
36

    
37
  getLoggedAdmin(): boolean {
38
    return this.isLoggedAdmin$.getValue();
39
  }
40

    
41
  setLoggedIn(loggedIn: boolean): void {
42
    this.isLoggedIn$.next(loggedIn);
43
  }
44

    
45
  getLoggedIn$(): Observable<boolean> {
46
    return this.isLoggedIn$.asObservable();
47
  }
48

    
49
  getLoggedIn(): boolean {
50
    return this.isLoggedIn$.getValue();
51
  }
52

    
53
  setUserGroups(userGroups: Group[]): void {
54
    this.userGroups$.next(userGroups);
55
  }
56

    
57
  getUserGroups$(): Observable<Group[]> {
58
    return this.userGroups$.asObservable();
59
  }
60

    
61
  getUserGroups(): Group[] {
62
    return this.userGroups$.getValue();
63
  }
64
}
    (1-1/1)