Update docs.

This commit is contained in:
Spencer Ofwiti
2021-06-14 14:28:53 +03:00
parent 7923c63aa8
commit 4ed3d108cb
94 changed files with 10372 additions and 2785 deletions

View File

@@ -75,7 +75,7 @@
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#LoadEvent">LoadEvent</a>
<a href="#load">load</a>
</li>
<li>
<a href="#registry">registry</a>
@@ -83,6 +83,16 @@
<li>
<a href="#tokenRegistry">tokenRegistry</a>
</li>
<li>
<a href="#tokens">tokens</a>
</li>
<li>
<span class="modifier">Private</span>
<a href="#tokensList">tokensList</a>
</li>
<li>
<a href="#tokensSubject">tokensSubject</a>
</li>
</ul>
</td>
</tr>
@@ -95,17 +105,37 @@
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#addToken">addToken</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokenBalance">getTokenBalance</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokenByAddress">getTokenByAddress</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokenBySymbol">getTokenBySymbol</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokenName">getTokenName</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokens">getTokens</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#getTokenSymbol">getTokenSymbol</a>
</li>
<li>
<span class="modifier">Async</span>
<a href="#init">init</a>
</li>
</ul>
</td>
</tr>
@@ -124,12 +154,12 @@
<tbody>
<tr>
<td class="col-md-4">
<code>constructor(httpClient: <a href="https://angular.io/api/common/http/HttpClient" target="_blank">HttpClient</a>, registryService: <a href="../injectables/RegistryService.html">RegistryService</a>)</code>
<code>constructor(httpClient: <a href="https://angular.io/api/common/http/HttpClient" target="_blank">HttpClient</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/token.service.ts:15</a></div>
<div class="io-line">Defined in <a href="" data-line="20" class="link-to-prism">src/app/_services/token.service.ts:20</a></div>
</td>
</tr>
@@ -158,18 +188,6 @@
</td>
</tr>
<tr>
<td>registryService</td>
<td>
<code><a href="../injectables/RegistryService.html" target="_self" >RegistryService</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
@@ -184,6 +202,76 @@
<h3 id="methods">
Methods
</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="addToken"></a>
<span class="name">
<b>
addToken
</b>
<a href="#addToken"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<code>addToken(token: <a href="../interfaces/Token.html">Token</a>)</code>
</td>
</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/token.service.ts:32</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>token</td>
<td>
<code><a href="../interfaces/Token.html" target="_self" >Token</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
@@ -208,8 +296,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="37"
class="link-to-prism">src/app/_services/token.service.ts:37</a></div>
<div class="io-line">Defined in <a href="" data-line="73"
class="link-to-prism">src/app/_services/token.service.ts:73</a></div>
</td>
</tr>
@@ -246,7 +334,79 @@
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code>Promise&lt;number&gt;</code>
<b>Returns : </b> <code>Promise&lt;Promise&lt;number&gt;&gt;</code>
</div>
<div class="io-description">
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="getTokenByAddress"></a>
<span class="name">
<b>
<span class="modifier">Async</span>
getTokenByAddress
</b>
<a href="#getTokenByAddress"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="modifier-icon icon ion-ios-reset"></span>
<code>getTokenByAddress(address: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="52"
class="link-to-prism">src/app/_services/token.service.ts:52</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Parameters :</b>
<table class="params">
<thead>
<tr>
<td>Name</td>
<td>Type</td>
<td>Optional</td>
</tr>
</thead>
<tbody>
<tr>
<td>address</td>
<td>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
</div>
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code><a href="../interfaces/Token.html" target="_self" >Promise&lt;Token&gt;</a></code>
</div>
<div class="io-description">
@@ -263,6 +423,7 @@
<a name="getTokenBySymbol"></a>
<span class="name">
<b>
<span class="modifier">Async</span>
getTokenBySymbol
</b>
<a href="#getTokenBySymbol"><span class="icon ion-ios-link"></span></a>
@@ -271,15 +432,16 @@
</tr>
<tr>
<td class="col-md-4">
<code>getTokenBySymbol(symbol: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
<span class="modifier-icon icon ion-ios-reset"></span>
<code>getTokenBySymbol(symbol: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
</td>
</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/token.service.ts:33</a></div>
<div class="io-line">Defined in <a href="" data-line="63"
class="link-to-prism">src/app/_services/token.service.ts:63</a></div>
</td>
</tr>
@@ -316,7 +478,7 @@
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="../interfaces/Token.html" target="_self" >Promise&lt;Observable&lt;Token&gt;&gt;</a></code>
</div>
<div class="io-description">
@@ -326,6 +488,47 @@
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="getTokenName"></a>
<span class="name">
<b>
<span class="modifier">Async</span>
getTokenName
</b>
<a href="#getTokenName"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="modifier-icon icon ion-ios-reset"></span>
<code>getTokenName()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="78"
class="link-to-prism">src/app/_services/token.service.ts:78</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Promise&lt;string&gt;</code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
@@ -350,8 +553,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="28"
class="link-to-prism">src/app/_services/token.service.ts:28</a></div>
<div class="io-line">Defined in <a href="" data-line="44"
class="link-to-prism">src/app/_services/token.service.ts:44</a></div>
</td>
</tr>
@@ -360,7 +563,89 @@
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Promise&lt;Array&lt;Promise&lt;string&gt;&gt;&gt;</code>
<b>Returns : </b> <code>Promise&lt;void&gt;</code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="getTokenSymbol"></a>
<span class="name">
<b>
<span class="modifier">Async</span>
getTokenSymbol
</b>
<a href="#getTokenSymbol"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="modifier-icon icon ion-ios-reset"></span>
<code>getTokenSymbol()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="83"
class="link-to-prism">src/app/_services/token.service.ts:83</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Promise&lt;string&gt;</code>
</div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="init"></a>
<span class="name">
<b>
<span class="modifier">Async</span>
init
</b>
<a href="#init"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<span class="modifier-icon icon ion-ios-reset"></span>
<code>init()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="24"
class="link-to-prism">src/app/_services/token.service.ts:24</a></div>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Promise&lt;void&gt;</code>
</div>
</td>
@@ -377,28 +662,28 @@
<tbody>
<tr>
<td class="col-md-4">
<a name="LoadEvent"></a>
<a name="load"></a>
<span class="name">
<b>
LoadEvent</b>
<a href="#LoadEvent"><span class="icon ion-ios-link"></span></a>
load</b>
<a href="#load"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>EventEmitter&lt;number&gt;</code>
<i>Type : </i> <code>BehaviorSubject&lt;any&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new EventEmitter&lt;number&gt;()</code>
<i>Default value : </i><code>new BehaviorSubject&lt;any&gt;(false)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/token.service.ts:15</a></div>
<div class="io-line">Defined in <a href="" data-line="20" class="link-to-prism">src/app/_services/token.service.ts:20</a></div>
</td>
</tr>
@@ -457,6 +742,105 @@
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="tokens"></a>
<span class="name">
<b>
tokens</b>
<a href="#tokens"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../interfaces/Token.html" target="_self" >Array&lt;Token&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>[]</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/token.service.ts:15</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="tokensList"></a>
<span class="name">
<b>
<span class="modifier">Private</span>
tokensList</b>
<a href="#tokensList"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../interfaces/Token.html" target="_self" >BehaviorSubject&lt;Array&lt;Token&gt;&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new BehaviorSubject&lt;Array&lt;Token&gt;&gt;(
this.tokens
)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/_services/token.service.ts:16</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="tokensSubject"></a>
<span class="name">
<b>
tokensSubject</b>
<a href="#tokensSubject"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="../interfaces/Token.html" target="_self" >Observable&lt;Array&lt;Token&gt;&gt;</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>this.tokensList.asObservable()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/app/_services/token.service.ts:19</a></div>
</td>
</tr>
</tbody>
</table>
</section>
@@ -465,13 +849,13 @@
<div class="tab-pane fade tab-source-code" id="c-source">
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { EventEmitter, Injectable } from &#x27;@angular/core&#x27;;
import { environment } from &#x27;@src/environments/environment&#x27;;
import { BehaviorSubject, Observable } from &#x27;rxjs&#x27;;
import { CICRegistry } from &#x27;cic-client&#x27;;
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from &#x27;@angular/core&#x27;;
import { CICRegistry } from &#x27;@cicnet/cic-client&#x27;;
import { TokenRegistry } from &#x27;@app/_eth&#x27;;
import { HttpClient } from &#x27;@angular/common/http&#x27;;
import { RegistryService } from &#x27;@app/_services/registry.service&#x27;;
import { Token } from &#x27;@app/_models&#x27;;
import { BehaviorSubject, Observable, Subject } from &#x27;rxjs&#x27;;
@Injectable({
providedIn: &#x27;root&#x27;,
@@ -479,31 +863,77 @@ import { RegistryService } from &#x27;@app/_services/registry.service&#x27;;
export class TokenService {
registry: CICRegistry;
tokenRegistry: TokenRegistry;
LoadEvent: EventEmitter&lt;number&gt; &#x3D; new EventEmitter&lt;number&gt;();
tokens: Array&lt;Token&gt; &#x3D; [];
private tokensList: BehaviorSubject&lt;Array&lt;Token&gt;&gt; &#x3D; new BehaviorSubject&lt;Array&lt;Token&gt;&gt;(
this.tokens
);
tokensSubject: Observable&lt;Array&lt;Token&gt;&gt; &#x3D; this.tokensList.asObservable();
load: BehaviorSubject&lt;any&gt; &#x3D; new BehaviorSubject&lt;any&gt;(false);
constructor(private httpClient: HttpClient, private registryService: RegistryService) {
this.registry &#x3D; registryService.getRegistry();
this.registry.load();
this.registry.onload &#x3D; async (address: string): Promise&lt;void&gt; &#x3D;&gt; {
this.tokenRegistry &#x3D; new TokenRegistry(
await this.registry.getContractAddressByName(&#x27;TokenRegistry&#x27;)
);
this.LoadEvent.next(Date.now());
};
constructor(private httpClient: HttpClient) {}
async init(): Promise&lt;void&gt; {
this.registry &#x3D; await RegistryService.getRegistry();
this.tokenRegistry &#x3D; new TokenRegistry(
await this.registry.getContractAddressByName(&#x27;TokenRegistry&#x27;)
);
this.load.next(true);
}
async getTokens(): Promise&lt;Array&lt;Promise&lt;string&gt;&gt;&gt; {
addToken(token: Token): void {
const savedIndex &#x3D; this.tokens.findIndex((tk) &#x3D;&gt; tk.address &#x3D;&#x3D;&#x3D; token.address);
if (savedIndex &#x3D;&#x3D;&#x3D; 0) {
return;
}
if (savedIndex &gt; 0) {
this.tokens.splice(savedIndex, 1);
}
this.tokens.unshift(token);
this.tokensList.next(this.tokens);
}
async getTokens(): Promise&lt;void&gt; {
const count: number &#x3D; await this.tokenRegistry.totalTokens();
return Array.from({ length: count }, async (v, i) &#x3D;&gt; await this.tokenRegistry.entry(i));
for (let i &#x3D; 0; i &lt; count; i++) {
const token: Token &#x3D; await this.getTokenByAddress(await this.tokenRegistry.entry(i));
this.addToken(token);
}
}
getTokenBySymbol(symbol: string): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicCacheUrl}/tokens/${symbol}&#x60;);
async getTokenByAddress(address: string): Promise&lt;Token&gt; {
const token: any &#x3D; {};
const tokenContract &#x3D; await this.registry.addToken(address);
token.address &#x3D; address;
token.name &#x3D; await tokenContract.methods.name().call();
token.symbol &#x3D; await tokenContract.methods.symbol().call();
token.supply &#x3D; await tokenContract.methods.totalSupply().call();
token.decimals &#x3D; await tokenContract.methods.decimals().call();
return token;
}
async getTokenBalance(address: string): Promise&lt;number&gt; {
const sarafuToken &#x3D; await this.registry.addToken(await this.tokenRegistry.entry(0));
return await sarafuToken.methods.balanceOf(address).call();
async getTokenBySymbol(symbol: string): Promise&lt;Observable&lt;Token&gt;&gt; {
const tokenSubject: Subject&lt;Token&gt; &#x3D; new Subject&lt;Token&gt;();
await this.getTokens();
this.tokensSubject.subscribe((tokens) &#x3D;&gt; {
const queriedToken &#x3D; tokens.find((token) &#x3D;&gt; token.symbol &#x3D;&#x3D;&#x3D; symbol);
tokenSubject.next(queriedToken);
});
return tokenSubject.asObservable();
}
async getTokenBalance(address: string): Promise&lt;(address: string) &#x3D;&gt; Promise&lt;number&gt;&gt; {
const token &#x3D; await this.registry.addToken(await this.tokenRegistry.entry(0));
return await token.methods.balanceOf(address).call();
}
async getTokenName(): Promise&lt;string&gt; {
const token &#x3D; await this.registry.addToken(await this.tokenRegistry.entry(0));
return await token.methods.name().call();
}
async getTokenSymbol(): Promise&lt;string&gt; {
const token &#x3D; await this.registry.addToken(await this.tokenRegistry.entry(0));
return await token.methods.symbol().call();
}
}
</code></pre>