src/storage/auth-storage-provider.service.ts   A
last analyzed

Complexity

Total Complexity 4
Complexity/F 2

Size

Lines of Code 47
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 37
mnd 2
bc 2
fnc 2
dl 0
loc 47
rs 10
bpm 1
cpm 2
noi 0
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A AuthStorageProvider.getProvider 0 3 1
A AuthStorageProvider.getProviderById 0 19 3
1
import { Injectable } from "@angular/core";
2
import { UniFirebaseLoginConfig } from "../config/uni-firebase-login-config";
3
import { UniFirebaseLoginConfigProvider } from "../config/uni-firebase-login-config-provider";
4
import { UserModel } from "../model/user-model";
5
import { FirestoreStorage } from "./firestore-storage";
6
import { IStorageProvider } from "./i-storage-provider";
7
import { NoMemoryStorage } from "./no-memory-storage.service";
8
9
@Injectable({
10
  providedIn: "root",
11
})
12
export class AuthStorageProvider<User extends UserModel = UserModel> {
13
  protected config: UniFirebaseLoginConfig;
14
15
  public constructor(
16
    protected firestoreStorage: FirestoreStorage<User>,
17
    protected inMemoryStorage: NoMemoryStorage<User>,
18
    configProvider: UniFirebaseLoginConfigProvider,
19
  ) {
20
    this.config = configProvider.config;
21
  }
22
23
  public getProvider(): IStorageProvider<User> {
24
    return this.getProviderById(this.config.storage);
25
  }
26
27
  protected getProviderById(
28
    providerId: false | "firestore",
29
  ): IStorageProvider<User> {
30
    let provider;
31
    switch (providerId) {
32
      case "firestore":
33
        provider = this.firestoreStorage;
34
        break;
35
      case false:
36
        provider = this.inMemoryStorage;
37
        break;
38
    }
39
40
    if (provider !== undefined) {
41
      return provider;
42
    }
43
44
    throw new Error(`Provider ${providerId} not supported.`);
45
  }
46
}
47