Connect account address search to meta service.
This commit is contained in:
parent
62655a691a
commit
9a87e5af04
@ -1,10 +1,10 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {BehaviorSubject, Observable} from 'rxjs';
|
import {BehaviorSubject, Observable, of, Subject} from 'rxjs';
|
||||||
import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
|
import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
|
||||||
import {environment} from '@src/environments/environment';
|
import {environment} from '@src/environments/environment';
|
||||||
import {first} from 'rxjs/operators';
|
import {first} from 'rxjs/operators';
|
||||||
import {ArgPair, Envelope, Syncable, User} from 'cic-client-meta';
|
import {ArgPair, Envelope, Phone, Syncable, User} from 'cic-client-meta';
|
||||||
import {MetaResponse} from '@app/_models';
|
import {AccountDetails, MetaResponse} from '@app/_models';
|
||||||
import {LoggingService} from '@app/_services/logging.service';
|
import {LoggingService} from '@app/_services/logging.service';
|
||||||
import {TokenService} from '@app/_services/token.service';
|
import {TokenService} from '@app/_services/token.service';
|
||||||
import {AccountIndex, Registry} from '@app/_eth';
|
import {AccountIndex, Registry} from '@app/_eth';
|
||||||
@ -157,6 +157,12 @@ export class UserService {
|
|||||||
const accountAddresses = await accountIndexQuery.last(await accountIndexQuery.totalAccounts());
|
const accountAddresses = await accountIndexQuery.last(await accountIndexQuery.totalAccounts());
|
||||||
this.loggingService.sendInfoLevelMessage(accountAddresses);
|
this.loggingService.sendInfoLevelMessage(accountAddresses);
|
||||||
for (const accountAddress of accountAddresses.slice(offset, offset + limit)) {
|
for (const accountAddress of accountAddresses.slice(offset, offset + limit)) {
|
||||||
|
await this.getAccountByAddress(accountAddress, limit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getAccountByAddress(accountAddress: string, limit: number = 100): Promise<Observable<AccountDetails>> {
|
||||||
|
let accountSubject = new Subject<any>();
|
||||||
this.getAccountDetailsFromMeta(await User.toKey(accountAddress)).pipe(first()).subscribe(async res => {
|
this.getAccountDetailsFromMeta(await User.toKey(accountAddress)).pipe(first()).subscribe(async res => {
|
||||||
const account = Envelope.fromJSON(JSON.stringify(res)).unwrap();
|
const account = Envelope.fromJSON(JSON.stringify(res)).unwrap();
|
||||||
this.accountsMeta.push(account);
|
this.accountsMeta.push(account);
|
||||||
@ -168,8 +174,16 @@ export class UserService {
|
|||||||
this.accounts.length = limit;
|
this.accounts.length = limit;
|
||||||
}
|
}
|
||||||
this.accountsList.next(this.accounts);
|
this.accountsList.next(this.accounts);
|
||||||
|
accountSubject.next(accountInfo);
|
||||||
|
console.log(accountInfo);
|
||||||
});
|
});
|
||||||
|
return accountSubject.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getAccountByPhone(phoneNumber: string): Promise<any> {
|
||||||
|
this.getAccountDetailsFromMeta(await Phone.toKey(Number(phoneNumber))).pipe(first()).subscribe(res => {
|
||||||
|
console.log(res);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
resetAccountsList(): void {
|
resetAccountsList(): void {
|
||||||
@ -180,6 +194,4 @@ export class UserService {
|
|||||||
searchAccountByName(name: string): any { return; }
|
searchAccountByName(name: string): any { return; }
|
||||||
|
|
||||||
searchAccountByPhone(phoneNumber: string): any { return; }
|
searchAccountByPhone(phoneNumber: string): any { return; }
|
||||||
|
|
||||||
searchAccountByAddress(address: string): any { return; }
|
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,6 @@
|
|||||||
</mat-card-title>
|
</mat-card-title>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<mat-tab-group>
|
<mat-tab-group>
|
||||||
<mat-tab label="Name">
|
|
||||||
<form [formGroup]="nameSearchForm" (ngSubmit)="onNameSearch()">
|
|
||||||
<mat-form-field appearance="outline">
|
|
||||||
<mat-label> Search </mat-label>
|
|
||||||
<input matInput type="text" placeholder="Search by name" formControlName="name" [errorStateMatcher]="matcher">
|
|
||||||
<mat-error *ngIf="nameSearchSubmitted && nameSearchFormStub.name.errors">Name is required.</mat-error>
|
|
||||||
<mat-icon matSuffix>face</mat-icon>
|
|
||||||
<mat-hint>Name</mat-hint>
|
|
||||||
</mat-form-field>
|
|
||||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button>
|
|
||||||
</form>
|
|
||||||
</mat-tab>
|
|
||||||
<mat-tab label="Phone Number">
|
<mat-tab label="Phone Number">
|
||||||
<form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()">
|
<form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()">
|
||||||
<mat-form-field appearance="outline">
|
<mat-form-field appearance="outline">
|
||||||
|
@ -2,6 +2,7 @@ import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
|
|||||||
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
||||||
import {CustomErrorStateMatcher} from '@app/_helpers';
|
import {CustomErrorStateMatcher} from '@app/_helpers';
|
||||||
import {UserService} from '@app/_services';
|
import {UserService} from '@app/_services';
|
||||||
|
import {Router} from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-account-search',
|
selector: 'app-account-search',
|
||||||
@ -24,6 +25,7 @@ export class AccountSearchComponent implements OnInit {
|
|||||||
constructor(
|
constructor(
|
||||||
private formBuilder: FormBuilder,
|
private formBuilder: FormBuilder,
|
||||||
private userService: UserService,
|
private userService: UserService,
|
||||||
|
private router: Router,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
@ -50,19 +52,25 @@ export class AccountSearchComponent implements OnInit {
|
|||||||
this.nameSearchLoading = false;
|
this.nameSearchLoading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onPhoneSearch(): void {
|
async onPhoneSearch(): Promise<void> {
|
||||||
this.phoneSearchSubmitted = true;
|
this.phoneSearchSubmitted = true;
|
||||||
if (this.phoneSearchForm.invalid) { return; }
|
if (this.phoneSearchForm.invalid) { return; }
|
||||||
this.phoneSearchLoading = true;
|
this.phoneSearchLoading = true;
|
||||||
this.userService.searchAccountByPhone(this.phoneSearchFormStub.phoneNumber.value);
|
await this.userService.getAccountByPhone(this.phoneSearchFormStub.phoneNumber.value);
|
||||||
this.phoneSearchLoading = false;
|
this.phoneSearchLoading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onAddressSearch(): void {
|
async onAddressSearch(): Promise<void> {
|
||||||
this.addressSearchSubmitted = true;
|
this.addressSearchSubmitted = true;
|
||||||
if (this.addressSearchForm.invalid) { return; }
|
if (this.addressSearchForm.invalid) { return; }
|
||||||
this.addressSearchLoading = true;
|
this.addressSearchLoading = true;
|
||||||
this.userService.searchAccountByAddress(this.addressSearchFormStub.address.value);
|
(await this.userService.getAccountByAddress(this.addressSearchFormStub.address.value, 100)).subscribe(async res => {
|
||||||
|
if (res !== undefined) {
|
||||||
|
await this.router.navigateByUrl(`/accounts/${res.identities.evm['bloxberg:8996']}`);
|
||||||
|
} else {
|
||||||
|
alert('Account not found!');
|
||||||
|
}
|
||||||
|
});
|
||||||
this.addressSearchLoading = false;
|
this.addressSearchLoading = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user