diff --git a/src/pages/digitalId/Verify.jsx b/src/pages/digitalId/Verify.jsx index 570cc64..ca305f5 100644 --- a/src/pages/digitalId/Verify.jsx +++ b/src/pages/digitalId/Verify.jsx @@ -1,11 +1,17 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import Sidebar from '../../partials/Sidebar'; import Header from '../../partials/Header'; +import { sharedDataStore } from '../../store/sharedDataStore'; +import { observer } from 'mobx-react-lite'; -const Verify = (() => { +const Verify = observer(() => { const [sidebarOpen, setSidebarOpen] = useState(false); const [descriptionOpen, setDescriptionOpen] = useState(false); + /*useEffect(() => { + sharedDataStore.fetchSharedData(); + }, []);*/ + const verifiedData = [ { "date": "31.05.2022 10:48", @@ -160,6 +166,11 @@ const Verify = (() => { ))} + {sharedDataStore.decryptedData.map((elem, index) => ( +
+ {elem} +
+ ))} diff --git a/src/store/sharedDataStore.js b/src/store/sharedDataStore.js new file mode 100644 index 0000000..28a32c9 --- /dev/null +++ b/src/store/sharedDataStore.js @@ -0,0 +1,76 @@ +import { cryptography } from "@liskhq/lisk-client"; +import { makeAutoObservable, reaction } from "mobx"; +import { fetchWrapper } from "../shared/fetchWrapper"; +import { registrationStore } from './store'; + +const labelMap = { + firstname: 'First name', + secondname: 'Second name', + gender: "Gender", + birthdate: "Birthdate", + placeofbirth: "Place of birth", + nationality: "Nationality", + nationalid: "National ID", + nationaldoctype: "National doctype", + nationaldocid: "National doc ID", + nationaldocissuedate: "National doc issue date", + nationaldocexpirydate: "National doc expiry date", + telephone: "Telephone", + twitter: "Twitter", + facebook: "Facebook", + instagram: "Instagram", + youtube: "Youtube", + wechat: "Wechat", + tiktok: "Tiktok", + linkedin: "Linkedin", + vk: "Vk", + github: "Github", + telegram: "Telegram", + qq: "Qq", + snapchat: "Snapchat", + reddit: "Reddit" +}; + +class SharedDataStore{ + _keysArray = []; + _sharedData = []; + + constructor() { + makeAutoObservable(this); + + reaction(() => ({data: registrationStore.keysArray}), ({data}) => { + this._keysArray = data; + this.fetchSharedData(); + }) + } + + fetchSharedData() { + this._keysArray.map((elem) => { + fetchWrapper.get(`http://3.125.47.101/api/data/shared/${elem}`).then((res) => this.changeSharedData(res)); + }) + }; + + changeSharedData(incomingData) { + this._sharedData.push({ + data: incomingData.data, + }); + console.log(this._sharedData); + } + + get sharedData() { + return this._sharedData; + } + + get decryptedData() { + return this._sharedData.map((elem) => + elem.data.map((item) => ({ + key: item.label, + label: labelMap[item.label], + value: cryptography.decryptMessageWithPassphrase(item.value, item.value_nonce, registrationStore.passPhrase, registrationStore.pubKey).split(':')[1] + }) + )) + } +} + +export const sharedDataStore = new SharedDataStore(); +console.log(sharedDataStore.sharedData); \ No newline at end of file diff --git a/src/store/store.js b/src/store/store.js index 92d8de7..816e876 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -12,14 +12,21 @@ class Store { _userData = {} + _keysArray = [] + constructor() { makeAutoObservable(this); this.fetchNodeInfo() - reaction(() => this.tokenKey, () => this.fetchNewAccountData()) + reaction(() => this.tokenKey, () => this.fetchData()) }; + fetchData() { + this.fetchNewAccountData(); + this.fetchLinksArray(); + } + fetchNewAccountData() { fetchWrapper.getAuth('http://3.125.47.101/api/data/private', { networkIdentifier: this.nodeInfo.networkIdentifier, @@ -35,12 +42,27 @@ class Store { .then(()=>this.fetchNewAccountData()) } + fetchLinksArray() { + fetchWrapper.getAuth('https://ccab53ea-d042-47b3-b9b4-79b913f47b3d.mock.pstmn.io/data/shared', { + networkIdentifier: this.nodeInfo.networkIdentifier, + lastBlockID: this.nodeInfo.lastBlockID + }).then((res) => this.keysArrayFetchChange(res)) + } + userDataFetchChange(res) { this._userData = res; } + keysArrayFetchChange(res) { + this._keysArray = res.data; + } + + get keysArray() { + return this._keysArray; + } + get userData() { - return this._userData + return this._userData; } savePassPhrase(phrase) {