Update docs.
This commit is contained in:
@@ -78,10 +78,14 @@
|
||||
<a href="#mutableKeyStore">mutableKeyStore</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sessionLoginCount">sessionLoginCount</a>
|
||||
<a href="#trustedUsers">trustedUsers</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sessionToken">sessionToken</a>
|
||||
<span class="modifier">Private</span>
|
||||
<a href="#trustedUsersList">trustedUsersList</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#trustedUsersSubject">trustedUsersSubject</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
@@ -95,16 +99,25 @@
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<a href="#addTrustedUser">addTrustedUser</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getChallenge">getChallenge</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getPrivateKey">getPrivateKey</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getPrivateKeyInfo">getPrivateKeyInfo</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#getPublicKeys">getPublicKeys</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getSessionToken">getSessionToken</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getTrustedUsers">getTrustedUsers</a>
|
||||
</li>
|
||||
@@ -115,12 +128,9 @@
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#init">init</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#login">login</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#loginResponse">loginResponse</a>
|
||||
<a href="#login">login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#loginView">loginView</a>
|
||||
@@ -129,12 +139,15 @@
|
||||
<a href="#logout">logout</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sendResponse">sendResponse</a>
|
||||
<a href="#sendSignedChallenge">sendSignedChallenge</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#setKey">setKey</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#setSessionToken">setSessionToken</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#setState">setState</a>
|
||||
</li>
|
||||
@@ -161,7 +174,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/_services/auth.service.ts:17</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/app/_services/auth.service.ts:22</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -228,6 +241,76 @@
|
||||
<h3 id="methods">
|
||||
Methods
|
||||
</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="addTrustedUser"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
addTrustedUser
|
||||
</b>
|
||||
<a href="#addTrustedUser"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>addTrustedUser(user: <a href="../interfaces/Staff.html">Staff</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="173"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:173</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>user</td>
|
||||
<td>
|
||||
<code><a href="../interfaces/Staff.html" target="_self" >Staff</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>
|
||||
@@ -250,8 +333,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="84"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:84</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="85"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:85</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -260,7 +343,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -289,8 +372,47 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="210"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:210</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="203"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:203</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getPrivateKeyInfo"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
getPrivateKeyInfo
|
||||
</b>
|
||||
<a href="#getPrivateKeyInfo"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getPrivateKeyInfo()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="207"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:207</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -330,8 +452,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="200"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:200</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="191"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:191</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -347,6 +469,45 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getSessionToken"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
getSessionToken
|
||||
</b>
|
||||
<a href="#getSessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getSessionToken()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="39"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:39</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -369,8 +530,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="194"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:194</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="185"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:185</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -379,7 +540,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -408,8 +569,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="42"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:42</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="51"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:51</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -418,7 +579,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -449,8 +610,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="27"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:27</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="32"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:32</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -473,6 +634,7 @@
|
||||
<a name="login"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Async</span>
|
||||
login
|
||||
</b>
|
||||
<a href="#login"><span class="icon ion-ios-link"></span></a>
|
||||
@@ -481,56 +643,16 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>login()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="98"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:98</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="loginResponse"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Async</span>
|
||||
loginResponse
|
||||
</b>
|
||||
<a href="#loginResponse"><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>loginResponse(o: literal type)</code>
|
||||
<code>login()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="116"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:116</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="94"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:94</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -539,39 +661,8 @@
|
||||
<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>o</td>
|
||||
<td>
|
||||
<code>literal type</code>
|
||||
</td>
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -599,8 +690,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="150"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:150</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="129"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:129</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -638,8 +729,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="188"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:188</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="167"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:167</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -659,26 +750,26 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sendResponse"></a>
|
||||
<a name="sendSignedChallenge"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sendResponse
|
||||
sendSignedChallenge
|
||||
</b>
|
||||
<a href="#sendResponse"><span class="icon ion-ios-link"></span></a>
|
||||
<a href="#sendSignedChallenge"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>sendResponse(hobaResponseEncoded: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
<code>sendSignedChallenge(hobaResponseEncoded: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="61"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:61</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="73"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:73</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -715,7 +806,7 @@
|
||||
<div>
|
||||
</div>
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<boolean></code>
|
||||
<b>Returns : </b> <code>Promise<any></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
@@ -749,8 +840,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/auth.service.ts:160</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="139"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:139</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -800,6 +891,72 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="setSessionToken"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
setSessionToken
|
||||
</b>
|
||||
<a href="#setSessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>setSessionToken(token)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="43"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:43</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>Optional</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>token</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>
|
||||
@@ -822,8 +979,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="38"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:38</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="47"
|
||||
class="link-to-prism">src/app/_services/auth.service.ts:47</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -903,28 +1060,28 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sessionLoginCount"></a>
|
||||
<a name="trustedUsers"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sessionLoginCount</b>
|
||||
<a href="#sessionLoginCount"><span class="icon ion-ios-link"></span></a>
|
||||
trustedUsers</b>
|
||||
<a href="#trustedUsers"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >Array<Staff></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>0</code>
|
||||
<i>Default value : </i><code>[]</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/auth.service.ts:16</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="18" class="link-to-prism">src/app/_services/auth.service.ts:18</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -935,23 +1092,63 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="sessionToken"></a>
|
||||
<a name="trustedUsersList"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
sessionToken</b>
|
||||
<a href="#sessionToken"><span class="icon ion-ios-link"></span></a>
|
||||
<span class="modifier">Private</span>
|
||||
trustedUsersList</b>
|
||||
<a href="#trustedUsersList"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >BehaviorSubject<Array<Staff>></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new BehaviorSubject<Array<Staff>>(
|
||||
this.trustedUsers
|
||||
)</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/auth.service.ts:15</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/app/_services/auth.service.ts:19</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="trustedUsersSubject"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
trustedUsersSubject</b>
|
||||
<a href="#trustedUsersSubject"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code><a href="../interfaces/Staff.html" target="_self" >Observable<Array<Staff>></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>this.trustedUsersList.asObservable()</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/app/_services/auth.service.ts:22</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -972,15 +1169,20 @@ import { LoggingService } from '@app/_services/logging.service';
|
||||
import { MutableKeyStore, MutablePgpKeyStore } from '@app/_pgp';
|
||||
import { ErrorDialogService } from '@app/_services/error-dialog.service';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { HttpError } from '@app/_helpers/global-error-handler';
|
||||
import { HttpError, rejectBody } from '@app/_helpers/global-error-handler';
|
||||
import { Staff } from '@app/_models';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class AuthService {
|
||||
sessionToken: any;
|
||||
sessionLoginCount: number = 0;
|
||||
mutableKeyStore: MutableKeyStore;
|
||||
trustedUsers: Array<Staff> = [];
|
||||
private trustedUsersList: BehaviorSubject<Array<Staff>> = new BehaviorSubject<Array<Staff>>(
|
||||
this.trustedUsers
|
||||
);
|
||||
trustedUsersSubject: Observable<Array<Staff>> = this.trustedUsersList.asObservable();
|
||||
|
||||
constructor(
|
||||
private httpClient: HttpClient,
|
||||
@@ -992,127 +1194,101 @@ export class AuthService {
|
||||
|
||||
async init(): Promise<void> {
|
||||
await this.mutableKeyStore.loadKeyring();
|
||||
// TODO setting these together should be atomic
|
||||
if (sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'))) {
|
||||
this.sessionToken = sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
}
|
||||
if (localStorage.getItem(btoa('CICADA_PRIVATE_KEY'))) {
|
||||
await this.mutableKeyStore.importPrivateKey(localStorage.getItem(btoa('CICADA_PRIVATE_KEY')));
|
||||
}
|
||||
}
|
||||
|
||||
getSessionToken(): string {
|
||||
return sessionStorage.getItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
}
|
||||
|
||||
setSessionToken(token): void {
|
||||
sessionStorage.setItem(btoa('CICADA_SESSION_TOKEN'), token);
|
||||
}
|
||||
|
||||
setState(s): void {
|
||||
document.getElementById('state').innerHTML = s;
|
||||
}
|
||||
|
||||
getWithToken(): void {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'text';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.setRequestHeader('Authorization', 'Bearer ' + this.sessionToken);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
xhr.setRequestHeader('x-cic-automerge', 'none');
|
||||
xhr.addEventListener('load', (e) => {
|
||||
if (xhr.status === 401) {
|
||||
throw new Error('login rejected');
|
||||
getWithToken(): Promise<boolean> {
|
||||
const headers = {
|
||||
Authorization: 'Bearer ' + this.getSessionToken,
|
||||
'Content-Type': 'application/json;charset=utf-8',
|
||||
'x-cic-automerge': 'none',
|
||||
};
|
||||
const options = {
|
||||
headers,
|
||||
};
|
||||
return fetch(environment.cicMetaUrl, options).then((response) => {
|
||||
if (!response.ok) {
|
||||
this.loggingService.sendErrorLevelMessage('failed to get with auth token.', this, {
|
||||
error: '',
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
this.sessionLoginCount++;
|
||||
this.setState('Click button to log in');
|
||||
return;
|
||||
return true;
|
||||
});
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
// TODO rename to send signed challenge and set session. Also separate these responsibilities
|
||||
sendResponse(hobaResponseEncoded: any): Promise<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'text';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.setRequestHeader('Authorization', 'HOBA ' + hobaResponseEncoded);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
xhr.setRequestHeader('x-cic-automerge', 'none');
|
||||
xhr.addEventListener('load', (e) => {
|
||||
if (xhr.status !== 200) {
|
||||
const error = new HttpError(xhr.statusText, xhr.status);
|
||||
return reject(error);
|
||||
}
|
||||
this.sessionToken = xhr.getResponseHeader('Token');
|
||||
sessionStorage.setItem(btoa('CICADA_SESSION_TOKEN'), this.sessionToken);
|
||||
this.sessionLoginCount++;
|
||||
this.setState('Click button to log in');
|
||||
return resolve(true);
|
||||
});
|
||||
xhr.send();
|
||||
});
|
||||
}
|
||||
|
||||
getChallenge(): void {
|
||||
const xhr: XMLHttpRequest = new XMLHttpRequest();
|
||||
xhr.responseType = 'arraybuffer';
|
||||
xhr.open('GET', environment.cicMetaUrl + window.location.search.substring(1));
|
||||
xhr.onload = async (e) => {
|
||||
if (xhr.status === 401) {
|
||||
const authHeader = xhr.getResponseHeader('WWW-Authenticate');
|
||||
const o = hobaParseChallengeHeader(authHeader);
|
||||
this.loginResponse(o);
|
||||
}
|
||||
sendSignedChallenge(hobaResponseEncoded: any): Promise<any> {
|
||||
const headers = {
|
||||
Authorization: 'HOBA ' + hobaResponseEncoded,
|
||||
'Content-Type': 'application/json;charset=utf-8',
|
||||
'x-cic-automerge': 'none',
|
||||
};
|
||||
xhr.send();
|
||||
const options = {
|
||||
headers,
|
||||
};
|
||||
return fetch(environment.cicMetaUrl, options);
|
||||
}
|
||||
|
||||
login(): boolean {
|
||||
if (this.sessionToken !== undefined) {
|
||||
try {
|
||||
this.getWithToken();
|
||||
return true;
|
||||
} catch (e) {
|
||||
this.loggingService.sendErrorLevelMessage('Login token failed', this, { error: e });
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
this.getChallenge();
|
||||
} catch (e) {
|
||||
this.loggingService.sendErrorLevelMessage('Login challenge failed', this, { error: e });
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
async loginResponse(o: { challenge: string; realm: any }): Promise<any> {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const r = await signChallenge(
|
||||
o.challenge,
|
||||
o.realm,
|
||||
environment.cicMetaUrl,
|
||||
this.mutableKeyStore
|
||||
);
|
||||
const sessionTokenResult: boolean = await this.sendResponse(r);
|
||||
} catch (error) {
|
||||
if (error instanceof HttpError) {
|
||||
if (error.status === 403) {
|
||||
this.errorDialogService.openDialog({
|
||||
message: 'You are not authorized to use this system',
|
||||
});
|
||||
}
|
||||
if (error.status === 401) {
|
||||
this.errorDialogService.openDialog({
|
||||
message:
|
||||
'Unable to authenticate with the service. ' +
|
||||
'Please speak with the staff at Grassroots ' +
|
||||
'Economics for requesting access ' +
|
||||
'staff@grassrootseconomics.net.',
|
||||
});
|
||||
}
|
||||
}
|
||||
// TODO define this error
|
||||
this.errorDialogService.openDialog({ message: 'Incorrect key passphrase.' });
|
||||
resolve(false);
|
||||
getChallenge(): Promise<any> {
|
||||
return fetch(environment.cicMetaUrl).then((response) => {
|
||||
if (response.status === 401) {
|
||||
const authHeader: string = response.headers.get('WWW-Authenticate');
|
||||
return hobaParseChallengeHeader(authHeader);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async login(): Promise<boolean> {
|
||||
if (this.getSessionToken()) {
|
||||
sessionStorage.removeItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
} else {
|
||||
const o = await this.getChallenge();
|
||||
|
||||
const r = await signChallenge(
|
||||
o.challenge,
|
||||
o.realm,
|
||||
environment.cicMetaUrl,
|
||||
this.mutableKeyStore
|
||||
);
|
||||
|
||||
const tokenResponse = await this.sendSignedChallenge(r).then((response) => {
|
||||
const token = response.headers.get('Token');
|
||||
if (token) {
|
||||
return token;
|
||||
}
|
||||
if (response.status === 401) {
|
||||
throw new HttpError('You are not authorized to use this system', response.status);
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new HttpError('Unknown error from authentication server', response.status);
|
||||
}
|
||||
});
|
||||
|
||||
if (tokenResponse) {
|
||||
this.setSessionToken(tokenResponse);
|
||||
this.setState('Click button to log in');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
loginView(): void {
|
||||
document.getElementById('one').style.display = 'none';
|
||||
document.getElementById('two').style.display = 'block';
|
||||
@@ -1153,29 +1329,47 @@ export class AuthService {
|
||||
|
||||
logout(): void {
|
||||
sessionStorage.removeItem(btoa('CICADA_SESSION_TOKEN'));
|
||||
this.sessionToken = undefined;
|
||||
localStorage.removeItem(btoa('CICADA_PRIVATE_KEY'));
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
getTrustedUsers(): any {
|
||||
const trustedUsers: Array<any> = [];
|
||||
this.mutableKeyStore.getPublicKeys().forEach((key) => trustedUsers.push(key.users[0].userId));
|
||||
return trustedUsers;
|
||||
addTrustedUser(user: Staff): void {
|
||||
const savedIndex = this.trustedUsers.findIndex((staff) => staff.userid === user.userid);
|
||||
if (savedIndex === 0) {
|
||||
return;
|
||||
}
|
||||
if (savedIndex > 0) {
|
||||
this.trustedUsers.splice(savedIndex, 1);
|
||||
}
|
||||
this.trustedUsers.unshift(user);
|
||||
this.trustedUsersList.next(this.trustedUsers);
|
||||
}
|
||||
|
||||
getTrustedUsers(): void {
|
||||
this.mutableKeyStore.getPublicKeys().forEach((key) => {
|
||||
this.addTrustedUser(key.users[0].userId);
|
||||
});
|
||||
}
|
||||
|
||||
async getPublicKeys(): Promise<any> {
|
||||
return await fetch(environment.publicKeysUrl).then((res) => {
|
||||
if (!res.ok) {
|
||||
// TODO does angular recommend an error interface?
|
||||
throw Error(`${res.statusText} - ${res.status}`);
|
||||
}
|
||||
return res.text();
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(environment.publicKeysUrl).then((res) => {
|
||||
if (!res.ok) {
|
||||
// TODO does angular recommend an error interface?
|
||||
return reject(rejectBody(res));
|
||||
}
|
||||
return resolve(res.text());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getPrivateKey(): any {
|
||||
return this.mutableKeyStore.getPrivateKey();
|
||||
}
|
||||
|
||||
getPrivateKeyInfo(): any {
|
||||
return this.getPrivateKey().users[0].userId;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
@@ -93,16 +93,18 @@
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#blockSync">blockSync</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#fetcher">fetcher</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#newConversionEvent">newConversionEvent</a>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#init">init</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#newTransferEvent">newTransferEvent</a>
|
||||
<a href="#newEvent">newEvent</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#readyStateProcessor">readyStateProcessor</a>
|
||||
@@ -129,12 +131,12 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>constructor(transactionService: <a href="../injectables/TransactionService.html">TransactionService</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</a>, registryService: <a href="../injectables/RegistryService.html">RegistryService</a>)</code>
|
||||
<code>constructor(transactionService: <a href="../injectables/TransactionService.html">TransactionService</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</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/block-sync.service.ts:15</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/_services/block-sync.service.ts:16</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -175,18 +177,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>
|
||||
@@ -208,6 +198,7 @@
|
||||
<a name="blockSync"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Async</span>
|
||||
blockSync
|
||||
</b>
|
||||
<a href="#blockSync"><span class="icon ion-ios-link"></span></a>
|
||||
@@ -216,15 +207,16 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>blockSync(address: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, offset: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, limit: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>)</code>
|
||||
<span class="modifier-icon icon ion-ios-reset"></span>
|
||||
<code>blockSync(address: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, offset: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, limit: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="23"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:23</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="27"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:27</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -295,7 +287,7 @@
|
||||
<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>
|
||||
<b>Returns : </b> <code>Promise<void></code>
|
||||
|
||||
</div>
|
||||
<div class="io-description">
|
||||
@@ -327,8 +319,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="118"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:118</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="109"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:109</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -391,26 +383,67 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="newConversionEvent"></a>
|
||||
<a name="init"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
newConversionEvent
|
||||
<span class="modifier">Async</span>
|
||||
init
|
||||
</b>
|
||||
<a href="#newConversionEvent"><span class="icon ion-ios-link"></span></a>
|
||||
<a href="#init"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>newConversionEvent(tx: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
<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="89"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:89</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="23"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:23</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<void></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="newEvent"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
newEvent
|
||||
</b>
|
||||
<a href="#newEvent"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>newEvent(tx: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, eventType: <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="80"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:80</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -441,68 +474,10 @@
|
||||
|
||||
|
||||
</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" >any</a></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="newTransferEvent"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
newTransferEvent
|
||||
</b>
|
||||
<a href="#newTransferEvent"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>newTransferEvent(tx: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="81"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:81</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>tx</td>
|
||||
<td>eventType</td>
|
||||
<td>
|
||||
<code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@@ -549,8 +524,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="46"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:46</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="45"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:45</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -669,8 +644,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="97"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:97</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="88"
|
||||
class="link-to-prism">src/app/_services/block-sync.service.ts:88</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -808,7 +783,7 @@
|
||||
</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/block-sync.service.ts:15</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/_services/block-sync.service.ts:16</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -840,7 +815,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="14" class="link-to-prism">src/app/_services/block-sync.service.ts:14</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/block-sync.service.ts:15</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -855,12 +830,13 @@
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from '@angular/core';
|
||||
import { Settings } from '@app/_models';
|
||||
import { TransactionHelper } from 'cic-client';
|
||||
import { TransactionHelper } from '@cicnet/cic-client';
|
||||
import { first } from 'rxjs/operators';
|
||||
import { TransactionService } from '@app/_services/transaction.service';
|
||||
import { environment } from '@src/environments/environment';
|
||||
import { LoggingService } from '@app/_services/logging.service';
|
||||
import { RegistryService } from '@app/_services/registry.service';
|
||||
import { Web3Service } from '@app/_services/web3.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
@@ -871,31 +847,29 @@ export class BlockSyncService {
|
||||
|
||||
constructor(
|
||||
private transactionService: TransactionService,
|
||||
private loggingService: LoggingService,
|
||||
private registryService: RegistryService
|
||||
private loggingService: LoggingService
|
||||
) {}
|
||||
|
||||
blockSync(address: string = null, offset: number = 0, limit: number = 100): void {
|
||||
async init(): Promise<void> {
|
||||
await this.transactionService.init();
|
||||
}
|
||||
|
||||
async blockSync(address: string = null, offset: number = 0, limit: number = 100): Promise<void> {
|
||||
this.transactionService.resetTransactionsList();
|
||||
const settings: Settings = new Settings(this.scan);
|
||||
const readyStateElements: { network: number } = { network: 2 };
|
||||
settings.w3.provider = environment.web3Provider;
|
||||
settings.w3.engine = this.registryService.getWeb3();
|
||||
settings.registry = this.registryService.getRegistry();
|
||||
settings.w3.engine = Web3Service.getInstance();
|
||||
settings.registry = await RegistryService.getRegistry();
|
||||
settings.txHelper = new TransactionHelper(settings.w3.engine, settings.registry);
|
||||
|
||||
settings.txHelper.ontransfer = async (transaction: any): Promise<void> => {
|
||||
window.dispatchEvent(this.newTransferEvent(transaction));
|
||||
window.dispatchEvent(this.newEvent(transaction, 'cic_transfer'));
|
||||
};
|
||||
settings.txHelper.onconversion = async (transaction: any): Promise<any> => {
|
||||
window.dispatchEvent(this.newConversionEvent(transaction));
|
||||
window.dispatchEvent(this.newEvent(transaction, 'cic_convert'));
|
||||
};
|
||||
settings.registry.onload = (addressReturned: number): void => {
|
||||
this.loggingService.sendInfoLevelMessage(`Loaded network contracts ${addressReturned}`);
|
||||
this.readyStateProcessor(settings, readyStateElements.network, address, offset, limit);
|
||||
};
|
||||
|
||||
settings.registry.load();
|
||||
this.readyStateProcessor(settings, readyStateElements.network, address, offset, limit);
|
||||
}
|
||||
|
||||
readyStateProcessor(
|
||||
@@ -933,16 +907,8 @@ export class BlockSyncService {
|
||||
}
|
||||
}
|
||||
|
||||
newTransferEvent(tx: any): any {
|
||||
return new CustomEvent('cic_transfer', {
|
||||
detail: {
|
||||
tx,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
newConversionEvent(tx: any): any {
|
||||
return new CustomEvent('cic_convert', {
|
||||
newEvent(tx: any, eventType: string): any {
|
||||
return new CustomEvent(eventType, {
|
||||
detail: {
|
||||
tx,
|
||||
},
|
||||
|
||||
@@ -635,6 +635,13 @@ export class GlobalErrorHandler extends ErrorHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function rejectBody(error): { status: any; statusText: any } {
|
||||
return {
|
||||
status: error.status,
|
||||
statusText: error.statusText,
|
||||
};
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -75,14 +75,14 @@
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<span class="modifier">Static</span>
|
||||
<a href="#fileGetter">fileGetter</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Private</span>
|
||||
<span class="modifier">Static</span>
|
||||
<a href="#registry">registry</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#web3">web3</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -96,11 +96,10 @@
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<span class="modifier">Static</span>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#getRegistry">getRegistry</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getWeb3">getWeb3</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -124,7 +123,7 @@
|
||||
</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/registry.service.ts:19</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/_services/registry.service.ts:12</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -144,6 +143,8 @@
|
||||
<a name="getRegistry"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Static</span>
|
||||
<span class="modifier">Async</span>
|
||||
getRegistry
|
||||
</b>
|
||||
<a href="#getRegistry"><span class="icon ion-ios-link"></span></a>
|
||||
@@ -152,15 +153,16 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getRegistry()</code>
|
||||
<span class="modifier-icon icon ion-ios-reset"></span>
|
||||
<code>getRegistry()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="26"
|
||||
class="link-to-prism">src/app/_services/registry.service.ts:26</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="16"
|
||||
class="link-to-prism">src/app/_services/registry.service.ts:16</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -169,46 +171,7 @@
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getWeb3"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
getWeb3
|
||||
</b>
|
||||
<a href="#getWeb3"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getWeb3()</code>
|
||||
</td>
|
||||
</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/registry.service.ts:30</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
|
||||
<b>Returns : </b> <code>Promise<CICRegistry></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -228,6 +191,7 @@
|
||||
<a name="fileGetter"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Static</span>
|
||||
fileGetter</b>
|
||||
<a href="#fileGetter"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
@@ -246,7 +210,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/_services/registry.service.ts:12</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/_services/registry.service.ts:11</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -260,6 +224,8 @@
|
||||
<a name="registry"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Private</span>
|
||||
<span class="modifier">Static</span>
|
||||
registry</b>
|
||||
<a href="#registry"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
@@ -271,52 +237,9 @@
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new CICRegistry(
|
||||
this.web3,
|
||||
environment.registryAddress,
|
||||
'Registry',
|
||||
this.fileGetter,
|
||||
['../../assets/js/block-sync/data']
|
||||
)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">src/app/_services/registry.service.ts:13</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="web3"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
web3</b>
|
||||
<a href="#web3"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code>Web3</code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new Web3(environment.web3Provider)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/_services/registry.service.ts:11</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/_services/registry.service.ts:12</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -330,36 +253,33 @@
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from '@angular/core';
|
||||
import Web3 from 'web3';
|
||||
import { environment } from '@src/environments/environment';
|
||||
import { CICRegistry, FileGetter } from 'cic-client';
|
||||
import { CICRegistry, FileGetter } from '@cicnet/cic-client';
|
||||
import { HttpGetter } from '@app/_helpers';
|
||||
import { Web3Service } from '@app/_services/web3.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class RegistryService {
|
||||
web3: Web3 = new Web3(environment.web3Provider);
|
||||
fileGetter: FileGetter = new HttpGetter();
|
||||
registry: CICRegistry = new CICRegistry(
|
||||
this.web3,
|
||||
environment.registryAddress,
|
||||
'Registry',
|
||||
this.fileGetter,
|
||||
['../../assets/js/block-sync/data']
|
||||
);
|
||||
static fileGetter: FileGetter = new HttpGetter();
|
||||
private static registry: CICRegistry;
|
||||
|
||||
constructor() {
|
||||
this.registry.declaratorHelper.addTrust(environment.trustedDeclaratorAddress);
|
||||
this.registry.load();
|
||||
}
|
||||
constructor() {}
|
||||
|
||||
getRegistry(): any {
|
||||
return this.registry;
|
||||
}
|
||||
|
||||
getWeb3(): any {
|
||||
return this.web3;
|
||||
public static async getRegistry(): Promise<CICRegistry> {
|
||||
if (!RegistryService.registry) {
|
||||
RegistryService.registry = new CICRegistry(
|
||||
Web3Service.getInstance(),
|
||||
environment.registryAddress,
|
||||
'Registry',
|
||||
RegistryService.fileGetter,
|
||||
['../../assets/js/block-sync/data']
|
||||
);
|
||||
RegistryService.registry.declaratorHelper.addTrust(environment.trustedDeclaratorAddress);
|
||||
await RegistryService.registry.load();
|
||||
}
|
||||
return RegistryService.registry;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
@@ -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<number></code>
|
||||
<b>Returns : </b> <code>Promise<Promise<number>></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<Token></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<any></code>
|
||||
<b>Returns : </b> <code><a href="../interfaces/Token.html" target="_self" >Promise<Observable<Token>></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<string></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<Array<Promise<string>>></code>
|
||||
<b>Returns : </b> <code>Promise<void></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<string></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<void></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<number></code>
|
||||
<i>Type : </i> <code>BehaviorSubject<any></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new EventEmitter<number>()</code>
|
||||
<i>Default value : </i><code>new BehaviorSubject<any>(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<Token></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<Array<Token>></a></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>new BehaviorSubject<Array<Token>>(
|
||||
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<Array<Token>></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 '@angular/core';
|
||||
import { environment } from '@src/environments/environment';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
import { CICRegistry } from 'cic-client';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from '@angular/core';
|
||||
import { CICRegistry } from '@cicnet/cic-client';
|
||||
import { TokenRegistry } from '@app/_eth';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { RegistryService } from '@app/_services/registry.service';
|
||||
import { Token } from '@app/_models';
|
||||
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
@@ -479,31 +863,77 @@ import { RegistryService } from '@app/_services/registry.service';
|
||||
export class TokenService {
|
||||
registry: CICRegistry;
|
||||
tokenRegistry: TokenRegistry;
|
||||
LoadEvent: EventEmitter<number> = new EventEmitter<number>();
|
||||
tokens: Array<Token> = [];
|
||||
private tokensList: BehaviorSubject<Array<Token>> = new BehaviorSubject<Array<Token>>(
|
||||
this.tokens
|
||||
);
|
||||
tokensSubject: Observable<Array<Token>> = this.tokensList.asObservable();
|
||||
load: BehaviorSubject<any> = new BehaviorSubject<any>(false);
|
||||
|
||||
constructor(private httpClient: HttpClient, private registryService: RegistryService) {
|
||||
this.registry = registryService.getRegistry();
|
||||
this.registry.load();
|
||||
this.registry.onload = async (address: string): Promise<void> => {
|
||||
this.tokenRegistry = new TokenRegistry(
|
||||
await this.registry.getContractAddressByName('TokenRegistry')
|
||||
);
|
||||
this.LoadEvent.next(Date.now());
|
||||
};
|
||||
constructor(private httpClient: HttpClient) {}
|
||||
|
||||
async init(): Promise<void> {
|
||||
this.registry = await RegistryService.getRegistry();
|
||||
this.tokenRegistry = new TokenRegistry(
|
||||
await this.registry.getContractAddressByName('TokenRegistry')
|
||||
);
|
||||
this.load.next(true);
|
||||
}
|
||||
|
||||
async getTokens(): Promise<Array<Promise<string>>> {
|
||||
addToken(token: Token): void {
|
||||
const savedIndex = this.tokens.findIndex((tk) => tk.address === token.address);
|
||||
if (savedIndex === 0) {
|
||||
return;
|
||||
}
|
||||
if (savedIndex > 0) {
|
||||
this.tokens.splice(savedIndex, 1);
|
||||
}
|
||||
this.tokens.unshift(token);
|
||||
this.tokensList.next(this.tokens);
|
||||
}
|
||||
|
||||
async getTokens(): Promise<void> {
|
||||
const count: number = await this.tokenRegistry.totalTokens();
|
||||
return Array.from({ length: count }, async (v, i) => await this.tokenRegistry.entry(i));
|
||||
for (let i = 0; i < count; i++) {
|
||||
const token: Token = await this.getTokenByAddress(await this.tokenRegistry.entry(i));
|
||||
this.addToken(token);
|
||||
}
|
||||
}
|
||||
|
||||
getTokenBySymbol(symbol: string): Observable<any> {
|
||||
return this.httpClient.get(`${environment.cicCacheUrl}/tokens/${symbol}`);
|
||||
async getTokenByAddress(address: string): Promise<Token> {
|
||||
const token: any = {};
|
||||
const tokenContract = await this.registry.addToken(address);
|
||||
token.address = address;
|
||||
token.name = await tokenContract.methods.name().call();
|
||||
token.symbol = await tokenContract.methods.symbol().call();
|
||||
token.supply = await tokenContract.methods.totalSupply().call();
|
||||
token.decimals = await tokenContract.methods.decimals().call();
|
||||
return token;
|
||||
}
|
||||
|
||||
async getTokenBalance(address: string): Promise<number> {
|
||||
const sarafuToken = await this.registry.addToken(await this.tokenRegistry.entry(0));
|
||||
return await sarafuToken.methods.balanceOf(address).call();
|
||||
async getTokenBySymbol(symbol: string): Promise<Observable<Token>> {
|
||||
const tokenSubject: Subject<Token> = new Subject<Token>();
|
||||
await this.getTokens();
|
||||
this.tokensSubject.subscribe((tokens) => {
|
||||
const queriedToken = tokens.find((token) => token.symbol === symbol);
|
||||
tokenSubject.next(queriedToken);
|
||||
});
|
||||
return tokenSubject.asObservable();
|
||||
}
|
||||
|
||||
async getTokenBalance(address: string): Promise<(address: string) => Promise<number>> {
|
||||
const token = await this.registry.addToken(await this.tokenRegistry.entry(0));
|
||||
return await token.methods.balanceOf(address).call();
|
||||
}
|
||||
|
||||
async getTokenName(): Promise<string> {
|
||||
const token = await this.registry.addToken(await this.tokenRegistry.entry(0));
|
||||
return await token.methods.name().call();
|
||||
}
|
||||
|
||||
async getTokenSymbol(): Promise<string> {
|
||||
const token = await this.registry.addToken(await this.tokenRegistry.entry(0));
|
||||
return await token.methods.symbol().call();
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
@@ -117,6 +117,10 @@
|
||||
<li>
|
||||
<a href="#getAllTransactions">getAllTransactions</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#init">init</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#resetTransactionsList">resetTransactionsList</a>
|
||||
</li>
|
||||
@@ -150,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>, authService: <a href="../injectables/AuthService.html">AuthService</a>, userService: <a href="../injectables/UserService.html">UserService</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</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>, authService: <a href="../injectables/AuthService.html">AuthService</a>, userService: <a href="../injectables/UserService.html">UserService</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/_services/transaction.service.ts:31</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/app/_services/transaction.service.ts:32</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -220,18 +224,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>
|
||||
@@ -268,8 +260,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="111"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:111</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="118"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:118</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -342,15 +334,15 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>getAccountInfo(account: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
|
||||
<code>getAccountInfo(account: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, cacheSize: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="124"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:124</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="138"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:138</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -366,6 +358,7 @@
|
||||
<td>Name</td>
|
||||
<td>Type</td>
|
||||
<td>Optional</td>
|
||||
<td>Default value</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -379,6 +372,23 @@
|
||||
No
|
||||
</td>
|
||||
|
||||
<td>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cacheSize</td>
|
||||
<td>
|
||||
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<code>100</code>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -419,8 +429,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="49"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:49</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="53"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:53</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -513,8 +523,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="45"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:45</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="49"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:49</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -573,6 +583,47 @@
|
||||
</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="43"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:43</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<void></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -595,8 +646,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/transaction.service.ts:119</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="133"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:133</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -636,8 +687,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="87"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:87</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="93"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:93</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -713,8 +764,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="53"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:53</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="57"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:57</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -796,8 +847,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="130"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:130</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="145"
|
||||
class="link-to-prism">src/app/_services/transaction.service.ts:145</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -906,7 +957,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/_services/transaction.service.ts:31</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/app/_services/transaction.service.ts:32</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -933,7 +984,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="27" class="link-to-prism">src/app/_services/transaction.service.ts:27</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/_services/transaction.service.ts:28</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -965,7 +1016,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="26" class="link-to-prism">src/app/_services/transaction.service.ts:26</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="27" class="link-to-prism">src/app/_services/transaction.service.ts:27</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -991,7 +1042,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/_services/transaction.service.ts:28</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="29" class="link-to-prism">src/app/_services/transaction.service.ts:29</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1018,7 +1069,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="29" class="link-to-prism">src/app/_services/transaction.service.ts:29</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="30" class="link-to-prism">src/app/_services/transaction.service.ts:30</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1045,7 +1096,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/transaction.service.ts:30</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/_services/transaction.service.ts:31</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1074,9 +1125,10 @@ import { AuthService } from '@app/_services/auth.service';
|
||||
import { defaultAccount } from '@app/_models';
|
||||
import { LoggingService } from '@app/_services/logging.service';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { CICRegistry } from 'cic-client';
|
||||
import { CICRegistry } from '@cicnet/cic-client';
|
||||
import { RegistryService } from '@app/_services/registry.service';
|
||||
import Web3 from 'web3';
|
||||
import { Web3Service } from '@app/_services/web3.service';
|
||||
const vCard = require('vcard-parser');
|
||||
|
||||
@Injectable({
|
||||
@@ -1094,12 +1146,15 @@ export class TransactionService {
|
||||
private httpClient: HttpClient,
|
||||
private authService: AuthService,
|
||||
private userService: UserService,
|
||||
private loggingService: LoggingService,
|
||||
private registryService: RegistryService
|
||||
private loggingService: LoggingService
|
||||
) {
|
||||
this.web3 = this.registryService.getWeb3();
|
||||
this.registry = registryService.getRegistry();
|
||||
this.registry.load();
|
||||
this.web3 = Web3Service.getInstance();
|
||||
}
|
||||
|
||||
async init(): Promise<void> {
|
||||
await this.authService.init();
|
||||
await this.userService.init();
|
||||
this.registry = await RegistryService.getRegistry();
|
||||
}
|
||||
|
||||
getAllTransactions(offset: number, limit: number): Observable<any> {
|
||||
@@ -1107,7 +1162,7 @@ export class TransactionService {
|
||||
}
|
||||
|
||||
getAddressTransactions(address: string, offset: number, limit: number): Observable<any> {
|
||||
return this.httpClient.get(`${environment.cicCacheUrl}/tx/${address}/${offset}/${limit}`);
|
||||
return this.httpClient.get(`${environment.cicCacheUrl}/tx/user/${address}/${offset}/${limit}`);
|
||||
}
|
||||
|
||||
async setTransaction(transaction, cacheSize: number): Promise<void> {
|
||||
@@ -1122,10 +1177,11 @@ export class TransactionService {
|
||||
.pipe(first())
|
||||
.subscribe(
|
||||
(res) => {
|
||||
transaction.sender = this.getAccountInfo(res.body);
|
||||
transaction.sender = this.getAccountInfo(res, cacheSize);
|
||||
},
|
||||
(error) => {
|
||||
transaction.sender = defaultAccount;
|
||||
this.userService.addAccount(defaultAccount, cacheSize);
|
||||
}
|
||||
);
|
||||
this.userService
|
||||
@@ -1133,10 +1189,11 @@ export class TransactionService {
|
||||
.pipe(first())
|
||||
.subscribe(
|
||||
(res) => {
|
||||
transaction.recipient = this.getAccountInfo(res.body);
|
||||
transaction.recipient = this.getAccountInfo(res, cacheSize);
|
||||
},
|
||||
(error) => {
|
||||
transaction.recipient = defaultAccount;
|
||||
this.userService.addAccount(defaultAccount, cacheSize);
|
||||
}
|
||||
);
|
||||
} finally {
|
||||
@@ -1157,10 +1214,11 @@ export class TransactionService {
|
||||
.pipe(first())
|
||||
.subscribe(
|
||||
(res) => {
|
||||
conversion.sender = conversion.recipient = this.getAccountInfo(res.body);
|
||||
conversion.sender = conversion.recipient = this.getAccountInfo(res);
|
||||
},
|
||||
(error) => {
|
||||
conversion.sender = conversion.recipient = defaultAccount;
|
||||
this.userService.addAccount(defaultAccount, cacheSize);
|
||||
}
|
||||
);
|
||||
} finally {
|
||||
@@ -1169,9 +1227,16 @@ export class TransactionService {
|
||||
}
|
||||
|
||||
addTransaction(transaction, cacheSize: number): void {
|
||||
const savedIndex = this.transactions.findIndex((tx) => tx.tx.txHash === transaction.tx.txHash);
|
||||
if (savedIndex === 0) {
|
||||
return;
|
||||
}
|
||||
if (savedIndex > 0) {
|
||||
this.transactions.splice(savedIndex, 1);
|
||||
}
|
||||
this.transactions.unshift(transaction);
|
||||
if (this.transactions.length > cacheSize) {
|
||||
this.transactions.length = cacheSize;
|
||||
this.transactions.length = Math.min(this.transactions.length, cacheSize);
|
||||
}
|
||||
this.transactionList.next(this.transactions);
|
||||
}
|
||||
@@ -1181,9 +1246,10 @@ export class TransactionService {
|
||||
this.transactionList.next(this.transactions);
|
||||
}
|
||||
|
||||
getAccountInfo(account: string): any {
|
||||
getAccountInfo(account: string, cacheSize: number = 100): any {
|
||||
const accountInfo = Envelope.fromJSON(JSON.stringify(account)).unwrap().m.data;
|
||||
accountInfo.vcard = vCard.parse(atob(accountInfo.vcard));
|
||||
this.userService.addAccount(accountInfo, cacheSize);
|
||||
return accountInfo;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,6 +118,9 @@
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<a href="#addAccount">addAccount</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#approveAction">approveAction</a>
|
||||
</li>
|
||||
@@ -163,6 +166,10 @@
|
||||
<li>
|
||||
<a href="#getTransactionTypes">getTransactionTypes</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#init">init</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="modifier">Async</span>
|
||||
<a href="#loadAccounts">loadAccounts</a>
|
||||
@@ -204,7 +211,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>constructor(httpClient: <a href="https://angular.io/api/common/http/HttpClient" target="_blank">HttpClient</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</a>, tokenService: <a href="../injectables/TokenService.html">TokenService</a>, registryService: <a href="../injectables/RegistryService.html">RegistryService</a>, authService: <a href="../injectables/AuthService.html">AuthService</a>)</code>
|
||||
<code>constructor(httpClient: <a href="https://angular.io/api/common/http/HttpClient" target="_blank">HttpClient</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</a>, tokenService: <a href="../injectables/TokenService.html">TokenService</a>, authService: <a href="../injectables/AuthService.html">AuthService</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -261,18 +268,6 @@
|
||||
No
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>registryService</td>
|
||||
|
||||
<td>
|
||||
<code><a href="../injectables/RegistryService.html" target="_self" >RegistryService</a></code>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>authService</td>
|
||||
@@ -300,6 +295,88 @@
|
||||
<h3 id="methods">
|
||||
Methods
|
||||
</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="addAccount"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
addAccount
|
||||
</b>
|
||||
<a href="#addAccount"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>addAccount(account: <a href="../interfaces/AccountDetails.html">AccountDetails</a>, cacheSize: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>)</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="266"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:266</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>account</td>
|
||||
<td>
|
||||
<code><a href="../interfaces/AccountDetails.html" target="_self" >AccountDetails</a></code>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
No
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cacheSize</td>
|
||||
<td>
|
||||
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</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>
|
||||
@@ -586,8 +663,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="195"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:195</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="193"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:193</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -676,8 +753,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="221"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:221</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="219"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:219</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -904,8 +981,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="256"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:256</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="254"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:254</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1052,8 +1129,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="248"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:248</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="246"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:246</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1091,8 +1168,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="252"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:252</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="250"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:250</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1161,8 +1238,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="264"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:264</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="262"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:262</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1282,8 +1359,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="260"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:260</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="258"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:258</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1299,6 +1376,47 @@
|
||||
</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="45"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:45</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Promise<void></code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -1412,8 +1530,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="239"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:239</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="237"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:237</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1591,8 +1709,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="244"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:244</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="242"
|
||||
class="link-to-prism">src/app/_services/user.service.ts:242</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -2150,7 +2268,7 @@ import { TokenService } from '@app/_services/token.service';
|
||||
import { AccountIndex } from '@app/_eth';
|
||||
import { MutableKeyStore, PGPSigner, Signer } from '@app/_pgp';
|
||||
import { RegistryService } from '@app/_services/registry.service';
|
||||
import { CICRegistry } from 'cic-client';
|
||||
import { CICRegistry } from '@cicnet/cic-client';
|
||||
import { AuthService } from '@app/_services/auth.service';
|
||||
import { personValidation, vcardValidation } from '@app/_helpers';
|
||||
import { add0x } from '@src/assets/js/ethtx/dist/hex';
|
||||
@@ -2179,20 +2297,20 @@ export class UserService {
|
||||
private httpClient: HttpClient,
|
||||
private loggingService: LoggingService,
|
||||
private tokenService: TokenService,
|
||||
private registryService: RegistryService,
|
||||
private authService: AuthService
|
||||
) {
|
||||
this.authService.init().then(() => {
|
||||
this.keystore = authService.mutableKeyStore;
|
||||
this.signer = new PGPSigner(this.keystore);
|
||||
});
|
||||
this.registry = registryService.getRegistry();
|
||||
this.registry.load();
|
||||
) {}
|
||||
|
||||
async init(): Promise<void> {
|
||||
await this.authService.init();
|
||||
await this.tokenService.init();
|
||||
this.keystore = this.authService.mutableKeyStore;
|
||||
this.signer = new PGPSigner(this.keystore);
|
||||
this.registry = await RegistryService.getRegistry();
|
||||
}
|
||||
|
||||
resetPin(phone: string): Observable<any> {
|
||||
const params: HttpParams = new HttpParams().set('phoneNumber', phone);
|
||||
return this.httpClient.get(`${environment.cicUssdUrl}/pin`, { params });
|
||||
return this.httpClient.put(`${environment.cicUssdUrl}/pin`, { params });
|
||||
}
|
||||
|
||||
getAccountStatus(phone: string): Observable<any> {
|
||||
@@ -2323,9 +2441,7 @@ export class UserService {
|
||||
'AccountRegistry'
|
||||
);
|
||||
const accountIndexQuery = new AccountIndex(accountIndexAddress);
|
||||
const accountAddresses: Array<string> = await accountIndexQuery.last(
|
||||
await accountIndexQuery.totalAccounts()
|
||||
);
|
||||
const accountAddresses: Array<string> = await accountIndexQuery.last(limit);
|
||||
this.loggingService.sendInfoLevelMessage(accountAddresses);
|
||||
for (const accountAddress of accountAddresses.slice(offset, offset + limit)) {
|
||||
await this.getAccountByAddress(accountAddress, limit);
|
||||
@@ -2343,16 +2459,16 @@ export class UserService {
|
||||
const account: Syncable = Envelope.fromJSON(JSON.stringify(res)).unwrap();
|
||||
const accountInfo = account.m.data;
|
||||
await personValidation(accountInfo);
|
||||
accountInfo.balance = await this.tokenService.getTokenBalance(
|
||||
accountInfo.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0]
|
||||
);
|
||||
this.tokenService.load.subscribe(async (status: boolean) => {
|
||||
if (status) {
|
||||
accountInfo.balance = await this.tokenService.getTokenBalance(
|
||||
accountInfo.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0]
|
||||
);
|
||||
}
|
||||
});
|
||||
accountInfo.vcard = vCard.parse(atob(accountInfo.vcard));
|
||||
await vcardValidation(accountInfo.vcard);
|
||||
this.accounts.unshift(accountInfo);
|
||||
if (this.accounts.length > limit) {
|
||||
this.accounts.length = limit;
|
||||
}
|
||||
this.accountsList.next(this.accounts);
|
||||
this.addAccount(accountInfo, limit);
|
||||
accountSubject.next(accountInfo);
|
||||
});
|
||||
return accountSubject.asObservable();
|
||||
@@ -2404,6 +2520,25 @@ export class UserService {
|
||||
getGenders(): Observable<any> {
|
||||
return this.httpClient.get(`${environment.cicMetaUrl}/genders`);
|
||||
}
|
||||
|
||||
addAccount(account: AccountDetails, cacheSize: number): void {
|
||||
const savedIndex = this.accounts.findIndex(
|
||||
(acc) =>
|
||||
acc.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0] ===
|
||||
account.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0]
|
||||
);
|
||||
if (savedIndex === 0) {
|
||||
return;
|
||||
}
|
||||
if (savedIndex > 0) {
|
||||
this.accounts.splice(savedIndex, 1);
|
||||
}
|
||||
this.accounts.unshift(account);
|
||||
if (this.accounts.length > cacheSize) {
|
||||
this.accounts.length = Math.min(this.accounts.length, cacheSize);
|
||||
}
|
||||
this.accountsList.next(this.accounts);
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
300
docs/compodoc/injectables/Web3Service.html
Normal file
300
docs/compodoc/injectables/Web3Service.html
Normal file
@@ -0,0 +1,300 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>CICADA</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="../images/favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-default navbar-fixed-top visible-xs">
|
||||
<a href="../" class="navbar-brand">CICADA</a>
|
||||
<button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
|
||||
</div>
|
||||
|
||||
<div class="xs-menu menu" id="mobile-menu">
|
||||
<div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid main">
|
||||
<div class="row main">
|
||||
<div class="hidden-xs menu">
|
||||
<compodoc-menu mode="normal"></compodoc-menu>
|
||||
</div>
|
||||
<!-- START CONTENT -->
|
||||
<div class="content injectable">
|
||||
<div class="content-data">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li>Injectables</li>
|
||||
<li>Web3Service</li>
|
||||
</ol>
|
||||
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="active">
|
||||
<a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
|
||||
</li>
|
||||
<li >
|
||||
<a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade active in" id="c-info">
|
||||
<p class="comment">
|
||||
<h3>File</h3>
|
||||
</p>
|
||||
<p class="comment">
|
||||
<code>src/app/_services/web3.service.ts</code>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h3 id="index">Index</h3>
|
||||
<table class="table table-sm table-bordered index-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<h6><b>Properties</b></h6>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<span class="modifier">Private</span>
|
||||
<span class="modifier">Static</span>
|
||||
<a href="#web3">web3</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<h6><b>Methods</b></h6>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<ul class="index-list">
|
||||
<li>
|
||||
<span class="modifier">Static</span>
|
||||
<a href="#getInstance">getInstance</a>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3 id="constructor">Constructor</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<code>constructor()</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/app/_services/web3.service.ts:9</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
<h3 id="methods">
|
||||
Methods
|
||||
</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="getInstance"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Static</span>
|
||||
getInstance
|
||||
</b>
|
||||
<a href="#getInstance"><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>getInstance()</code>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="13"
|
||||
class="link-to-prism">src/app/_services/web3.service.ts:13</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
|
||||
<div class="io-description">
|
||||
<b>Returns : </b> <code>Web3</code>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section>
|
||||
|
||||
<h3 id="inputs">
|
||||
Properties
|
||||
</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<a name="web3"></a>
|
||||
<span class="name">
|
||||
<b>
|
||||
<span class="modifier">Private</span>
|
||||
<span class="modifier">Static</span>
|
||||
web3</b>
|
||||
<a href="#web3"><span class="icon ion-ios-link"></span></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Type : </i> <code>Web3</code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/app/_services/web3.service.ts:9</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from '@angular/core';
|
||||
import Web3 from 'web3';
|
||||
import { environment } from '@src/environments/environment';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class Web3Service {
|
||||
private static web3: Web3;
|
||||
|
||||
constructor() {}
|
||||
|
||||
public static getInstance(): Web3 {
|
||||
if (!Web3Service.web3) {
|
||||
Web3Service.web3 = new Web3(environment.web3Provider);
|
||||
}
|
||||
return Web3Service.web3;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div><div class="search-results">
|
||||
<div class="has-results">
|
||||
<h1 class="search-results-title"><span class='search-results-count'></span> result-matching "<span class='search-query'></span>"</h1>
|
||||
<ul class="search-results-list"></ul>
|
||||
</div>
|
||||
<div class="no-results">
|
||||
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END CONTENT -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var COMPODOC_CURRENT_PAGE_DEPTH = 1;
|
||||
var COMPODOC_CURRENT_PAGE_CONTEXT = 'injectable';
|
||||
var COMPODOC_CURRENT_PAGE_URL = 'Web3Service.html';
|
||||
var MAX_SEARCH_RESULTS = 15;
|
||||
</script>
|
||||
|
||||
<script src="../js/libs/custom-elements.min.js"></script>
|
||||
<script src="../js/libs/lit-html.js"></script>
|
||||
<!-- Required to polyfill modern browsers as code is ES5 for IE... -->
|
||||
<script src="../js/libs/custom-elements-es5-adapter.js" charset="utf-8" defer></script>
|
||||
<script src="../js/menu-wc.js" defer></script>
|
||||
|
||||
<script src="../js/libs/bootstrap-native.js"></script>
|
||||
|
||||
<script src="../js/libs/es6-shim.min.js"></script>
|
||||
<script src="../js/libs/EventDispatcher.js"></script>
|
||||
<script src="../js/libs/promise.min.js"></script>
|
||||
<script src="../js/libs/zepto.min.js"></script>
|
||||
|
||||
<script src="../js/compodoc.js"></script>
|
||||
|
||||
<script src="../js/tabs.js"></script>
|
||||
<script src="../js/menu.js"></script>
|
||||
<script src="../js/libs/clipboard.min.js"></script>
|
||||
<script src="../js/libs/prism.js"></script>
|
||||
<script src="../js/sourceCode.js"></script>
|
||||
<script src="../js/search/search.js"></script>
|
||||
<script src="../js/search/lunr.min.js"></script>
|
||||
<script src="../js/search/search-lunr.js"></script>
|
||||
<script src="../js/search/search_index.js"></script>
|
||||
<script src="../js/lazy-load-graphs.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user