Format docs using linter and prettier.

This commit is contained in:
Spencer Ofwiti
2021-05-11 20:51:48 +03:00
parent 5228842e61
commit 208c448984
309 changed files with 11327 additions and 3307 deletions

View File

@@ -209,7 +209,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/app/_services/user.service.ts:34</a></div>
<div class="io-line">Defined in <a href="" data-line="36" class="link-to-prism">src/app/_services/user.service.ts:36</a></div>
</td>
</tr>
@@ -322,8 +322,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="123"
class="link-to-prism">src/app/_services/user.service.ts:123</a></div>
<div class="io-line">Defined in <a href="" data-line="154"
class="link-to-prism">src/app/_services/user.service.ts:154</a></div>
</td>
</tr>
@@ -394,8 +394,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="65"
class="link-to-prism">src/app/_services/user.service.ts:65</a></div>
<div class="io-line">Defined in <a href="" data-line="67"
class="link-to-prism">src/app/_services/user.service.ts:67</a></div>
</td>
</tr>
@@ -586,8 +586,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="160"
class="link-to-prism">src/app/_services/user.service.ts:160</a></div>
<div class="io-line">Defined in <a href="" data-line="195"
class="link-to-prism">src/app/_services/user.service.ts:195</a></div>
</td>
</tr>
@@ -676,8 +676,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="179"
class="link-to-prism">src/app/_services/user.service.ts:179</a></div>
<div class="io-line">Defined in <a href="" data-line="221"
class="link-to-prism">src/app/_services/user.service.ts:221</a></div>
</td>
</tr>
@@ -764,8 +764,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="131"
class="link-to-prism">src/app/_services/user.service.ts:131</a></div>
<div class="io-line">Defined in <a href="" data-line="162"
class="link-to-prism">src/app/_services/user.service.ts:162</a></div>
</td>
</tr>
@@ -834,8 +834,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="56"
class="link-to-prism">src/app/_services/user.service.ts:56</a></div>
<div class="io-line">Defined in <a href="" data-line="58"
class="link-to-prism">src/app/_services/user.service.ts:58</a></div>
</td>
</tr>
@@ -904,8 +904,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="207"
class="link-to-prism">src/app/_services/user.service.ts:207</a></div>
<div class="io-line">Defined in <a href="" data-line="256"
class="link-to-prism">src/app/_services/user.service.ts:256</a></div>
</td>
</tr>
@@ -943,8 +943,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="119"
class="link-to-prism">src/app/_services/user.service.ts:119</a></div>
<div class="io-line">Defined in <a href="" data-line="150"
class="link-to-prism">src/app/_services/user.service.ts:150</a></div>
</td>
</tr>
@@ -1013,8 +1013,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="115"
class="link-to-prism">src/app/_services/user.service.ts:115</a></div>
<div class="io-line">Defined in <a href="" data-line="143"
class="link-to-prism">src/app/_services/user.service.ts:143</a></div>
</td>
</tr>
@@ -1052,8 +1052,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="199"
class="link-to-prism">src/app/_services/user.service.ts:199</a></div>
<div class="io-line">Defined in <a href="" data-line="248"
class="link-to-prism">src/app/_services/user.service.ts:248</a></div>
</td>
</tr>
@@ -1091,8 +1091,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="203"
class="link-to-prism">src/app/_services/user.service.ts:203</a></div>
<div class="io-line">Defined in <a href="" data-line="252"
class="link-to-prism">src/app/_services/user.service.ts:252</a></div>
</td>
</tr>
@@ -1161,8 +1161,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="215"
class="link-to-prism">src/app/_services/user.service.ts:215</a></div>
<div class="io-line">Defined in <a href="" data-line="264"
class="link-to-prism">src/app/_services/user.service.ts:264</a></div>
</td>
</tr>
@@ -1200,8 +1200,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="61"
class="link-to-prism">src/app/_services/user.service.ts:61</a></div>
<div class="io-line">Defined in <a href="" data-line="63"
class="link-to-prism">src/app/_services/user.service.ts:63</a></div>
</td>
</tr>
@@ -1282,8 +1282,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="211"
class="link-to-prism">src/app/_services/user.service.ts:211</a></div>
<div class="io-line">Defined in <a href="" data-line="260"
class="link-to-prism">src/app/_services/user.service.ts:260</a></div>
</td>
</tr>
@@ -1323,8 +1323,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="149"
class="link-to-prism">src/app/_services/user.service.ts:149</a></div>
<div class="io-line">Defined in <a href="" data-line="180"
class="link-to-prism">src/app/_services/user.service.ts:180</a></div>
</td>
</tr>
@@ -1412,8 +1412,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="192"
class="link-to-prism">src/app/_services/user.service.ts:192</a></div>
<div class="io-line">Defined in <a href="" data-line="239"
class="link-to-prism">src/app/_services/user.service.ts:239</a></div>
</td>
</tr>
@@ -1451,8 +1451,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="51"
class="link-to-prism">src/app/_services/user.service.ts:51</a></div>
<div class="io-line">Defined in <a href="" data-line="53"
class="link-to-prism">src/app/_services/user.service.ts:53</a></div>
</td>
</tr>
@@ -1521,8 +1521,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="127"
class="link-to-prism">src/app/_services/user.service.ts:127</a></div>
<div class="io-line">Defined in <a href="" data-line="158"
class="link-to-prism">src/app/_services/user.service.ts:158</a></div>
</td>
</tr>
@@ -1591,8 +1591,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="197"
class="link-to-prism">src/app/_services/user.service.ts:197</a></div>
<div class="io-line">Defined in <a href="" data-line="244"
class="link-to-prism">src/app/_services/user.service.ts:244</a></div>
</td>
</tr>
@@ -1663,8 +1663,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="107"
class="link-to-prism">src/app/_services/user.service.ts:107</a></div>
<div class="io-line">Defined in <a href="" data-line="128"
class="link-to-prism">src/app/_services/user.service.ts:128</a></div>
</td>
</tr>
@@ -1757,8 +1757,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="135"
class="link-to-prism">src/app/_services/user.service.ts:135</a></div>
<div class="io-line">Defined in <a href="" data-line="166"
class="link-to-prism">src/app/_services/user.service.ts:166</a></div>
</td>
</tr>
@@ -1876,7 +1876,9 @@
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new BehaviorSubject&lt;Array&lt;AccountDetails&gt;&gt;(this.accounts)</code>
<i>Default value : </i><code>new BehaviorSubject&lt;
Array&lt;AccountDetails&gt;
&gt;(this.accounts)</code>
</td>
</tr>
<tr>
@@ -1913,7 +1915,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="30" class="link-to-prism">src/app/_services/user.service.ts:30</a></div>
<div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/app/_services/user.service.ts:32</a></div>
</td>
</tr>
@@ -1945,7 +1947,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/app/_services/user.service.ts:32</a></div>
<div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/app/_services/user.service.ts:34</a></div>
</td>
</tr>
@@ -1978,7 +1980,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="33" class="link-to-prism">src/app/_services/user.service.ts:33</a></div>
<div class="io-line">Defined in <a href="" data-line="35" class="link-to-prism">src/app/_services/user.service.ts:35</a></div>
</td>
</tr>
@@ -2010,7 +2012,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/app/_services/user.service.ts:34</a></div>
<div class="io-line">Defined in <a href="" data-line="36" class="link-to-prism">src/app/_services/user.service.ts:36</a></div>
</td>
</tr>
@@ -2037,7 +2039,7 @@
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new HttpHeaders({&#x27;x-cic-automerge&#x27;: &#x27;client&#x27;})</code>
<i>Default value : </i><code>new HttpHeaders({ &#x27;x-cic-automerge&#x27;: &#x27;client&#x27; })</code>
</td>
</tr>
<tr>
@@ -2136,35 +2138,37 @@
<div class="tab-pane fade tab-source-code" id="c-source">
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Injectable} from &#x27;@angular/core&#x27;;
import {BehaviorSubject, Observable, Subject} from &#x27;rxjs&#x27;;
import {HttpClient, HttpHeaders, HttpParams} from &#x27;@angular/common/http&#x27;;
import {environment} from &#x27;@src/environments/environment&#x27;;
import {first} from &#x27;rxjs/operators&#x27;;
import {ArgPair, Envelope, Phone, Syncable, User} from &#x27;cic-client-meta&#x27;;
import {AccountDetails} from &#x27;@app/_models&#x27;;
import {LoggingService} from &#x27;@app/_services/logging.service&#x27;;
import {TokenService} from &#x27;@app/_services/token.service&#x27;;
import {AccountIndex} from &#x27;@app/_eth&#x27;;
import {MutableKeyStore, PGPSigner, Signer} from &#x27;@app/_pgp&#x27;;
import {RegistryService} from &#x27;@app/_services/registry.service&#x27;;
import {CICRegistry} from &#x27;cic-client&#x27;;
import {AuthService} from &#x27;@app/_services/auth.service&#x27;;
import {personValidation, vcardValidation} from &#x27;@app/_helpers&#x27;;
import {add0x} from &#x27;@src/assets/js/ethtx/dist/hex&#x27;;
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from &#x27;@angular/core&#x27;;
import { BehaviorSubject, Observable, Subject } from &#x27;rxjs&#x27;;
import { HttpClient, HttpHeaders, HttpParams } from &#x27;@angular/common/http&#x27;;
import { environment } from &#x27;@src/environments/environment&#x27;;
import { first } from &#x27;rxjs/operators&#x27;;
import { ArgPair, Envelope, Phone, Syncable, User } from &#x27;cic-client-meta&#x27;;
import { AccountDetails } from &#x27;@app/_models&#x27;;
import { LoggingService } from &#x27;@app/_services/logging.service&#x27;;
import { TokenService } from &#x27;@app/_services/token.service&#x27;;
import { AccountIndex } from &#x27;@app/_eth&#x27;;
import { MutableKeyStore, PGPSigner, Signer } from &#x27;@app/_pgp&#x27;;
import { RegistryService } from &#x27;@app/_services/registry.service&#x27;;
import { CICRegistry } from &#x27;cic-client&#x27;;
import { AuthService } from &#x27;@app/_services/auth.service&#x27;;
import { personValidation, vcardValidation } from &#x27;@app/_helpers&#x27;;
import { add0x } from &#x27;@src/assets/js/ethtx/dist/hex&#x27;;
const vCard &#x3D; require(&#x27;vcard-parser&#x27;);
@Injectable({
providedIn: &#x27;root&#x27;
providedIn: &#x27;root&#x27;,
})
export class UserService {
headers: HttpHeaders &#x3D; new HttpHeaders({&#x27;x-cic-automerge&#x27;: &#x27;client&#x27;});
headers: HttpHeaders &#x3D; new HttpHeaders({ &#x27;x-cic-automerge&#x27;: &#x27;client&#x27; });
keystore: MutableKeyStore;
signer: Signer;
registry: CICRegistry;
accounts: Array&lt;AccountDetails&gt; &#x3D; [];
private accountsList: BehaviorSubject&lt;Array&lt;AccountDetails&gt;&gt; &#x3D; new BehaviorSubject&lt;Array&lt;AccountDetails&gt;&gt;(this.accounts);
private accountsList: BehaviorSubject&lt;Array&lt;AccountDetails&gt;&gt; &#x3D; new BehaviorSubject&lt;
Array&lt;AccountDetails&gt;
&gt;(this.accounts);
accountsSubject: Observable&lt;Array&lt;AccountDetails&gt;&gt; &#x3D; this.accountsList.asObservable();
actions: Array&lt;any&gt; &#x3D; [];
@@ -2176,7 +2180,7 @@ export class UserService {
private loggingService: LoggingService,
private tokenService: TokenService,
private registryService: RegistryService,
private authService: AuthService,
private authService: AuthService
) {
this.authService.init().then(() &#x3D;&gt; {
this.keystore &#x3D; authService.mutableKeyStore;
@@ -2188,28 +2192,38 @@ export class UserService {
resetPin(phone: string): Observable&lt;any&gt; {
const params: HttpParams &#x3D; new HttpParams().set(&#x27;phoneNumber&#x27;, phone);
return this.httpClient.get(&#x60;${environment.cicUssdUrl}/pin&#x60;, {params});
return this.httpClient.get(&#x60;${environment.cicUssdUrl}/pin&#x60;, { params });
}
getAccountStatus(phone: string): Observable&lt;any&gt; {
const params: HttpParams &#x3D; new HttpParams().set(&#x27;phoneNumber&#x27;, phone);
return this.httpClient.get(&#x60;${environment.cicUssdUrl}/pin&#x60;, {params});
return this.httpClient.get(&#x60;${environment.cicUssdUrl}/pin&#x60;, { params });
}
getLockedAccounts(offset: number, limit: number): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicUssdUrl}/accounts/locked/${offset}/${limit}&#x60;);
}
async changeAccountInfo(address: string, name: string, phoneNumber: string, age: string, type: string, bio: string, gender: string,
businessCategory: string, userLocation: string, location: string, locationType: string
async changeAccountInfo(
address: string,
name: string,
phoneNumber: string,
age: string,
type: string,
bio: string,
gender: string,
businessCategory: string,
userLocation: string,
location: string,
locationType: string
): Promise&lt;any&gt; {
const accountInfo: any &#x3D; {
vcard: {
fn: [{}],
n: [{}],
tel: [{}]
tel: [{}],
},
location: {}
location: {},
};
accountInfo.vcard.fn[0].value &#x3D; name;
accountInfo.vcard.n[0].value &#x3D; name.split(&#x27; &#x27;);
@@ -2225,33 +2239,52 @@ export class UserService {
await vcardValidation(accountInfo.vcard);
accountInfo.vcard &#x3D; btoa(vCard.generate(accountInfo.vcard));
const accountKey: string &#x3D; await User.toKey(address);
this.getAccountDetailsFromMeta(accountKey).pipe(first()).subscribe(async res &#x3D;&gt; {
const syncableAccount: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const update: Array&lt;ArgPair&gt; &#x3D; [];
for (const prop in accountInfo) {
update.push(new ArgPair(prop, accountInfo[prop]));
}
syncableAccount.update(update, &#x27;client-branch&#x27;);
await personValidation(syncableAccount.m.data);
await this.updateMeta(syncableAccount, accountKey, this.headers);
}, async error &#x3D;&gt; {
this.loggingService.sendErrorLevelMessage(&#x27;Can\&#x27;t find account info in meta service&#x27;, this, {error});
const syncableAccount: Syncable &#x3D; new Syncable(accountKey, accountInfo);
await this.updateMeta(syncableAccount, accountKey, this.headers);
});
this.getAccountDetailsFromMeta(accountKey)
.pipe(first())
.subscribe(
async (res) &#x3D;&gt; {
const syncableAccount: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const update: Array&lt;ArgPair&gt; &#x3D; [];
for (const prop of Object.keys(accountInfo)) {
update.push(new ArgPair(prop, accountInfo[prop]));
}
syncableAccount.update(update, &#x27;client-branch&#x27;);
await personValidation(syncableAccount.m.data);
await this.updateMeta(syncableAccount, accountKey, this.headers);
},
async (error) &#x3D;&gt; {
this.loggingService.sendErrorLevelMessage(
&#x27;Cannot find account info in meta service&#x27;,
this,
{ error }
);
const syncableAccount: Syncable &#x3D; new Syncable(accountKey, accountInfo);
await this.updateMeta(syncableAccount, accountKey, this.headers);
}
);
return accountKey;
}
async updateMeta(syncableAccount: Syncable, accountKey: string, headers: HttpHeaders): Promise&lt;any&gt; {
const envelope: Envelope &#x3D; await this.wrap(syncableAccount , this.signer);
async updateMeta(
syncableAccount: Syncable,
accountKey: string,
headers: HttpHeaders
): Promise&lt;any&gt; {
const envelope: Envelope &#x3D; await this.wrap(syncableAccount, this.signer);
const reqBody: string &#x3D; envelope.toJSON();
this.httpClient.put(&#x60;${environment.cicMetaUrl}/${accountKey}&#x60;, reqBody , { headers }).pipe(first()).subscribe(res &#x3D;&gt; {
this.loggingService.sendInfoLevelMessage(&#x60;Response: ${res}&#x60;);
});
this.httpClient
.put(&#x60;${environment.cicMetaUrl}/${accountKey}&#x60;, reqBody, { headers })
.pipe(first())
.subscribe((res) &#x3D;&gt; {
this.loggingService.sendInfoLevelMessage(&#x60;Response: ${res}&#x60;);
});
}
getActions(): void {
this.httpClient.get(&#x60;${environment.cicCacheUrl}/actions&#x60;).pipe(first()).subscribe(res &#x3D;&gt; this.actionsList.next(res));
this.httpClient
.get(&#x60;${environment.cicCacheUrl}/actions&#x60;)
.pipe(first())
.subscribe((res) &#x3D;&gt; this.actionsList.next(res));
}
getActionById(id: string): Observable&lt;any&gt; {
@@ -2286,44 +2319,60 @@ export class UserService {
async loadAccounts(limit: number &#x3D; 100, offset: number &#x3D; 0): Promise&lt;void&gt; {
this.resetAccountsList();
const accountIndexAddress: string &#x3D; await this.registry.getContractAddressByName(&#x27;AccountRegistry&#x27;);
const accountIndexAddress: string &#x3D; await this.registry.getContractAddressByName(
&#x27;AccountRegistry&#x27;
);
const accountIndexQuery &#x3D; new AccountIndex(accountIndexAddress);
const accountAddresses: Array&lt;string&gt; &#x3D; await accountIndexQuery.last(await accountIndexQuery.totalAccounts());
const accountAddresses: Array&lt;string&gt; &#x3D; await accountIndexQuery.last(
await accountIndexQuery.totalAccounts()
);
this.loggingService.sendInfoLevelMessage(accountAddresses);
for (const accountAddress of accountAddresses.slice(offset, offset + limit)) {
await this.getAccountByAddress(accountAddress, limit);
}
}
async getAccountByAddress(accountAddress: string, limit: number &#x3D; 100): Promise&lt;Observable&lt;AccountDetails&gt;&gt; {
let accountSubject: Subject&lt;any&gt; &#x3D; new Subject&lt;any&gt;();
this.getAccountDetailsFromMeta(await User.toKey(add0x(accountAddress))).pipe(first()).subscribe(async res &#x3D;&gt; {
const account: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const accountInfo &#x3D; account.m.data;
await personValidation(accountInfo);
accountInfo.balance &#x3D; await this.tokenService.getTokenBalance(accountInfo.identities.evm[&#x60;bloxberg:${environment.bloxbergChainId}&#x60;][0]);
accountInfo.vcard &#x3D; vCard.parse(atob(accountInfo.vcard));
await vcardValidation(accountInfo.vcard);
this.accounts.unshift(accountInfo);
if (this.accounts.length &gt; limit) {
this.accounts.length &#x3D; limit;
}
this.accountsList.next(this.accounts);
accountSubject.next(accountInfo);
});
async getAccountByAddress(
accountAddress: string,
limit: number &#x3D; 100
): Promise&lt;Observable&lt;AccountDetails&gt;&gt; {
const accountSubject: Subject&lt;any&gt; &#x3D; new Subject&lt;any&gt;();
this.getAccountDetailsFromMeta(await User.toKey(add0x(accountAddress)))
.pipe(first())
.subscribe(async (res) &#x3D;&gt; {
const account: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const accountInfo &#x3D; account.m.data;
await personValidation(accountInfo);
accountInfo.balance &#x3D; await this.tokenService.getTokenBalance(
accountInfo.identities.evm[&#x60;bloxberg:${environment.bloxbergChainId}&#x60;][0]
);
accountInfo.vcard &#x3D; vCard.parse(atob(accountInfo.vcard));
await vcardValidation(accountInfo.vcard);
this.accounts.unshift(accountInfo);
if (this.accounts.length &gt; limit) {
this.accounts.length &#x3D; limit;
}
this.accountsList.next(this.accounts);
accountSubject.next(accountInfo);
});
return accountSubject.asObservable();
}
async getAccountByPhone(phoneNumber: string, limit: number &#x3D; 100): Promise&lt;Observable&lt;AccountDetails&gt;&gt; {
let accountSubject: Subject&lt;any&gt; &#x3D; new Subject&lt;any&gt;();
this.getAccountDetailsFromMeta(await Phone.toKey(phoneNumber)).pipe(first()).subscribe(async res &#x3D;&gt; {
const response: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const address: string &#x3D; response.m.data;
const account: Observable&lt;AccountDetails&gt; &#x3D; await this.getAccountByAddress(address, limit);
account.subscribe(result &#x3D;&gt; {
accountSubject.next(result);
async getAccountByPhone(
phoneNumber: string,
limit: number &#x3D; 100
): Promise&lt;Observable&lt;AccountDetails&gt;&gt; {
const accountSubject: Subject&lt;any&gt; &#x3D; new Subject&lt;any&gt;();
this.getAccountDetailsFromMeta(await Phone.toKey(phoneNumber))
.pipe(first())
.subscribe(async (res) &#x3D;&gt; {
const response: Syncable &#x3D; Envelope.fromJSON(JSON.stringify(res)).unwrap();
const address: string &#x3D; response.m.data;
const account: Observable&lt;AccountDetails&gt; &#x3D; await this.getAccountByAddress(address, limit);
account.subscribe((result) &#x3D;&gt; {
accountSubject.next(result);
});
});
});
return accountSubject.asObservable();
}
@@ -2332,7 +2381,9 @@ export class UserService {
this.accountsList.next(this.accounts);
}
searchAccountByName(name: string): any { return; }
searchAccountByName(name: string): any {
return;
}
getCategories(): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/categories&#x60;);