{"version":3,"sources":["node_modules/@capacitor/preferences/dist/esm/index.js","src/app/services/storage/storage.service.ts","src/app/shared/helpers/get-api-url.ts","src/app/services/auth/auth.service.ts"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst Preferences = registerPlugin('Preferences', {\n web: () => import('./web').then(m => new m.PreferencesWeb())\n});\nexport * from './definitions';\nexport { Preferences };\n","import { AppConstants } from '../../app.constants';\nimport { Capacitor } from '@capacitor/core';\nimport { Injectable } from '@angular/core';\nimport { Preferences } from '@capacitor/preferences';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n /*\n * Used to get data in storage\n */\n public async get(key: string): Promise {\n try {\n if (Capacitor.isNativePlatform()) {\n const { value } = await Preferences.get({ key: this.getNameSpace(key) });\n return value ? JSON.parse(value) : null;\n } else {\n const item = localStorage.getItem(this.getNameSpace(key));\n return item ? JSON.parse(item) : null;\n }\n } catch (error) {\n console.error(`Error getting data from storage for key ${key}:`, error);\n throw error;\n }\n }\n\n /*\n * Used to get all data in storage\n */\n public async fetchAll(): Promise {\n try {\n const preferences: { [key: string]: any } = {};\n if (Capacitor.isNativePlatform()) {\n const { keys } = await Preferences.keys();\n for (const key of keys) {\n const { value } = await Preferences.get({ key });\n preferences[key] = value;\n }\n }\n return preferences;\n } catch (error) {\n console.error(`Error getting all data from storage:`, error);\n throw error;\n }\n }\n\n /*\n * Used to set data in storage\n */\n public async set(key: string, value: any): Promise {\n if (Capacitor.isNativePlatform()) {\n return await Preferences.set({ key: this.getNameSpace(key), value: JSON.stringify(value) });\n } else {\n return localStorage.setItem(this.getNameSpace(key), JSON.stringify(value));\n }\n }\n\n /*\n * Used to clear all data in storage\n */\n public async clear(): Promise {\n if (Capacitor.isNativePlatform()) {\n return await Preferences.clear();\n } else {\n return localStorage.clear();\n }\n }\n\n /*\n * Used to clear specific data entry in storage\n */\n public async remove(key: string): Promise {\n if (Capacitor.isNativePlatform()) {\n return await Preferences.remove({ key: this.getNameSpace(key) });\n } else {\n return localStorage.removeItem(this.getNameSpace(key));\n }\n }\n\n /*\n * Used to construct the namespace for storage\n */\n private getNameSpace(key: string): string {\n return `${AppConstants.STORAGE_PREFIX}_${key}`;\n }\n}\n","import { environment } from '@environment/environment';\n\nexport function getApiUrl(path: string): string {\n return environment.apiUrl + path;\n}\n","import { AppConstants } from '../../app.constants';\nimport { AppPages } from 'src/app/app.pages';\nimport { AuthCredentials } from '@interfaces/auth-credentials.interface';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { LoadingController } from '@ionic/angular/standalone';\nimport { Router } from '@angular/router';\nimport { StorageService } from '../storage/storage.service';\nimport { firstValueFrom, map } from 'rxjs';\nimport { getApiUrl } from '@shared/helpers/get-api-url';\n\n@Injectable({\n providedIn: 'root'\n})\n/**\n * AuthService is responsible for the authentication process and managing the client token.\n */\nexport class AuthService {\n private _token: string | null = null;\n private readonly loadingController: LoadingController = inject(LoadingController);\n private readonly http: HttpClient = inject(HttpClient);\n private readonly router: Router = inject(Router);\n private readonly storageService: StorageService = inject(StorageService);\n\n /**\n * Getter method to retrieve token\n */\n public get token(): string | null {\n return this._token;\n }\n\n /**\n * Setter method to set token\n */\n public set token(value: string) {\n this._token = value;\n }\n\n /**\n * Restore token from local storage\n */\n public async restoreToken(): Promise {\n this._token = await this.storageService.get(AppConstants.USER_TOKEN);\n }\n\n /**\n * Retrieve data from token\n */\n public decodeToken(token: string): any {\n let base64Url = token.split('.')[1];\n let base64 = base64Url.replace('-', '+').replace('_', '/');\n return JSON.parse(window.atob(base64));\n }\n\n /**\n * Sends credentials of the client to the API.\n */\n public async login(credentials: AuthCredentials): Promise {\n const { token } = await firstValueFrom(\n this.http.post(getApiUrl('/login'), credentials).pipe(map((response: any) => response.data))\n );\n if (token) {\n this._token = token;\n await this.storageService.set(AppConstants.USER_TOKEN, token);\n } else {\n throw new Error('Api did not return token');\n }\n }\n\n /**\n * Inform application that user has logged and updated\n */\n public async logout(timeout?: number): Promise {\n this._token = null;\n await this.storageService.clear();\n this.router.navigateByUrl(AppPages.Login);\n if (await this.loadingController.getTop()) {\n this.loadingController.dismiss();\n }\n setTimeout(() => {\n window.location.reload();\n }, timeout || 500);\n }\n}\n\nexport const authFactory = (authService: AuthService) => {\n return async (): Promise => await authService.restoreToken();\n};\n"],"names":["Preferences","registerPlugin","m","StorageService","get","key","__async","Capacitor","isNativePlatform","value","Preferences","getNameSpace","JSON","parse","item","localStorage","getItem","error","console","fetchAll","preferences","keys","set","stringify","setItem","clear","remove","removeItem","AppConstants","STORAGE_PREFIX","factory","ɵfac","providedIn","_StorageService","getApiUrl","path","environment","apiUrl","AuthService","constructor","_token","loadingController","inject","LoadingController","http","HttpClient","router","Router","storageService","StorageService","token","value","restoreToken","__async","get","AppConstants","USER_TOKEN","decodeToken","base64","split","replace","JSON","parse","window","atob","login","credentials","firstValueFrom","post","getApiUrl","pipe","map","response","data","set","Error","logout","timeout","clear","navigateByUrl","AppPages","Login","getTop","dismiss","setTimeout","location","reload","factory","ɵfac","providedIn","_AuthService","authFactory","authService"],"mappings":"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","debug_id":"4d68b22f-272c-53d6-a933-95cb8f0de673"}