-
{propertyValues.map((element, index) => (
- closeHint(element)}>{element} ))}
import React, { useState } from 'react'; import { userDataStore } from '../../store/userDataStore'; import { registrationStore } from "../../store/store"; import Sidebar from '../../partials/Sidebar'; import { observer } from 'mobx-react-lite'; import Header from '../../partials/Header'; import ProfileTable from '../../partials/digitalId/ProfileTable'; import Image from '../../images/transactions-image-04.svg'; const Profile = observer (() => { const [sidebarOpen, setSidebarOpen] = useState(false); const [buttonPanelOpen, setButtonPanelOpen] = useState(true); const [removePanelOpen, setRemovePanelOpen] = useState(false); const [changePanelOpen, setChangePanelOpen] = useState(false); const [toggle, setToggle] = useState(true); const [addPanelOpen, setAddPanelOpen] = useState(false); const [updatePanelOpen, setUpdatePanelOpen] = useState(false); const [selectedItems, setSelectedItems] = useState([]); const defaultValues = { label: '', value: '', seed: Math.floor(Math.random() * 90000000000000000000) }; const initialPropertyValues = ['First name', 'Second name', 'Birthdate', 'Gender', 'National doctype', 'National doc id', 'National doc issue date', 'National doc expiry date']; const [propertyValues, setPropertyValues] = useState([]); const [updatedValues, setUpdatedValues] = useState([defaultValues]); const [addedValues, setAddedValues] = useState(defaultValues); const openHint = () => { if (!addedValues.label) { setPropertyValues(initialPropertyValues); } } const changeAddedValues = (value, field) => { setAddedValues((prevState) => ( field !== 'seed' ? { ...prevState, [field]: value } : { ...prevState, [field]: +value, })) }; const changeUpdatedValues = (value, field, key) => { setUpdatedValues((prevState) => prevState.map((elem) => ( (elem.key === key && field !== 'seed') ? { ...elem, [field]: value, } : (elem.key === key) ? { ...elem, [field]: +value, } : elem )) ) }; const closeHint = (element) => { changeAddedValues(element, 'label'); setPropertyValues([]); } const handleSelectedItems = (selectedItems) => { setSelectedItems([...selectedItems]); setUpdatedValues(userDataStore.decryptedData.filter(({ key }) => selectedItems.includes(key)) .map(elem => ( (!elem.seed) ? { ...elem, seed: Math.floor(Math.random() * 90000000000000000000) }: 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 = () => { if (!userDataStore.decryptedData.some((element) => element.label === addedValues.label) && (addedValues.seed.toString().length === 20)) { setAddPanelOpen(false); setButtonPanelOpen(true); setAddedValues(defaultValues); addDataParameters(); } } const sendUpdatedData = () => { setUpdatePanelOpen(false); changeDataParameters(); setChangePanelOpen(true); } const deleteDataParameters = () => { const changeData = userDataStore.decryptedData.filter(item=>!selectedItems.includes(item.key)) registrationStore.pushAccountData(changeData); } const changeInitialArray = () => { let newArr = []; userDataStore.decryptedData.map(elem => { updatedValues.forEach(item => { if (elem.label === item.label) { newArr.push({ ...elem, 'value': item.value, 'seed': item.seed, }) } }) if (!newArr.find(element => element.label === elem.label)) { newArr.push(elem); } }) return newArr; } const changeDataParameters = () => { const updatedData = changeInitialArray(); registrationStore.pushAccountData(updatedData); } const addDataParameters = () => { addedValues.key = addedValues.label.toLowerCase().split(' ').join('_'); registrationStore.pushAccountData(userDataStore.decryptedData.concat(addedValues)); } const cancelAddPanel = () => { setAddedValues(defaultValues); setAddPanelOpen(false); setButtonPanelOpen(true); } const cancelUpdatePanel = () => { setUpdatePanelOpen(false); setChangePanelOpen(true); } const openRemovePanel = () => { setRemovePanelOpen(true); setChangePanelOpen(false); } const openUpdatePanel = () => { setUpdatePanelOpen(true); setChangePanelOpen(false); } const applyDataDeletion = () => { setRemovePanelOpen(false); setButtonPanelOpen(true); deleteDataParameters() } 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 (