Refactor mapping of curated options from meta.

This commit is contained in:
Spencer Ofwiti
2021-06-23 07:18:28 +00:00
parent a69213dab2
commit 5e8e0f7209
62 changed files with 4228 additions and 4702 deletions

View File

@@ -94,6 +94,16 @@
<li>
<a href="#actionsSubject">actionsSubject</a>
</li>
<li>
<a href="#categories">categories</a>
</li>
<li>
<span class="modifier">Private</span>
<a href="#categoriesList">categoriesList</a>
</li>
<li>
<a href="#categoriesSubject">categoriesSubject</a>
</li>
<li>
<a href="#headers">headers</a>
</li>
@@ -216,7 +226,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="37" class="link-to-prism">src/app/_services/user.service.ts:37</a></div>
<div class="io-line">Defined in <a href="" data-line="41" class="link-to-prism">src/app/_services/user.service.ts:41</a></div>
</td>
</tr>
@@ -317,8 +327,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="267"
class="link-to-prism">src/app/_services/user.service.ts:267</a></div>
<div class="io-line">Defined in <a href="" data-line="302"
class="link-to-prism">src/app/_services/user.service.ts:302</a></div>
</td>
</tr>
@@ -399,8 +409,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="155"
class="link-to-prism">src/app/_services/user.service.ts:155</a></div>
<div class="io-line">Defined in <a href="" data-line="179"
class="link-to-prism">src/app/_services/user.service.ts:179</a></div>
</td>
</tr>
@@ -471,8 +481,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="68"
class="link-to-prism">src/app/_services/user.service.ts:68</a></div>
<div class="io-line">Defined in <a href="" data-line="72"
class="link-to-prism">src/app/_services/user.service.ts:72</a></div>
</td>
</tr>
@@ -663,8 +673,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/user.service.ts:194</a></div>
<div class="io-line">Defined in <a href="" data-line="218"
class="link-to-prism">src/app/_services/user.service.ts:218</a></div>
</td>
</tr>
@@ -753,8 +763,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="220"
class="link-to-prism">src/app/_services/user.service.ts:220</a></div>
<div class="io-line">Defined in <a href="" data-line="244"
class="link-to-prism">src/app/_services/user.service.ts:244</a></div>
</td>
</tr>
@@ -841,8 +851,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="163"
class="link-to-prism">src/app/_services/user.service.ts:163</a></div>
<div class="io-line">Defined in <a href="" data-line="187"
class="link-to-prism">src/app/_services/user.service.ts:187</a></div>
</td>
</tr>
@@ -911,8 +921,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="59"
class="link-to-prism">src/app/_services/user.service.ts:59</a></div>
<div class="io-line">Defined in <a href="" data-line="63"
class="link-to-prism">src/app/_services/user.service.ts:63</a></div>
</td>
</tr>
@@ -981,8 +991,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="255"
class="link-to-prism">src/app/_services/user.service.ts:255</a></div>
<div class="io-line">Defined in <a href="" data-line="290"
class="link-to-prism">src/app/_services/user.service.ts:290</a></div>
</td>
</tr>
@@ -1020,8 +1030,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="151"
class="link-to-prism">src/app/_services/user.service.ts:151</a></div>
<div class="io-line">Defined in <a href="" data-line="175"
class="link-to-prism">src/app/_services/user.service.ts:175</a></div>
</td>
</tr>
@@ -1090,8 +1100,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="144"
class="link-to-prism">src/app/_services/user.service.ts:144</a></div>
<div class="io-line">Defined in <a href="" data-line="168"
class="link-to-prism">src/app/_services/user.service.ts:168</a></div>
</td>
</tr>
@@ -1129,8 +1139,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="247"
class="link-to-prism">src/app/_services/user.service.ts:247</a></div>
<div class="io-line">Defined in <a href="" data-line="271"
class="link-to-prism">src/app/_services/user.service.ts:271</a></div>
</td>
</tr>
@@ -1139,7 +1149,7 @@
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
@@ -1161,15 +1171,15 @@
</tr>
<tr>
<td class="col-md-4">
<code>getCategoryByProduct(product: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
<code>getCategoryByProduct(product: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, categories: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank">object</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="251"
class="link-to-prism">src/app/_services/user.service.ts:251</a></div>
<div class="io-line">Defined in <a href="" data-line="278"
class="link-to-prism">src/app/_services/user.service.ts:278</a></div>
</td>
</tr>
@@ -1199,6 +1209,18 @@
</td>
</tr>
<tr>
<td>categories</td>
<td>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
@@ -1206,7 +1228,7 @@
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<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>
<div class="io-description">
@@ -1238,8 +1260,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="263"
class="link-to-prism">src/app/_services/user.service.ts:263</a></div>
<div class="io-line">Defined in <a href="" data-line="298"
class="link-to-prism">src/app/_services/user.service.ts:298</a></div>
</td>
</tr>
@@ -1277,8 +1299,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="64"
class="link-to-prism">src/app/_services/user.service.ts:64</a></div>
<div class="io-line">Defined in <a href="" data-line="68"
class="link-to-prism">src/app/_services/user.service.ts:68</a></div>
</td>
</tr>
@@ -1359,8 +1381,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="259"
class="link-to-prism">src/app/_services/user.service.ts:259</a></div>
<div class="io-line">Defined in <a href="" data-line="294"
class="link-to-prism">src/app/_services/user.service.ts:294</a></div>
</td>
</tr>
@@ -1400,8 +1422,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/user.service.ts:46</a></div>
<div class="io-line">Defined in <a href="" data-line="50"
class="link-to-prism">src/app/_services/user.service.ts:50</a></div>
</td>
</tr>
@@ -1441,8 +1463,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="181"
class="link-to-prism">src/app/_services/user.service.ts:181</a></div>
<div class="io-line">Defined in <a href="" data-line="205"
class="link-to-prism">src/app/_services/user.service.ts:205</a></div>
</td>
</tr>
@@ -1530,8 +1552,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="238"
class="link-to-prism">src/app/_services/user.service.ts:238</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>
@@ -1569,8 +1591,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="54"
class="link-to-prism">src/app/_services/user.service.ts:54</a></div>
<div class="io-line">Defined in <a href="" data-line="58"
class="link-to-prism">src/app/_services/user.service.ts:58</a></div>
</td>
</tr>
@@ -1639,8 +1661,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="159"
class="link-to-prism">src/app/_services/user.service.ts:159</a></div>
<div class="io-line">Defined in <a href="" data-line="183"
class="link-to-prism">src/app/_services/user.service.ts:183</a></div>
</td>
</tr>
@@ -1709,8 +1731,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="243"
class="link-to-prism">src/app/_services/user.service.ts:243</a></div>
<div class="io-line">Defined in <a href="" data-line="267"
class="link-to-prism">src/app/_services/user.service.ts:267</a></div>
</td>
</tr>
@@ -1781,8 +1803,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="129"
class="link-to-prism">src/app/_services/user.service.ts:129</a></div>
<div class="io-line">Defined in <a href="" data-line="153"
class="link-to-prism">src/app/_services/user.service.ts:153</a></div>
</td>
</tr>
@@ -1875,8 +1897,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="167"
class="link-to-prism">src/app/_services/user.service.ts:167</a></div>
<div class="io-line">Defined in <a href="" data-line="191"
class="link-to-prism">src/app/_services/user.service.ts:191</a></div>
</td>
</tr>
@@ -2135,6 +2157,103 @@
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="categories"></a>
<span class="name">
<b>
categories</b>
<a href="#categories"><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/object" target="_blank" >object</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="39" class="link-to-prism">src/app/_services/user.service.ts:39</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="categoriesList"></a>
<span class="name">
<b>
<span class="modifier">Private</span>
categoriesList</b>
<a href="#categoriesList"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>BehaviorSubject&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new BehaviorSubject&lt;object&gt;(this.categories)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="40" class="link-to-prism">src/app/_services/user.service.ts:40</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="categoriesSubject"></a>
<span class="name">
<b>
categoriesSubject</b>
<a href="#categoriesSubject"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>Observable&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>this.categoriesList.asObservable()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="41" class="link-to-prism">src/app/_services/user.service.ts:41</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
@@ -2294,6 +2413,10 @@ export class UserService {
private actionsList: BehaviorSubject&lt;any&gt; &#x3D; new BehaviorSubject&lt;any&gt;(this.actions);
actionsSubject: Observable&lt;Array&lt;any&gt;&gt; &#x3D; this.actionsList.asObservable();
categories: object &#x3D; {};
private categoriesList: BehaviorSubject&lt;object&gt; &#x3D; new BehaviorSubject&lt;object&gt;(this.categories);
categoriesSubject: Observable&lt;object&gt; &#x3D; this.categoriesList.asObservable();
constructor(
private httpClient: HttpClient,
private loggingService: LoggingService,
@@ -2344,17 +2467,37 @@ export class UserService {
},
location: {},
};
accountInfo.vcard.fn[0].value &#x3D; name;
accountInfo.vcard.n[0].value &#x3D; name.split(&#x27; &#x27;);
accountInfo.vcard.tel[0].value &#x3D; phoneNumber;
accountInfo.products &#x3D; [bio];
accountInfo.gender &#x3D; gender;
accountInfo.age &#x3D; age;
accountInfo.type &#x3D; type;
accountInfo.category &#x3D; businessCategory;
accountInfo.location.area &#x3D; location;
accountInfo.location.area_name &#x3D; userLocation;
accountInfo.location.area_type &#x3D; locationType;
if (name) {
accountInfo.vcard.fn[0].value &#x3D; name;
accountInfo.vcard.n[0].value &#x3D; name.split(&#x27; &#x27;);
}
if (phoneNumber) {
accountInfo.vcard.tel[0].value &#x3D; phoneNumber;
}
if (bio) {
accountInfo.products &#x3D; [bio];
}
if (gender) {
accountInfo.gender &#x3D; gender;
}
if (age) {
accountInfo.age &#x3D; age;
}
if (type) {
accountInfo.type &#x3D; type;
}
if (businessCategory) {
accountInfo.category &#x3D; businessCategory;
}
if (location) {
accountInfo.location.area &#x3D; location;
}
if (userLocation) {
accountInfo.location.area_name &#x3D; userLocation;
}
if (locationType) {
accountInfo.location.area_type &#x3D; locationType;
}
await vcardValidation(accountInfo.vcard);
accountInfo.vcard &#x3D; btoa(vCard.generate(accountInfo.vcard));
const accountKey: string &#x3D; await User.toKey(address);
@@ -2502,12 +2645,23 @@ export class UserService {
return;
}
getCategories(): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/categories&#x60;);
getCategories(): void {
this.httpClient
.get(&#x60;${environment.cicMetaUrl}/categories&#x60;)
.pipe(first())
.subscribe((res: object) &#x3D;&gt; this.categoriesList.next(res));
}
getCategoryByProduct(product: string): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/categories/${product.toLowerCase()}&#x60;);
getCategoryByProduct(product: string, categories: object): string {
const keywords &#x3D; product.toLowerCase().split(&#x27; &#x27;);
for (const keyword of keywords) {
const queriedCategory: string &#x3D; Object.keys(categories).find((key) &#x3D;&gt;
categories[key].includes(keyword)
);
if (queriedCategory) {
return queriedCategory;
}
}
}
getAccountTypes(): Observable&lt;any&gt; {