diff --git a/nginx.conf b/nginx.conf index 7cdc644..6a8d842 100644 --- a/nginx.conf +++ b/nginx.conf @@ -35,7 +35,7 @@ http { location / { root /usr/share/nginx/html; index index.html index.htm; - try_files $uri $uri/ /index.html =404; + try_files $uri $uri/ /index.html; } } } diff --git a/src/app/_services/registry.service.ts b/src/app/_services/registry.service.ts index 47570cf..302f467 100644 --- a/src/app/_services/registry.service.ts +++ b/src/app/_services/registry.service.ts @@ -17,6 +17,10 @@ export class RegistryService { this.registry.declaratorHelper.addTrust(environment.trustedDeclaratorAddress); } + async load(): Promise { + this.registry.load(); + } + getRegistry(): any { return this.registry; } diff --git a/src/app/_services/user.service.ts b/src/app/_services/user.service.ts index 3685197..18feb6f 100644 --- a/src/app/_services/user.service.ts +++ b/src/app/_services/user.service.ts @@ -1,5 +1,5 @@ import {Injectable} from '@angular/core'; -import {BehaviorSubject, Observable, Subject} from 'rxjs'; +import {BehaviorSubject, Observable, Subject, throwError, of} from 'rxjs'; import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http'; import {environment} from '@src/environments/environment'; import {first} from 'rxjs/operators'; @@ -40,17 +40,24 @@ export class UserService { private registryService: RegistryService, private authService: AuthService ) { - this.authService = authService; - this.registryService = registryService; } - async load(): Promise { - await this.authService.init(); - // TODO you don't have to do this reassignment - this.keystore = this.authService.mutableKeyStore; - this.signer = new PGPSigner(this.keystore); - this.registry = this.registryService.getRegistry(); - await this.registry.load(); + await load(): Observable { + try { + // TODO this method is called by ngOnInit so we need to + // emit an observalbe or conver ngonInit to promise + // TODO alig the load/init methods naming + await this.authService.init(); + await this.registryService.load(); + // TODO key store is defined + this.keystore = this.authService.mutableKeyStore; + this.signer = new PGPSigner(this.keystore); + this.registry = this.registryService.getRegistry(); + return of(0); + } catch (error) { + console.log('ERROR: Failed to initiialize User Service', error) + return throwError(error); + } } resetPin(phone: string): Observable { @@ -153,10 +160,17 @@ export class UserService { async loadAccounts(limit: number = 100, offset: number = 0): Promise { this.resetAccountsList(); - const accountIndexAddress: string = await this.registry.getContractAddressByName('AccountRegistry'); - const accountIndexQuery = new AccountIndex(accountIndexAddress); - const accountAddresses: Array = await accountIndexQuery.last(await accountIndexQuery.totalAccounts()); - this.loggingService.sendInfoLevelMessage(accountAddresses); + let accountAddresses: Array; + try { + const accountIndexAddress: string = await this.registry.getContractAddressByName('AccountRegistry'); + const accountIndexQuery = new AccountIndex(accountIndexAddress); + const totalAccounts = await accountIndexQuery.totalAccounts() + const accountAddresses = await accountIndexQuery.last(totalAccounts); + this.loggingService.sendInfoLevelMessage(accountAddresses); + } catch (error){ + // TODO real logging: + console.log("ERROR: failed to load accounts \n", error) + } for (const accountAddress of accountAddresses.slice(offset, offset + limit)) { await this.getAccountByAddress(accountAddress, limit); } diff --git a/src/app/pages/accounts/accounts.component.ts b/src/app/pages/accounts/accounts.component.ts index bcb38a2..f02c00b 100644 --- a/src/app/pages/accounts/accounts.component.ts +++ b/src/app/pages/accounts/accounts.component.ts @@ -34,10 +34,11 @@ export class AccountsComponent implements OnInit { private loggingService: LoggingService ) { - this.userService = userService; } ngOnInit(): void { + // TODO end of the line you gotta be an observalbe or a promise + this.userService.load(); this.userService.getAccountTypes().pipe(first()).subscribe(res => this.accountTypes = res); this.userService.accountsSubject.subscribe(accounts => { this.dataSource = new MatTableDataSource(accounts);