import { inject } from "@angular/core"; import { ApiService, CfPermissionsService, CfTokenService } from "codefoxui"; import { switchMap, tap } from "rxjs"; import { LocalApiService } from "./services/local.api.service"; import { UserService } from "./services/user.service"; export function init(): () => Promise { const apiService: ApiService = inject(ApiService); const las: LocalApiService = inject(LocalApiService); const tokenService: CfTokenService = inject(CfTokenService); const userService: UserService = inject(UserService); const permissionsService: CfPermissionsService = inject(CfPermissionsService); return (): Promise => { return new Promise((resolve) => { las.getConfiguration().pipe( tap(({ apiBaseUrl }) => { apiService.apiBaseUrl = apiBaseUrl; }), switchMap(() => { return las.init(); }), tap(({ sessionToken, userData }) => { tokenService.accessToken = sessionToken; userService.userData = userData; if (userData !== null) { permissionsService.permissions = userData.permissions; } }) ).subscribe(() => { resolve(true); }) }); } }