import React, { useState, useEffect } 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'; import ProfileIcon from '../../images/profile-icon.svg'; import Avatar01 from '../../images/avatar-01.jpg'; import Avatar02 from '../../images/avatar-02.jpg'; import Avatar03 from '../../images/avatar-03.jpg'; 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 [selectedItems, setSelectedItems] = useState([]); /*useEffect(() => { userDataStore.getUserData(); }, []);*/ const defaultValues = { property: '', value: '', seed: Math.floor(Math.random() * 90000000000000000000) }; const initialPropertyValues = ['First name', 'Second name', 'Birthdate', 'Gender', 'Residence', 'Document type', 'Document ID', 'Issue date', 'Expiry date']; const [propertyValues, setPropertyValues] = useState([]); const [currentValues, setCurrentValues] = useState(defaultValues); const openHint = () => { if (!currentValues.property) { setPropertyValues(initialPropertyValues); } } const changeCurrentValues = (value, field) => { setCurrentValues((prevState)=> ({ ...prevState, [field]: value.charAt(0).toUpperCase()+value.slice(1), })) } const closeHint = (element) => { changeCurrentValues(element, 'property'); setPropertyValues([]); } const handleSelectedItems = (selectedItems) => { setSelectedItems([...selectedItems]); if (selectedItems.length > 0) { setButtonPanelOpen(false); setAddPanelOpen(false); setChangePanelOpen(true); } if (removePanelOpen === true) { setChangePanelOpen(false); } if (selectedItems.length === 0) { setRemovePanelOpen(false); setButtonPanelOpen(true); setChangePanelOpen(false); } }; const openAddPanel = () => { setAddPanelOpen(true); setButtonPanelOpen(false); } const sendValues = () => { if (!userData.some((element) => element.property === currentValues.property) && (currentValues.seed.toString().length === 20)) { setAddPanelOpen(false); setButtonPanelOpen(true); setCurrentValues(defaultValues); } } const cancelAddPanel = () => { setCurrentValues(defaultValues); setAddPanelOpen(false); setButtonPanelOpen(true); } const openRemovePanel = () => { setRemovePanelOpen(true); setChangePanelOpen(false); } const applyRemovePanel = () => { setRemovePanelOpen(false); setButtonPanelOpen(true); } const handleInput = (text, field) => { changeCurrentValues(text, field); setPropertyValues(initialPropertyValues); if (text) { let reg = new RegExp(`^${text}`, 'img'); setPropertyValues((prevState) => prevState.filter((element) => element.match(reg))); } }; const userData = [ { id: '0', category: 'General', validated: true, blockchained: true, image: ProfileIcon, value: 'Dominik', property: 'First name', status: 'Completed', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: [Avatar01, Avatar02, Avatar03] }, { id: '1', category: 'General', validated: true, blockchained: true, image: ProfileIcon, value: 'Lamakani', property: 'Second name', status: 'Progress', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '2', category: 'General', validated: true, blockchained: true, image: ProfileIcon, value: '05.10.1983', property: 'Birthdate', status: 'Incorrect', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '3', category: 'General', validated: true, blockchained: true, image: ProfileIcon, value: 'Male', property: 'Gender', status: 'Stored', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '4', category: 'Nationality', validated: true, blockchained: true, image: ProfileIcon, value: 'United Kindom', property: 'Residence', status: 'Completed', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: [Avatar01, Avatar02, Avatar03] }, { id: '5', category: 'Nationality', validated: true, blockchained: true, image: ProfileIcon, value: 'Passport', property: 'Document type', status: 'Progress', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: [Avatar01, Avatar02, Avatar03] }, { id: '6', category: 'Nationality', validated: true, blockchained: true, image: ProfileIcon, value: 'A123B3143', property: 'Document ID', status: 'Incorrect', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '7', category: 'Nationality', validated: true, blockchained: true, image: ProfileIcon, value: '05.10.2012', property: 'Issue date', status: 'Stored', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '8', category: 'Nationality', validated: true, blockchained: true, image: ProfileIcon, value: '05.10.2032', property: 'Expiry date', status: 'Stored', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '9', category: 'Social', validated: true, blockchained: true, image: ProfileIcon, value: '@lamakani', property: 'Telegram', status: 'Completed', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: null }, { id: '10', category: 'Social', validated: true, blockchained: true, image: ProfileIcon, value: '@lamakani', property: 'Telegram', status: 'Progress', transactions: ['0x7234ABC342342352345', '0x5745DEF342342352345'], avatars: [Avatar01, Avatar02, Avatar03] }, ] return (
{/* Sidebar */} {/* Content area */}
{/* Site header */}
{/* Page header */}
{/* Table */} {/* Test user data */}
{userDataStore.userData.map((elem, index) => (
{elem.label} {elem.value.split(':')[1]}
)) }
{/* Left sidebar */}
{/* Button panel*/}
{/* Add panel */}
handleInput(e.target.value, 'property')} value={currentValues.property} onClick={openHint} />
0) || 'hidden'}`}>
    {propertyValues.map((element, index) => (
  • closeHint(element)}>{element}
  • ))}
setPropertyValues([])} onChange={(e) => changeCurrentValues(e.target.value, 'value')} value={currentValues.value} />
setPropertyValues([])} onChange={(e) => changeCurrentValues(e.target.value, 'seed')} value={currentValues.seed} />
Store data on blockchain
setToggle(!toggle)} />
{/* Buttons */}
{/* Remove panel */}

Summary

{userData.filter(({ id }) => selectedItems.includes(id)).map(item => ( {item.property} ))}
On blockchain too
setToggle(!toggle)} />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do Terms.
{/* Details */}
{/* Top */}
Transaction 04
0.012 IDN
Total amount fee
{/* Divider */}
{/* Change panel */}
) }) export default Profile