Total Complexity | 3 |
Complexity/F | 1 |
Lines of Code | 46 |
Function Count | 3 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { Injectable } from "@angular/core"; |
||
2 | import { AngularFireAuth } from "@angular/fire/auth"; |
||
3 | import { User as FirebaseUser } from "firebase"; |
||
4 | import { BehaviorSubject, Observable } from "rxjs"; |
||
5 | import { UniFirebaseLoginConfigProvider } from "../config/uni-firebase-login-config-provider"; |
||
6 | import { UserModel } from "../model/user-model"; |
||
7 | import { AbstractStorage } from "./abstract-storage"; |
||
8 | import { IStorageProvider } from "./i-storage-provider"; |
||
9 | |||
10 | @Injectable({ |
||
11 | providedIn: "root", |
||
12 | }) |
||
13 | export class NoMemoryStorage<User extends UserModel = UserModel> |
||
14 | extends AbstractStorage<User> |
||
15 | implements IStorageProvider<User> { |
||
16 | protected user: BehaviorSubject<User | null> = new BehaviorSubject<User | null>( |
||
17 | null, |
||
18 | ); |
||
19 | |||
20 | public constructor( |
||
21 | angularFireAuth: AngularFireAuth, |
||
22 | configProvider: UniFirebaseLoginConfigProvider, |
||
23 | ) { |
||
24 | super(angularFireAuth, configProvider); |
||
25 | } |
||
26 | |||
27 | public async updateStoredDataByUser(user: User): Promise<void> { |
||
28 | this.user.next(user); |
||
29 | } |
||
30 | |||
31 | public async updateStoredDataByFirebaseUser( |
||
32 | firebaseUser: FirebaseUser, |
||
33 | ): Promise<void> { |
||
34 | this.user.next( |
||
35 | this.config.mapFirebaseUserToStorageFunc(firebaseUser) as User, |
||
36 | ); |
||
37 | } |
||
38 | |||
39 | public subscribeUserDataFromStorageByFirebaseUser( |
||
40 | user: FirebaseUser, |
||
41 | ): Observable<User | null> { |
||
42 | this.user.next(this.config.mapFirebaseUserToStorageFunc(user) as User); |
||
43 | return this.user; |
||
44 | } |
||
45 | } |
||
46 |