-
{propertyValues.map((element, index) => (
- selectHint(element)}>{element} ))}
import React, { useState, useEffect } from 'react'; import { store } from "../../store/store"; import Sidebar from '../../partials/Sidebar'; import { observer } from 'mobx-react-lite'; import Header from '../../partials/Header'; import ProfileTable from '../../partials/profile/ProfileTable'; import Image from '../../images/transactions-image-04.svg'; import {labelMap} from '../../shared/labelMap'; const initialPropertyValues = ['First name', 'Second name', 'Birthdate', 'Gender', 'National doctype', 'National doc ID', 'National doc issue date', 'National doc expiry date']; const Profile = observer (() => { const defaultValues = { label: '', value: '', seed: String(Math.floor(Math.random() * 90000000000000000000), 10), }; const [sidebarOpen, setSidebarOpen] = useState(false); const [buttonPanelOpen, setButtonPanelOpen] = useState(true); const [removePanelOpen, setRemovePanelOpen] = useState(false); const [changePanelOpen, setChangePanelOpen] = useState(false); const [storeOnBlockchain, setStoreOnBlockchain] = useState(false); const [addPanelOpen, setAddPanelOpen] = useState(false); const [updatePanelOpen, setUpdatePanelOpen] = useState(false); const [selectedItems, setSelectedItems] = useState([]); const [propertyValues, setPropertyValues] = useState([]); const [updatedValues, setUpdatedValues] = useState([defaultValues]); const [addedValues, setAddedValues] = useState(defaultValues); const [isCheck, setIsCheck] = useState([]); const [alreadyExists, setAlreadyExists] = useState(false); useEffect(() => { handleSelectedItems(isCheck); // eslint-disable-next-line react-hooks/exhaustive-deps }, [isCheck]); const handleClick = e => { const { id, checked } = e.target; setIsCheck([...isCheck, id]); if (!checked || !id) { setIsCheck(isCheck.filter(item => item !== id)); } }; const openHint = () => { if (!addedValues.label) { setPropertyValues(initialPropertyValues); } }; const changeAddedValues = (value, field) => { setAddedValues((prevState) => ({ ...prevState, [field]: value, })) }; const changeUpdatedValues = (value, field, key) => { setUpdatedValues((prevState) => prevState.map((elem) => ( (elem.key === key) ? { ...elem, [field]: value, } : elem )) ) }; const selectHint = (element) => { changeAddedValues(element, 'label'); setPropertyValues([]); } const closeHint = (eventTarget) => { if (!eventTarget || eventTarget.tabIndex !== -1) { setPropertyValues([]); } }; const handleSelectedItems = (selectedItems) => { setSelectedItems([...selectedItems]); setUpdatedValues(store.decryptedAccountData.filter(({ key }) => selectedItems.includes(key)) .map(elem => ( (!elem.seed) ? { ...elem, seed: String(Math.floor(Math.random() * 90000000000000000000), 10), }: elem))); if (selectedItems.length > 0) { setButtonPanelOpen(false); setAddPanelOpen(false); setChangePanelOpen(true); } if (removePanelOpen === true || updatePanelOpen === true) { setChangePanelOpen(false); } if (selectedItems.length === 0) { setRemovePanelOpen(false); setUpdatePanelOpen(false); setButtonPanelOpen(true); setChangePanelOpen(false); } }; const openAddPanel = () => { setAddPanelOpen(true); setButtonPanelOpen(false); }; const sendAddedData = () => { const checkingAddedData = !store.decryptedAccountData .some((element) => element.label === addedValues.label) setAlreadyExists(!checkingAddedData); if (checkingAddedData) { setAddPanelOpen(false); setButtonPanelOpen(true); setAddedValues(defaultValues); addDataParameters(); } }; const sendUpdatedData = () => { setUpdatePanelOpen(false); changeDataParameters(); setChangePanelOpen(true); setIsCheck([]); }; const deleteDataParameters = () => { const changeData = store.decryptedAccountData.filter(item=>!selectedItems.includes(item.key)); store.pushAccountData(changeData); if(storeOnBlockchain) store.pushAccountDataToBlockchain(changeData.filter(elem=>elem.status!=='Stored')) }; const changeInitialArray = () => { let newArr = []; store.decryptedAccountData.map(elem => { updatedValues.forEach(item => { if (elem.label === item.label) { newArr.push({ ...elem, status: 'new', 'value': item.value, 'seed': item.seed, }) } }) if (!newArr.find(element => element.label === elem.label)) { newArr.push(elem); } }) return newArr; }; const changeDataParameters = () => { const updatedData = changeInitialArray(); store.pushAccountData(updatedData); if(storeOnBlockchain) store.pushAccountDataToBlockchain(updatedData.filter(elem=>elem.status!=='Stored')) }; const addDataParameters = () => { console.log(addedValues) const label = addedValues.label.toLowerCase().split(' ').join(''); if(labelMap[label]) addedValues.key = addedValues.label.toLowerCase().split(' ').join(''); else addedValues.key = addedValues.label store.pushAccountData(store.decryptedAccountData.concat(addedValues)); if(storeOnBlockchain) store.pushAccountDataToBlockchain(store.decryptedAccountData.concat(addedValues).filter(elem=>elem.status!=='Stored')) }; const cancelAddPanel = () => { setAddedValues(defaultValues); setAddPanelOpen(false); setButtonPanelOpen(true); }; const cancelUpdatePanel = () => { setUpdatedValues(store.decryptedAccountData.filter(({ key }) => selectedItems.includes(key)) .map(elem => ( (!elem.seed) ? { ...elem, seed: String(Math.floor(Math.random() * 90000000000000000000), 10), }: elem))); setUpdatePanelOpen(false); setChangePanelOpen(true); setIsCheck([]); }; const openRemovePanel = () => { setRemovePanelOpen(true); setChangePanelOpen(false); }; const openUpdatePanel = () => { setUpdatePanelOpen(true); setChangePanelOpen(false); }; const applyDataDeletion = () => { setRemovePanelOpen(false); setButtonPanelOpen(true); deleteDataParameters(); setIsCheck([]); }; const handleInput = (text, field) => { changeAddedValues(text, field); setPropertyValues(initialPropertyValues); if (text) { let reg = new RegExp(`^${text}`, 'img'); setPropertyValues((prevState) => prevState.filter((element) => element.match(reg))); } }; return (