{ "version": 3, "sources": ["src/app/services/auth.service2.ts"], "sourcesContent": ["import { inject, Injectable, signal } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Router } from '@angular/router';\r\nimport { catchError, Observable, of, switchMap, tap } from 'rxjs';\r\nimport { IUser } from '../interfaces/IUser';\r\nimport { AppData } from './app-data.service';\r\nimport { load } from './rxjs.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService2 {\r\n\r\n private appData = inject(AppData);\r\n private router = inject(Router);\r\n private snackBar = inject(MatSnackBar);\r\n\r\n public loading = signal(false);\r\n public entering = signal(true);\r\n public attempts = signal(0);\r\n\r\n private delay = 500;\r\n\r\n autoLogin() {\r\n const hasToken = this.appData.api.loadAuthToken();\r\n const o = hasToken ? this.loadUser(this.delay) : of(undefined);\r\n o.subscribe(this.onUserLoad.bind(this));\r\n }\r\n\r\n login(credentials: { username: string, password: string }) {\r\n load(this.appData.api.login(credentials).pipe(switchMap((ok) => {\r\n if (ok) {\r\n this.entering.set(true);\r\n return this.loadUser(this.delay);\r\n }\r\n\r\n return of(undefined)\r\n })), this.loading, this.delay).subscribe(this.onUserLoad.bind(this));\r\n }\r\n\r\n loadUser(delay: number): Observable {\r\n return load(this.appData.api.getUser(delay), this.appData.loading).pipe(catchError(err => of(null)), tap(user => this.appData.setUser(user)));\r\n }\r\n\r\n onUserLoad() {\r\n if (this.appData.loggedIn()) {\r\n this.snackBar.dismiss();\r\n this.redirectAfterLogin();\r\n // this.showReports(); // Change to effect\r\n } else {\r\n this.router.navigate(['/login']);\r\n this.entering.set(false);\r\n this.appData.loading.set(false);\r\n this.attempts.set(this.attempts() + 1)\r\n }\r\n }\r\n\r\n redirectAfterLogin() {\r\n const promise = this.appData.returnUrl ? this.router.navigateByUrl(this.appData.returnUrl) : this.router.navigate(['team']);\r\n this.appData.returnUrl = undefined;\r\n promise.then(() => {\r\n this.entering.set(false);\r\n this.appData.loading.set(false);\r\n });\r\n }\r\n\r\n logout() {\r\n this.appData.api.clear();\r\n this.appData.setUser(undefined);\r\n }\r\n}\r\n"], "mappings": ";;;;;;;;;;;;;;;;;AAWM,IAAO,eAAP,MAAO,cAAY;EAHzB,cAAA;AAKY,SAAA,UAAU,OAAO,OAAO;AACxB,SAAA,SAAS,OAAO,MAAM;AACtB,SAAA,WAAW,OAAO,WAAW;AAE9B,SAAA,UAAU,OAAO,KAAK;AACtB,SAAA,WAAW,OAAO,IAAI;AACtB,SAAA,WAAW,OAAO,CAAC;AAElB,SAAA,QAAQ;;EAEhB,YAAS;AACL,UAAM,WAAW,KAAK,QAAQ,IAAI,cAAa;AAC/C,UAAM,IAAI,WAAW,KAAK,SAAS,KAAK,KAAK,IAAI,GAAG,MAAS;AAC7D,MAAE,UAAU,KAAK,WAAW,KAAK,IAAI,CAAC;EAC1C;EAEA,MAAM,aAAmD;AACrD,SAAK,KAAK,QAAQ,IAAI,MAAM,WAAW,EAAE,KAAK,UAAU,CAAC,OAAM;AAC3D,UAAI,IAAI;AACJ,aAAK,SAAS,IAAI,IAAI;AACtB,eAAO,KAAK,SAAS,KAAK,KAAK;MACnC;AAEA,aAAO,GAAG,MAAS;IACvB,CAAC,CAAC,GAAG,KAAK,SAAS,KAAK,KAAK,EAAE,UAAU,KAAK,WAAW,KAAK,IAAI,CAAC;EACvE;EAEA,SAAS,OAAa;AAClB,WAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,KAAK,GAAG,KAAK,QAAQ,OAAO,EAAE,KAAK,WAAW,SAAO,GAAG,IAAI,CAAC,GAAG,IAAI,UAAQ,KAAK,QAAQ,QAAQ,IAAI,CAAC,CAAC;EAChJ;EAEA,aAAU;AACN,QAAI,KAAK,QAAQ,SAAQ,GAAI;AACzB,WAAK,SAAS,QAAO;AACrB,WAAK,mBAAkB;IAE3B,OAAO;AACH,WAAK,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC/B,WAAK,SAAS,IAAI,KAAK;AACvB,WAAK,QAAQ,QAAQ,IAAI,KAAK;AAC9B,WAAK,SAAS,IAAI,KAAK,SAAQ,IAAK,CAAC;IACzC;EACJ;EAEA,qBAAkB;AACd,UAAM,UAAU,KAAK,QAAQ,YAAY,KAAK,OAAO,cAAc,KAAK,QAAQ,SAAS,IAAI,KAAK,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1H,SAAK,QAAQ,YAAY;AACzB,YAAQ,KAAK,MAAK;AACd,WAAK,SAAS,IAAI,KAAK;AACvB,WAAK,QAAQ,QAAQ,IAAI,KAAK;IAClC,CAAC;EACL;EAEA,SAAM;AACF,SAAK,QAAQ,IAAI,MAAK;AACtB,SAAK,QAAQ,QAAQ,MAAS;EAClC;;;uCA1DS,eAAY;IAAA;EAAA;;4EAAZ,eAAY,SAAZ,cAAY,WAAA,YAFT,OAAM,CAAA;EAAA;;", "names": [] }