{"version":3,"sources":["reportWebVitals.js","network/connectors.js","assets/Logo.svg","assets/Aeco.svg","assets/Finance.svg","assets/Square.svg","assets/UpperHalfSquare.svg","components/Addressbar.jsx","network/hooks.js","components/Spinner.jsx","assets/Close.svg","assets/DAILogo.svg","assets/tether-usdt-logo.svg","assets/usd-coin-usdc-logo.svg","components/CurrencyModal.jsx","components/CreateProposalModal.jsx","components/ProposalViewModal.jsx","assets/HalfSquare.svg","components/Footer.jsx","components/MCAdminPage.jsx","components/AddDeveloperModal.jsx","assets/Delete.svg","components/DeleteDeveloperConfirmationModal.jsx","assets/Update.svg","components/UpdateDeveloperModal.jsx","components/UseSortableData.jsx","components/DeveloperDashboardPage.jsx","components/AddLandModal.jsx","components/UpdateLandInfoModal.jsx","components/UpdateLandAppraisalModal.jsx","components/AppraisalStatusViewModal.jsx","components/DeleteLandConfirmationModal.jsx","components/DeveloperInfoPage.jsx","components/DepositModal.jsx","components/RedeemModal.jsx","components/MarketInfoPage.jsx","components/DatePicker.jsx","components/CreateLoanModal.jsx","components/PayLoanModal.jsx","components/CloseMarketModal.jsx","components/CreateMarketModal.jsx","components/LiquidateLandModal.jsx","components/MarketDashboardPage.jsx","components/SPVWalletPage.jsx","components/App.jsx","index.js"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","MetaMask","InjectedConnector","supportedChainIds","HeaderRow","styled","div","props","medium","long","LogoRow","a","LogoIcon","AerySVG","FinanceSVG","ConnectWalletBtn","motion","button","TopperMenu","Menus","activeClassName","StyledNavLink","NavLink","attrs","LeftFirstBox","LeftSecondBox","LeftThirdBox","RightFirstBox","RightSecondBox","RightThirdBox","Addressbar","web3Context","useWeb3React","useState","address","process","abi","ManagementCompany","ManagementCompanySC","boardMembers","setBoardMembers","activatingConnector","setActivatingConnector","connector","activate","deactivate","active","error","library","chainId","account","useEffect","undefined","suppress","ethereum","window","on","handleConnect","console","log","handleChainChanged","handleAccountsChanged","accounts","length","handleNetworkChanged","networkId","removeListener","useInactiveListener","tried","setTried","isAuthorized","catch","useEagerConnect","loadBoardMembers","useCallback","ethLibrary","eth","ManagementCompanyContract","Contract","methods","getActiveMCBoard","call","activeBoardMembers","slice","href","src","Logo","Aery","Finance","includes","to","whileHover","scale","whileTap","onClick","substring","Square","UpperHalfSquare","StyledSpinner","svg","Spinner","viewBox","className","cx","cy","r","fill","strokeWidth","CurrencyModal","name","decimal","img","DAILogo","TetherLogo","USDCLogo","Popup","PopupInner","PopupHeader","CloseButton","ContentArea","InputBoxContainer","InputBoxLabel","FixedWidth","Required","InputBox","input","PopupFooter","PopupButton","primary","css","ProposalBox","ProposalBoxLabel","ProposalBoxButton","viewButton","SelectBox","select","modalVariant","initial","opacity","isOpen","exit","containerVariant","top","transition","type","CreateProposalModal","modal","setModal","loading","setLoading","label","memberAddress","setMemberAddress","transferTo","setTransferTo","transferAmount","setTransferAmount","votingThreshold","setVotingThreshold","newAddress","setNewAddress","currencies","toString","selectedCurrency","setCurrency","toggle","animate","variants","header","Close","onChange","e","target","value","required","map","member","index","selected","min","max","currency","currentAddress","action","toRemove","PopupSubHeader","disabled","ApprovalStatus","PendingStatus","ProposalViewModal","boxLabel","requestText","Table","votingResults","caller","StyledFooter","Background","CopyRight","Squares1","Squares2","Squares3","Squares4","SquareRow","MiddleArea","Footer","HalfSquare","DashboardPage","SubTitle","Title","FlexContainer","ContentContainer","TableContainer","VotingThresholdBox","VotingThresholdLabel","GapArea","StyledTable","table","AddressZero","MCAdminPage","minApprovalRequired","setMinApprovalRequired","addMemberProposal","setAddMemberProposal","removeMemberProposal","setRemoveMemberProposal","voteThresholdProposal","setVoteThresholdProposal","SPVWalletAddressProposal","setSPVWalletAddressProposal","LOSCAddressProposal","setLOSCAddressProposal","LRSCAddressProposal","setLRSCAddressProposal","newMemberVotingFlags","setNewMemberVotingFlags","removeMemberVotingFlags","setRemoveMemberVotingFlags","thresholdVotingFlags","setThresholdVotingFlags","SPVWalletAddressVotingFlags","setSPVWalletAddressVotingFlags","LOSCAddressVotingFlags","setLOSCAddressVotingFlags","LRSCAddressVotingFlags","setLRSCAddressVotingFlags","currentLRSCAddress","setCurrentLRSCAddress","currentLOSCAddress","setCurrentLOSCAddress","currentSPVAddress","setCurrentSPVAddress","loadAdminProposals","LOSCAddress","currentLOSC","LRSCAddress","currentLRSC","SPVWalletAddress","currentSPV","pendingMCBoardMember","pendingMinApprovalRequired","pendingRemoveMember","pendingSPVWalletAddress","pendingSPVWallet","pendingLOSCAddress","pendingLOSCAddressProposal","pendingLRSCAddress","pendingLRSCAddressProposal","getBoardMemberVoteFlags","getMinApprovalRequiredVoteFlags","getRemoveMemberVoteFlags","getSPVWalletAddressVoteFlags","getLOSCAddressVoteFlags","getLRSCAddressVoteFlags","proposeNewAdmin","newMemberAddress","send","from","once","location","reload","proposeRemoveAdmin","boardMemberAddress","proposeNewApprovalRequiredNumber","newThreshold","proposeNewSPVWalletAddress","newWalletAddress","proposeNewLOSCAddress","newLOSCAddress","proposeNewLRSCAddress","newLRSCAddress","approveNewAdmin","voteNewAdmin","approveNewApprovalRequiredNumber","voteNewApprovalRequiredNumber","approveAdminRemoval","voteRemoveAdmin","approveNewSPVWalletAddress","voteNewSPVWalletAddress","approveNewLOSCAddress","voteNewLOSCAddress","approveNewLRSCAddress","voteNewLRSCAddress","note","AddDeveloperButton","BigInputBox","textarea","AddDeveloperModal","companyName","setCompanyName","setLocation","setNote","placeholder","cols","ContentText","NoteText","FlexActionColumn","DeleteDeveloperConfirmationModal","Delete","message","developerId","actionLabel","UpdateDeveloperModal","Update","useSortableData","items","config","sortConfig","setSortConfig","sortedItems","useMemo","sortableItems","sort","b","key","direction","requestSort","NavLinkText","HeaderColumn","DeveloperDashboardPage","LandRegistration","landRegistrationSC","setLandRegistrationSC","activeDeveloperIDs","activeDeveloperInfos","activeDevelopers","setActiveDevelopers","addNewDeveloper","landRegistrationContract","updateDeveloper","deleteDeveloper","getActiveDevelopers","getActiveDeveloperIDs","totalActiveDeveloperID","newDeveloperArray","newDeveloperObject","i","getDeveloperByID","developerID","loanLimit","loanBalance","push","loadSCAddress","MCAdminContract","LRSC","developer","companyLogo","style","width","AddLandButton","AddLandModal","landPropertyID","setLandPropertyID","landAddress","setLandAddress","zoning","setZoning","UpdateLandButton","landID","landZoning","LandAppraisalModal","appraiseValue","setAppraiseValue","collateralFactor","setCollateralFactor","ApproveAppraisalButton","AppraisalStatusViewModal","landIsReady","DeleteLandButton","DeleteLandConfirmationModal","require","UpperTableContainer","LowerTableContainer","TitleNamePart","TitleInfoPart","TitleInfoHeaderRow","TitleInfoRow","TitleInfoItem","HeaderText","ButtonRow","DeveloperInfoPage","LoanOriginator","LoanOriginatorSC","setLoanOriginatorSC","setLoanLimit","setLoanBalance","activeLands","setActiveLands","activeLoanEntities","setActiveLoanEntities","useParams","loadLoanEntities","loanOriginatorContract","getMyUniqueLoanEntityID","UniqueLoanEntityIds","loanEntityInfoArray","newLoanEntityObject","loadedDetailsArray","uintNumber","BigInt","asIntN","loanPoolId","loanEntityId","getLoanPoolByID","loanPoolAddress","LoanPoolContract","LoanPool","getLoanEntityViewByLoanEntityID","getLoanPoolInfo","loanPoolInfoArray","reloadedLoanPoolCurrency","find","c","toLowerCase","loanID","Number","loanPoolName","interestRateAPY","closeDate","Date","parseInt","toISOString","principle","projectType","loadDeveloperInfo","developerInfoArray","getActiveLandIdsByDeveloperId","newActiveLandIds","activeLandInfoArray","votedAddressesArray","newLandObject","getLandByID","getVotedAddressByLandID","propertyIdentificationNumber","propertyAddress","propertyZoning","isReady","appraisalAmount","appraisalDiscountPercent","amountBorrowedByDeveloper","addNewLand","propertyId","updateLandInfo","landId","updateLandBasicInfo","updateAppraisal","appraisalValue","exactNumber","utils","toBN","addOrUpdateLandAppraisal","approveAppraisal","approveLandAppraisal","deleteLand","LOSC","land","loanEntity","ActionBtn","PopupText","DepositModal","amount","setAmount","loanPoolStatus","loanPoolCurrencyName","rateToBorrow","myAssetBalance","loanPoolCurrencyBase","myAssetAllowance","approve","finally","RedeemModal","myTokenBalance","TitleRow","TotalLabel","ProposalNumberLabel","ActionBtnContainer","MarketInfoPage","setLoanPoolName","totalDeposit","setTotalDeposit","minRate","setMinRate","maxRate","setMaxRate","setRateToBorrow","poolReserve","setPoolReserve","setMyAssetBalance","setMyAssetAllowance","setMyTokenBalance","currentUltilizationRate","setCurrentUltilizationRate","loanPoolCurrency","setLoanPoolCurrency","currencyBase","setCurrencyBase","currencyName","setCurrencyName","currencyLogo","setCurrencyLogo","setLoanPoolStatus","loadLoanPoolInfo","balanceOf","myTokenAmount","stableTokenContract","ERC20Token","myAssetAmount","allowance","getActiveLoanEntityIDs","activeLoanEntityIds","developerName","principal","landName","deposit","reloadedLoanPoolAddress","exactAmount","parseUnits","approveToken","CurrencyBase","exactMaxNumber","redeem","withdraw","toFixed","StyledDatePickerWrapper","DatePicker","state","focused","date","moment","add","numberOfMonths","onDateChange","setState","onFocusChange","this","React","Component","CreateLoanButton","overlapped","NotificationBox","WrapUpBox","CreateLoanModal","loanPoolID","loanPool","setDeveloperID","landList","setLandList","setLandID","collateral","setCollateral","loanAmount","setLoanAmount","maturity","useRef","projectDescription","setProjectDescription","developerInfos","loadLandList","selectedDeveloper","landInfo","loadCollateral","selectedLand","ref","PayLoanButton","PayLoanModal","walletBalance","setWalletBalance","loanEntityDropdownList","setLoanEntityDropDownList","selectedLoanEntityID","setSelectedLoanEntityID","selectedLoanEntity","setSelectedLoanEntity","paymentAmount","setPaymentAmount","loadLoanEntityList","loanPoolContract","callgetLoanEntityIDsByLandID","loanEntityIDs","totalLoanEntityID","loanEntityArray","loanEntityInfos","loanEntityObject","getLoanEntityPaymentInfoByLoanEntityID","loanEntityID","interestObligated","totalPaid","loadSelectedLoanEntity","CloseMarketButton","CloseMarketModal","Notification","status","ButtonLabel","Action","toUpperCase","CreateMarketButton","CreateMarketModal","marketName","setMarketName","utilizationLimit","setUtilizationLimit","setSelectedCurrency","defaultValue","LiquidateButton","LiquidateLandModal","ActionButtonContainer","ActionButtonRow","DECIMALBASE","MarketDashboardPage","loanOriginatorSC","SPVWallet","SPVWalletSC","setSPVWalletSC","activeLoanPoolIDs","activeLoanPoolInfos","activeLoanPools","setActiveLoanPools","setLoanPoolCurrencyBase","getActiveLoanPools","getActiveLoanPoolIDs","totalActiveLoanPoolID","newLoanPoolArray","newLoanPoolObject","CURRENCYBASE","loanPoolCurrencyBaseCache","getLoanPoolInfoByID","poolDebt","marketsize","createLoanPool","ultLimit","withdrawFund","SPVWalletContract","dateTime","current","getTime","timestamp","Math","floor","loanPoolDrawFund","payLoan","managementCompanyContract","reloadedcurrency","payLoanRequest","liquidateLand","reloadedCurrency","dec","bnAmount","mul","pow","debtVoidRequest","closeMarket","closeLoanPool","openMarket","openLoanPool","getActiveDeveloperDetails","landIds","j","SPV","id","UpperArea","RowTitle","BalanceContainer","BalanceDisplay","BalanceNumber","BalanceLabel","SPVWalletPage","balance","USDCInfo","setUSDCInfo","USDTInfo","setUSDTInfo","DAIInfo","setDAIInfo","requestInfo","setRequestInfo","loadCurrentRequest","request","currentRequest","getRequestVoteFlags","voteFlags","newRequestObject","loadTokenBalance","USDTContract","USDTBalance","USDCContract","USDCBalance","DAIContract","DAIBalance","createRequest","createFundTransferRequest","approveRequest","approveFundTransferRequest","Main","App","useLocation","pathname","exact","path","component","ReactDOM","render","StrictMode","getLibrary","provider","Web3","pollingInterval","libraryName","web3Api","document","getElementById"],"mappings":"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","file":"static/js/main.25cb2afb.chunk.js","sourcesContent":["const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { InjectedConnector } from '@web3-react/injected-connector';\n\nexport const MetaMask = new InjectedConnector({ supportedChainIds: [1, 3, 4, 5, 42] });\n\nconst connectors = { MetaMask };\n\nexport default connectors;\n","export default __webpack_public_path__ + \"static/media/Logo.af13d0ba.svg\";","export default __webpack_public_path__ + \"static/media/Aeco.f8bbbded.svg\";","export default __webpack_public_path__ + \"static/media/Finance.095cf318.svg\";","export default __webpack_public_path__ + \"static/media/Square.fb6c39aa.svg\";","export default __webpack_public_path__ + \"static/media/UpperHalfSquare.5a1dc53d.svg\";","import React, {useState, useEffect, useCallback} from 'react';\n\n//* Web3\nimport { useWeb3React } from '@web3-react/core';\nimport { useEagerConnect, useInactiveListener } from '../network/hooks';\nimport { MetaMask } from '../network/connectors';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\n\nimport Logo from '../assets/Logo.svg';\nimport Aery from '../assets/Aeco.svg';\nimport Finance from '../assets/Finance.svg';\nimport Square from '../assets/Square.svg';\nimport UpperHalfSquare from '../assets/UpperHalfSquare.svg';\nimport styled from 'styled-components/macro'\nimport {NavLink} from \"react-router-dom\";\nimport {AnimatePresence, motion} from \"framer-motion\";\n\nconst HeaderRow = styled.div`\n display: flex;\n\n width: 100%;\n font-family: Lato;\n font-style: normal;\n\n height: 55px;\n background: linear-gradient(287.81deg, #161616 32.36%, rgba(22, 22, 22, 0.73) 99.22%);\n box-shadow: 26px 24px 90px rgba(31, 26, 51, 0.13);\n \n ${props => props.medium ? `\n height: 296px;\n background: linear-gradient(180deg, #161616 0%, rgba(22, 22, 22, 0.73) 100%);\n box-shadow: 26px 24px 90px rgba(31, 26, 51, 0.13);\n ` \n : ``}\n \n ${props => props.long ? `\n height: 500px;\n background: linear-gradient(287.81deg, #161616 32.36%, rgba(22, 22, 22, 0.73) 99.22%);\n box-shadow: 26px 24px 90px rgba(31, 26, 51, 0.13);\n `\n : ``} \n`\n\nconst LogoRow = styled.a`\n display: flex;\n align-items: center;\n pointer-events: auto;\n justify-self: flex-start;\n margin-left: 88px;\n height: 55px;\n \n :hover {\n cursor: pointer;\n }\n`\nconst LogoIcon = styled.div`\n \n transition: transform 0.3s ease;\n :hover {\n transform: rotate(-25deg);\n }\n`\n\nconst AerySVG = styled.div`\n margin-left: 8px;\n`\n\nconst FinanceSVG = styled.div`\n margin-left: 8px;\n`\n\nconst ConnectWalletBtn = styled(motion.button)`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n margin-right: 200px;\n width: 184px;\n height: 36px;\n \n border: 1px solid #F0C235;\n box-sizing: border-box;\n border-radius: 41px;\n \n /* Inside Auto Layout */\n \n font-weight: bold;\n font-size: 14px;\n line-height: 16px;\n\n color: #F0C235;\n\n background-color: transparent;\n background-repeat:no-repeat;\n cursor: pointer;\n`\n\nconst TopperMenu = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-top: 9px;\n overflow: hidden;\n text-transform: capitalize;\n margin-left: auto; \n padding-left: 200px;\n height: 36px;\n \n @media all and (max-width: 1444px) {\n padding-left: 0;\n margin-left: 200px;\n }\n\n`\n\nconst Menus = styled.div`\n float: right;\n\n align-items: center;\n \n right: 231px;\n top: 10px;\n`\nconst activeClassName = 'ACTIVE'\n\nconst StyledNavLink = styled(NavLink).attrs({activeClassName})`\n width: 85px;\n height: 16px;\n padding-right: 50px;\n\n font-weight: 400;\n font-size: 14px;\n line-height: 17px;\n /* identical to box height */\n text-decoration: none;\n\n text-align: right;\n text-transform: uppercase; \n color: rgba(255, 255, 255, 0.7);\n \n &.${activeClassName} {\n font-weight: bold;\n color: rgba(255, 255, 255, 0.9);\n } \n`\n\nconst LeftFirstBox = styled.div`\n display: none;\n position: absolute;\n top: 92px;\n left: 80px;\n \n ${props => props.long ? `display: block;` : ``} \n`\n\nconst LeftSecondBox = styled.div`\n display: none;\n position: absolute;\n top: 238px;\n left: 225px;\n\n ${props => props.long ? `display: block;` : ``} \n`\n\nconst LeftThirdBox = styled.div`\n display: none;\n position: absolute;\n top: 430px;\n left: 94px;\n\n ${props => props.long ? `display: block;` : ``} \n`\n\nconst RightFirstBox = styled.div`\n display: none;\n position: absolute;\n top: 92px;\n right: 80px;\n\n ${props => props.long ? `display: block;` : ``}\n \n @media all and (max-width: 1444px) {\n left: 1237px;\n }\n`\n\nconst RightSecondBox = styled.div`\n display: none;\n position: absolute;\n top: 238px;\n right: 225px;\n\n ${props => props.long ? `display: block;` : ``} \n \n @media all and (max-width: 1444px) {\n left: 1124px;\n }\n`\n\nconst RightThirdBox = styled.div`\n display: none;\n position: absolute;\n top: 430px;\n right: 94px;\n\n ${props => props.long ? `display: block;` : ``}\n \n @media all and (max-width: 1444px) {\n left: 1232px;\n }\n`\n\n\n\nconst Addressbar = (props) => {\n const web3Context = useWeb3React();\n const [ManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n const [boardMembers, setBoardMembers] = useState([]);\n const [activatingConnector, setActivatingConnector] = useState();\n\n const { connector, activate, deactivate, active, error, library, chainId, account } = web3Context;\n\n useEffect(() => {\n if (activatingConnector && activatingConnector === connector) {\n setActivatingConnector(undefined);\n }\n }, [activatingConnector, connector]);\n\n const triedEager = useEagerConnect();\n useInactiveListener(!triedEager || !!activatingConnector);\n\n const loadBoardMembers = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const activeBoardMembers = await ManagementCompanyContract.methods\n .getActiveMCBoard()\n .call();\n\n setBoardMembers(activeBoardMembers.slice(1));\n }, [web3Context, ManagementCompanySC]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadBoardMembers();\n }\n\n }, [web3Context, ManagementCompanySC]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n web3Context.active && boardMembers.includes(web3Context.account) ? Management : \"\"\n }\n {\n web3Context.active && boardMembers.includes(web3Context.account) ? SPVWallet : \"\"\n }\n {\n web3Context.active && boardMembers.includes(web3Context.account) ? Developer : \"\"\n }\n Market\n Stake\n Governance\n \n {\n activate(MetaMask);\n }}>\n {!web3Context.active ? \"CONNECT WALLET\" : web3Context.account.substring(0,7) + \"...\" + web3Context.account.substring(web3Context.account.length - 6)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Addressbar;","import { useState, useEffect } from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport { MetaMask } from './connectors';\n\nexport function useEagerConnect() {\n const { activate, active } = useWeb3React();\n\n const [tried, setTried] = useState(false);\n\n useEffect(() => {\n MetaMask.isAuthorized().then((isAuthorized) => {\n if (isAuthorized) {\n activate(MetaMask, undefined, true).catch(() => {\n setTried(true);\n });\n } else {\n setTried(true);\n }\n });\n }, []); // intentionally only running on mount (make sure it's only mounted once :))\n\n // if the connection worked, wait until we get confirmation of that to flip the flag\n useEffect(() => {\n if (!tried && active) {\n setTried(true);\n }\n }, [tried, active]);\n\n return tried;\n}\n/**\n *\n * @param suppress\n */\nexport function useInactiveListener(suppress = false) {\n const { active, error, activate } = useWeb3React();\n\n useEffect(() => {\n const { ethereum } = window;\n if (ethereum && ethereum.on && !active && !error && !suppress) {\n const handleConnect = () => {\n console.log(\"Handling 'connect' event\");\n activate(MetaMask);\n };\n const handleChainChanged = (chainId) => {\n console.log(\"Handling 'chainChanged' event with payload\", chainId);\n activate(MetaMask);\n };\n const handleAccountsChanged = (accounts) => {\n console.log(\"Handling 'accountsChanged' event with payload\", accounts);\n if (accounts.length > 0) {\n activate(MetaMask);\n }\n };\n const handleNetworkChanged = (networkId) => {\n console.log(\"Handling 'networkChanged' event with payload\", networkId);\n activate(MetaMask);\n };\n\n ethereum.on('connect', handleConnect);\n ethereum.on('chainChanged', handleChainChanged);\n ethereum.on('accountsChanged', handleAccountsChanged);\n ethereum.on('networkChanged', handleNetworkChanged);\n\n return () => {\n if (ethereum.removeListener) {\n ethereum.removeListener('connect', handleConnect);\n ethereum.removeListener('chainChanged', handleChainChanged);\n ethereum.removeListener('accountsChanged', handleAccountsChanged);\n ethereum.removeListener('networkChanged', handleNetworkChanged);\n }\n };\n }\n }, [active, error, suppress, activate]);\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Spinner = () => (\n \n \n \n);\n\nconst StyledSpinner = styled.svg`\n display: block;\n animation: rotate 1s linear infinite;\n margin-top: 100px;\n margin-left: 50%;\n width: 50px;\n height: 50px;\n\n & .path {\n stroke: #F9AB12;\n stroke-linecap: round;\n animation: dash 1.5s ease-in-out infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n`;\n\nexport default Spinner;","export default __webpack_public_path__ + \"static/media/Close.47d5c9aa.svg\";","export default __webpack_public_path__ + \"static/media/DAILogo.1096719c.svg\";","export default __webpack_public_path__ + \"static/media/tether-usdt-logo.6dc09781.svg\";","export default __webpack_public_path__ + \"static/media/usd-coin-usdc-logo.f08e02b1.svg\";","import DAILogo from '../assets/DAILogo.svg';\nimport TetherLogo from '../assets/tether-usdt-logo.svg';\nimport USDCLogo from '../assets/usd-coin-usdc-logo.svg';\n\n\nconst CurrencyModal = () => {\n //TODO: Add New Token Here\n const TestToken = {\n address: process.env.REACT_APP_TOKEN_ADDRESS,\n name: \"Test Token\",\n decimal: 18,\n img: DAILogo\n };\n\n const USDCInfo = {\n address: process.env.REACT_APP_USDC_ADDRESS,\n name: \"USDC\",\n decimal: 6,\n img: USDCLogo\n };\n\n const USDTInfo = {\n address: process.env.REACT_APP_USDT_ADDRESS,\n name: \"USDT\",\n decimal: 6,\n img: TetherLogo\n };\n const DAIInfo = {\n address: process.env.REACT_APP_DAI_ADDRESS,\n name: \"DAI\",\n decimal: 18,\n img: DAILogo\n };\n\n return [TestToken, USDTInfo, USDCInfo, DAIInfo];\n}\n\nexport default CurrencyModal;","import React, {useState} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport CurrencyModal from \"./CurrencyModal\";\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: 400px;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst ProposalBox = styled.div`\n display: flex;\n flex-direction: column;\n width: 30%;\n align-items: flex-start;\n min-width: 334px;\n height: 200px;\n margin-left: 0px;\n margin-top: 0px;\n margin-right: 30px;\n margin-bottom: 30px;\n align-items: center;\n\n background: #FFFFFF;\n /* shadow 1 */\n \n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n border-radius: 6px;\n`\n\nconst ProposalBoxLabel = styled.div`\n width: 100%;\n height: 18px;\n margin-top: 45px;\n font-size: 26px;\n font-weight: bold;\n line-height: 100%;\n /* identical to box height, or 18px */\n\n text-align: center;\n`\n\nconst ProposalBoxButton = styled(motion.button)` \n justify-content: center;\n align-items: center;\n width: 60%;\n min-width: 238px;\n height: 50px;\n \n margin-top: 40px;\n\n /* yellow */\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 22px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n ${props => props.viewButton && css`\n border: 1px solid #F0C235;\n box-sizing: border-box; \n border-radius: 41px;\n background: transparent;\n color: #FAC44E;\n `}\n`\n\nconst SelectBox = styled.select`\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 14px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n \n option {\n color: black;\n background: white;\n display: flex;\n white-space: pre;\n min-height: 35px;\n \n padding: 14px 15px;\n }\n \n option[disabled]{\n display:none;\n }\n\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\n\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst CreateProposalModal = (props) => {\n const [modal, setModal] = useState(false);\n const [loading, setLoading] = useState(false);\n\n // For member edit proposal\n const [memberAddress, setMemberAddress] = useState(props.label === \"Remove Member\" && props.boardMembers !== undefined ? props.boardMembers[0] : \"\");\n\n // For money transfer request\n const [transferTo, setTransferTo] = useState();\n const [transferAmount, setTransferAmount] = useState();\n\n // For voting threshold proposal\n const [votingThreshold, setVotingThreshold] = useState(0);\n\n // For sc address change proposal\n const [newAddress, setNewAddress] = useState(\"\");\n\n const currencies = CurrencyModal();\n\n const [selectedCurrency, setCurrency] = useState(currencies[0].address.toString());\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n {props.label}\n Create Proposal\n {\n modal && (\n \n \n \n {props.header}\n \n \n { loading ? (): (\n \n {\n props.label !== \"Add Member\" ? (\"\") : (\n \n Member Address *\n setMemberAddress(e.target.value)} required>\n \n )\n }\n {\n props.label !== \"Remove Member\" ? (\"\") : (\n \n Member Address *\n setMemberAddress(e.target.value)} required>\n {props.boardMembers.map((member, index) => {\n return ()\n })}\n \n \n )\n }\n {\n props.label !== \"Change Voting Threshold\" ? (\"\") : (\n \n New Voting Threshold*\n setVotingThreshold(e.target.value)} required>\n \n )\n }\n {\n props.label !== \"Create Request\" ? (\"\") : (\n
\n \n Address Transferring To *\n setTransferTo(e.target.value)} required>\n \n \n Currency*\n {\n setCurrency(e.target.value);\n }} required>\n {currencies.map((currency, index) => {\n return ()\n })}\n \n \n \n Transfer Amount*\n setTransferAmount(e.target.value)} required>\n \n
\n )\n }\n {\n props.label !== \"Change SPV Wallet\" &&\n props.label !== \"Change Loan Originator\" &&\n props.label !== \"Change Land Registration\" ? (\"\") : (\n \n New Smart Contract Address *\n setNewAddress(e.target.value)} required>\n {props.currentAddress !== undefined ? (\n Current Address: {props.currentAddress}\n ) : (\"\")}\n \n )\n }\n
\n )}\n \n Cancel\n {\n setLoading(true);\n if(props.label === \"Add Member\") {\n props.action(memberAddress)\n .catch(()=>{\n setLoading(false);\n })\n }\n if(props.label === \"Remove Member\") {\n let toRemove = memberAddress;\n if(memberAddress === undefined) {\n toRemove = props.boardMembers[0];\n }\n props.action(toRemove)\n .catch(()=>{\n setLoading(false);\n })\n }\n if (props.label === \"Change Voting Threshold\") {\n props.action(votingThreshold)\n .catch(()=>{\n setLoading(false);\n })\n }\n if(props.label === \"Create Request\") {\n props.action(selectedCurrency, transferTo, transferAmount)\n .catch(()=>{\n setLoading(false);\n })\n }\n if(props.label === \"Change SPV Wallet\" ||\n props.label === \"Change Loan Originator\" ||\n props.label === \"Change Land Registration\") {\n props.action(newAddress)\n .catch(()=>{\n setLoading(false);\n })\n }\n }\n }primary>{props.label}\n \n
\n \n )\n }\n
\n
\n );\n};\n\nexport default CreateProposalModal;\n","import React, {useState} from 'react';\n\nimport Close from \"../assets/Close.svg\"\n\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport { Table } from 'reactstrap';\nimport App from \"./App\";\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 720px;\n width: 100%px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst PopupSubHeader = styled.div`\n width: 100%;\n text-align: left;\n font-size: 16px;\n line-height: 24px;\n font-weight: bold;\n margin-top: -30px;\n margin-bottom: 20px;\n align-items: flex-start;\n`\n\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: 400px;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n ${props => props.disabled && css`\n opacity: 0.2;\n `}\n\n \n cursor: pointer;\n`\n\nconst ProposalBox = styled.div`\n display: flex;\n flex-direction: column;\n width: 30%;\n align-items: flex-start;\n min-width: 334px;\n height: 200px;\n margin-left: 0px;\n margin-top: 0px;\n margin-right: 30px;\n margin-bottom: 30px;\n align-items: center;\n\n background: #FFFFFF;\n /* shadow 1 */\n \n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n border-radius: 6px;\n`\n\nconst ProposalBoxLabel = styled.div`\n width: 100%;\n height: 18px;\n margin-top: 45px;\n margin-bottom: 5px;\n font-size: 26px;\n font-weight: bold;\n line-height: 100%;\n /* identical to box height, or 18px */\n\n text-align: center;\n`\n\nconst ProposalBoxButton = styled(motion.button)` \n justify-content: center;\n align-items: center;\n width: 60%;\n min-width: 238px;\n height: 50px;\n \n margin-top: 40px;\n\n /* yellow */\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 22px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n ${props => props.viewButton && css`\n border: 1px solid #F0C235;\n box-sizing: border-box; \n border-radius: 41px;\n background: transparent;\n color: #FAC44E;\n `}\n`\n\nconst ApprovalStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #4AA900;\n border-radius: 40px;\n color: white;\n`\n\nconst PendingStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #FFCC2E;\n border-radius: 40px;\n color: white;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\n\nconst ProposalViewModal = (props) => {\n const [modal, setModal] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n {props.boxLabel}\n View Proposal\n {\n modal && (\n \n \n \n {props.header}\n \n \n { loading ? (): (\n \n {props.requestText === undefined ? (\"\") : ({props.requestText})}\n \n \n \n \n \n \n \n \n {props.boardMembers.map((member, index) => {\n return(\n \n \n \n \n )\n })}\n \n
\n Management Address\n \n Status\n
{member}{props.votingResults.includes(member) ? (APPROVED) : (PENDING)}
\n
\n )}\n \n Cancel\n {\n if(!props.votingResults.includes(props.caller)) {\n setLoading(true);\n props.action()\n .catch(()=>{\n setLoading(false);\n })\n }\n }\n }\n >Approve\n \n
\n \n )\n }\n
\n
\n );\n};\n\nexport default ProposalViewModal;\n","export default __webpack_public_path__ + \"static/media/HalfSquare.0dbe8341.svg\";","import React from 'react';\nimport styled from 'styled-components/macro'\nimport Logo from '../assets/Logo.svg';\nimport Aery from '../assets/Aeco.svg';\nimport Finance from '../assets/Finance.svg';\nimport Square from '../assets/Square.svg';\nimport HalfSquare from '../assets/HalfSquare.svg';\n\nconst StyledFooter = styled.div`\n /* Footer */\n width: 100%;\n height: 291px;\n left: 0;\n`\n\nconst Background = styled.div`\n /* Background */\n height: 291px;\n \n background: linear-gradient(0deg, #161616 0%, rgba(22, 22, 22, 0.73) 153.85%);\n box-shadow: 26px 24px 90px rgba(31, 26, 51, 0.13);\n`\n\nconst FooterLogo = styled.div`\n /* Frame 164 */\n width: 100%;\n height: 28px;\n display: flex;\n justify-content: center;\n`\n\nconst CopyRight = styled.div`\n width: 100%;\n height: 17px;\n padding-top: 46px;\n display: flex;\n justify-content: center;\n \n font-family: Lato;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 120%;\n /* identical to box height, or 17px */\n \n align-items: center;\n letter-spacing: 0.08em;\n \n color: #FFFFFF;\n \n opacity: 0.4;\n`\n\nconst Squares1 = styled.div`\n /* Vector 12 */\n \n width: 123px;\n height: 125px;\n margin-left: 5%;\n align-self: flex-start;\n\n`\n\nconst Squares2 = styled.div`\n /* Vector 11 */\n \n width: 123px;\n height: 125px;\n margin-left: auto;\n margin-right: 5%;\n align-self: flex-end;\n`\n\nconst Squares3 = styled.div`\n /* Vector 8 */\n \n width: 123px;\n height: 158px;\n margin-right: 15%;\n align-self: flex-start;\n`\n\nconst Squares4 = styled.div`\n /* Vector 9 */\n \n width: 123px;\n height: 158px;\n margin-left: 15%;\n align-self: flex-end;\n`\n\nconst SquareRow = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n`\n\nconst MiddleArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: -30px;\n`\n\nconst LogoRow = styled.a`\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto;\n \n :hover {\n cursor: pointer;\n }\n`\nconst LogoIcon = styled.div`\n transition: transform 0.3s ease;\n :hover {\n transform: rotate(-25deg);\n }\n`\n\nconst AerySVG = styled.div`\n margin-left: 8px;\n`\n\nconst FinanceSVG = styled.div`\n margin-left: 8px;\n`\n\nconst Footer = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Copyright © Laeco Real Estate Blockchain 2021. All rights reserved\n \n \n \n \n \n\n \n \n );\n}\n\nexport default Footer;","import React, {useCallback, useEffect, useState} from 'react';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\nimport {useWeb3React} from \"@web3-react/core\";\nimport styled, {css} from 'styled-components/macro'\nimport Spinner from \"./Spinner\";\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport CreateProposalModal from \"./CreateProposalModal\";\nimport ProposalViewModal from \"./ProposalViewModal\";\nimport Footer from \"./Footer\";\n\nconst DashboardPage = styled.div `\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: Lato;\n font-style: normal;\n z-index:2;\n min-height: 100vh;\n`\n\nconst SubTitle = styled.div`\n width: 80%;\n height: 25px;\n margin-left: 10%;\n margin-top: 116px;\n margin-bottom: 20px;\n padding: 0px;\n\n font-weight: bold;\n font-size: 14px;\n line-height: 180%;\n color: #000000;\n \n opacity: 0.4;\n`\n\nconst Title = styled.div`\n height: 54px;\n\n font-weight: bold;\n font-size: 30px;\n line-height: 180%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n`\n\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n\n width: 80%;\n min-width: 1444px;\n margin-left: 10%;\n margin-top: 14px;\n`\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n margin-top: 34px;\n flex-wrap: wrap;\n`\n\nconst TableContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n z-index: 2;\n\n width: 49%;\n min-width: 533px;\n`\n\nconst VotingThresholdBox = styled(motion.button)`\n display: flex;\n justify-content: center;\n\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n width: 45%;\n min-width: 502px;\n height: 500px;\n border-radius: 6px;\n border: none;\n margin-left: 86px;\n`\n\nconst VotingThresholdLabel = styled.div`\n width: 100%;\n margin-top: 160px;\n\n height: 72px;\n font-size: 50px;\n font-weight: bold;\n line-height: 180%;\n \n color: #FFFFFF;\n`\n\nconst GapArea = styled.div`\n height: 60px;\n`\n\nconst StyledTable = styled.table`\n border: none;\n border-collapse: separate;\n border-spacing: 0px 20px;\n width: 100%;\n min-width: 533px;\n font-weight: bold;\n\n thead {\n width: 40%;\n min-width: 533px;\n font-weight: bold;\n font-size: 20px;\n line-height: 180%;\n text-decoration: underline;\n }\n \n td, th {\n min-width: 400px;\n width: 80%;\n left: 36px;\n\n border: none;\n min-width: 250px;\n text-align: left;\n padding: 0px 50px;\n } \n\n td {\n text-align: left;\n }\n \n td #text {\n display: inline-block;\n margin-left: 20px;\n vertical-align: 65%;\n }\n\n tbody tr {\n width: 100%;\n height: 66px;\n \n vertical-align: middle;\n \n background: #FFFFFF;\n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n \n :hover {\n background-color: #f5f5f5;\n }\n }\n`;\n\nconst AddressZero = '0x0000000000000000000000000000000000000000';\n\nconst MCAdminPage = (() => {\n const web3Context = useWeb3React();\n const [ManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n const [boardMembers, setBoardMembers] = useState([]);\n const [minApprovalRequired, setMinApprovalRequired] = useState(0);\n const [addMemberProposal, setAddMemberProposal] = useState(\"\");\n const [removeMemberProposal, setRemoveMemberProposal] = useState(\"\");\n const [voteThresholdProposal, setVoteThresholdProposal] = useState(0);\n const [SPVWalletAddressProposal, setSPVWalletAddressProposal] = useState(\"\");\n const [LOSCAddressProposal, setLOSCAddressProposal] = useState(\"\");\n const [LRSCAddressProposal, setLRSCAddressProposal] = useState(\"\");\n const [newMemberVotingFlags, setNewMemberVotingFlags] = useState([]);\n const [removeMemberVotingFlags, setRemoveMemberVotingFlags] = useState([]);\n const [thresholdVotingFlags, setThresholdVotingFlags] = useState([]);\n const [SPVWalletAddressVotingFlags, setSPVWalletAddressVotingFlags] = useState([]);\n const [LOSCAddressVotingFlags, setLOSCAddressVotingFlags] = useState([]);\n const [LRSCAddressVotingFlags, setLRSCAddressVotingFlags] = useState([]);\n const [currentLRSCAddress, setCurrentLRSCAddress] = useState(\"\");\n const [currentLOSCAddress, setCurrentLOSCAddress] = useState(\"\");\n const [currentSPVAddress, setCurrentSPVAddress] = useState(\"\");\n\n\n const loadBoardMembers = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const activeBoardMembers = await ManagementCompanyContract.methods\n .getActiveMCBoard()\n .call();\n\n setBoardMembers(activeBoardMembers.slice(1));\n }, [web3Context, ManagementCompanySC]);\n\n const loadAdminProposals = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const currentLOSC = await ManagementCompanyContract.methods\n .LOSCAddress()\n .call();\n setCurrentLOSCAddress(currentLOSC);\n\n const currentLRSC = await ManagementCompanyContract.methods\n .LRSCAddress()\n .call();\n setCurrentLRSCAddress(currentLRSC);\n\n const currentSPV = await ManagementCompanyContract.methods\n .SPVWalletAddress()\n .call();\n setCurrentSPVAddress(currentSPV);\n\n const pendingMCBoardMember = await ManagementCompanyContract.methods\n .pendingMCBoardMember()\n .call();\n setAddMemberProposal(pendingMCBoardMember);\n\n const pendingMinApprovalRequired = await ManagementCompanyContract.methods\n .pendingMinApprovalRequired()\n .call();\n setVoteThresholdProposal(pendingMinApprovalRequired);\n\n const pendingRemoveMember = await ManagementCompanyContract.methods\n .pendingRemoveMember()\n .call();\n setRemoveMemberProposal(pendingRemoveMember);\n\n const pendingSPVWallet = await ManagementCompanyContract.methods\n .pendingSPVWalletAddress()\n .call();\n setSPVWalletAddressProposal(pendingSPVWallet);\n\n const pendingLOSCAddressProposal = await ManagementCompanyContract.methods\n .pendingLOSCAddress()\n .call();\n setLOSCAddressProposal(pendingLOSCAddressProposal);\n\n const pendingLRSCAddressProposal = await ManagementCompanyContract.methods\n .pendingLRSCAddress()\n .call();\n setLRSCAddressProposal(pendingLRSCAddressProposal);\n\n const newMemberVotingFlags = await ManagementCompanyContract.methods\n .getBoardMemberVoteFlags()\n .call();\n setNewMemberVotingFlags(newMemberVotingFlags);\n\n const thresholdVotingFlags = await ManagementCompanyContract.methods\n .getMinApprovalRequiredVoteFlags()\n .call();\n setThresholdVotingFlags(thresholdVotingFlags);\n\n const removeMemberVotingFlags = await ManagementCompanyContract.methods\n .getRemoveMemberVoteFlags()\n .call();\n setRemoveMemberVotingFlags(removeMemberVotingFlags);\n\n const SPVWalletAddressVotingFlags = await ManagementCompanyContract.methods\n .getSPVWalletAddressVoteFlags()\n .call();\n setSPVWalletAddressVotingFlags(SPVWalletAddressVotingFlags);\n\n const LOSCAddressVotingFlags = await ManagementCompanyContract.methods\n .getLOSCAddressVoteFlags()\n .call();\n setLOSCAddressVotingFlags(LOSCAddressVotingFlags);\n\n const LRSCAddressVotingFlags = await ManagementCompanyContract.methods\n .getLRSCAddressVoteFlags()\n .call();\n setLRSCAddressVotingFlags(LRSCAddressVotingFlags);\n\n // load current voting threshold\n const votingThreshold = await ManagementCompanyContract.methods\n .minApprovalRequired()\n .call();\n setMinApprovalRequired(votingThreshold);\n\n }, [web3Context, ManagementCompanySC]);\n\n const proposeNewAdmin = useCallback(async(newMemberAddress) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeNewAdmin(newMemberAddress.toString())\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const proposeRemoveAdmin = useCallback(async(boardMemberAddress) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeRemoveAdmin(boardMemberAddress.toString())\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const proposeNewApprovalRequiredNumber = useCallback(async(newThreshold) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeNewApprovalRequiredNumber(newThreshold)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const proposeNewSPVWalletAddress = useCallback(async(newWalletAddress) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeNewSPVWalletAddress(newWalletAddress)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const proposeNewLOSCAddress = useCallback(async(newLOSCAddress) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeNewLOSCAddress(newLOSCAddress)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const proposeNewLRSCAddress = useCallback(async(newLRSCAddress) => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .proposeNewLRSCAddress(newLRSCAddress)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveNewAdmin = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteNewAdmin()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveNewApprovalRequiredNumber = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteNewApprovalRequiredNumber()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveAdminRemoval = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteRemoveAdmin()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveNewSPVWalletAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteNewSPVWalletAddress()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveNewLOSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteNewLOSCAddress()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n const approveNewLRSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n await ManagementCompanyContract.methods\n .voteNewLRSCAddress()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, ManagementCompanySC]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadBoardMembers();\n loadAdminProposals();\n }\n },[web3Context, ManagementCompanySC, loadBoardMembers, loadAdminProposals]);\n\n return (\n \n {\n web3Context.account === undefined ? (\n \n \n ) : (\n Management > Manage Board Members\n
MCAdmin Wallet Address: {process.env.REACT_APP_MCADMIN_ADDRESS}
\n \n Current Board Members\n \n \n \n \n \n \n Management Address\n \n \n \n \n {web3Context.account === undefined ? () : boardMembers.map((member, index) => {\n return (\n \n {member}\n \n )\n })}\n \n \n \n \n \n Voting Threshold\n
\n {minApprovalRequired}\n
\n \n
\n
\n \n Create New Proposal\n \n \n \n \n \n \n \n \n \n \n \n Current Proposal\n \n {\n addMemberProposal === AddressZero ? (\"\") : (\n \n )\n }\n {\n removeMemberProposal === AddressZero ? (\"\") : (\n \n )\n }\n {\n voteThresholdProposal.toString() === \"0\" ? (\"\") : (\n \n )\n }\n {\n SPVWalletAddressProposal.toString() === AddressZero ? (\"\") : (\n \n )\n }\n {\n LOSCAddressProposal.toString() === AddressZero ? (\"\") : (\n \n )\n }\n {\n LRSCAddressProposal.toString() === AddressZero ? (\"\") : (\n \n )\n }\n \n \n
\n )\n }\n
\n );\n});\n\nexport default MCAdminPage;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst AddDeveloperButton = styled(motion.button)` \n display: block;\n justify-content: center;\n align-items: center;\n position: absolute;\n width: 167px;\n height: 39px;\n left: 80%;\n top: 168px;\n \n\n /* yellow */\n\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 16px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n \n @media all and (max-width: 1444px) {\n margin-left: 0px;\n left: 1155px;\n}\n\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: 400px;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 10px 16px;\n position: static;\n width: 91%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst AddDeveloperModal = (props) => {\n const [modal, setModal] = useState(false);\n const [companyName, setCompanyName] = useState();\n const [location, setLocation] = useState();\n const [note, setNote] = useState(\"\");\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n 十 Add Developer\n \n {\n modal && (\n \n \n \n New Developer Information\n \n \n { loading ? (): (\n \n \n Developer Name *\n setCompanyName(e.target.value)} required>\n \n \n Location*\n setLocation(e.target.value)} required>\n \n \n setNote(e.target.value)} placeholder=\"Note\" type=\"text\" cols=\"\"/>\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(companyName, location, note).catch(()=>{\n setLoading(false);\n })}\n }primary>Add developer\n \n \n \n )\n }\n \n );\n};\n\nexport default AddDeveloperModal;\n","export default __webpack_public_path__ + \"static/media/Delete.44b0ce32.svg\";","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport Delete from '../assets/Delete.svg';\nimport {motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst LoadingOverlay = styled.div`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n\n background: rgba(0, 0, 0, 0);\n text-align: center;\n z-index: 999;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst ContentText = styled.div`\n font-size: 18px;\n line-height:24px;\n font-weight: bold;\n`\n\nconst NoteText = styled.div`\n font-size: 16px;\n line-height:24px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst FlexActionColumn = styled.a`\n min-width: 125px;\n width: 20%;\n \n cursor: pointer;\n`\n\nconst DeleteDeveloperConfirmationModal = (props) => {\n const [modal, setModal] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n {\n modal && (\n \n \n \n {props.header}\n \n \n { loading ? (\n ): (\n \n {props.message}\n
\n {props.note}\n
\n )}\n \n Cancel\n {\n setLoading(true);\n props.action(props.developerId)\n .catch(()=>{\n setLoading(false);\n })\n }\n } primary>{props.actionLabel}\n \n
\n \n )\n }\n
\n );\n}\n\nexport default DeleteDeveloperConfirmationModal;\n","export default __webpack_public_path__ + \"static/media/Update.8b631015.svg\";","import React, {useState} from 'react';\n\nimport Update from '../assets/Update.svg';\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: 400px;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 10px 16px;\n position: static;\n width: 91%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;const \n\n border: none;\n resize: none; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst FlexActionColumn = styled.a`\n min-width: 125px;\n width: 20%;\n \n cursor: pointer;\n`\n\nconst UpdateDeveloperModal = (props) => {\n const [modal, setModal] = useState(false);\n const [companyName, setCompanyName] = useState(props.companyName);\n const [location, setLocation] = useState(props.location);\n const [note, setNote] = useState(props.note);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n \n {\n modal && (\n \n \n \n Developer Information\n \n \n { loading ? (): (\n \n \n Developer Name *\n setCompanyName(e.target.value)} value={companyName || ''} required>\n \n \n Location*\n setLocation(e.target.value)} value={location || ''} required>\n \n \n setNote(e.target.value)} value={note || ''} placeholder=\"Note\" type=\"text\" cols=\"\"/>\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(props.developerId, companyName, location, note)\n .catch(()=>{\n setLoading(false);\n })\n }\n }primary>Update developer\n \n \n \n )\n }\n \n \n );\n};\n\nexport default UpdateDeveloperModal;\n","import {useMemo, useState} from \"react\";\n\nconst useSortableData = (items, config = null) => {\n const [sortConfig, setSortConfig] = useState(config);\n\n const sortedItems = useMemo(() => {\n let sortableItems = [...items];\n if (sortConfig !== null) {\n sortableItems.sort((a, b) => {\n if (a[sortConfig.key] < b[sortConfig.key]) {\n return sortConfig.direction === 'ascending' ? -1 : 1;\n }\n if (a[sortConfig.key] > b[sortConfig.key]) {\n return sortConfig.direction === 'ascending' ? 1 : -1;\n }\n return 0;\n });\n }\n return sortableItems;\n }, [items, sortConfig]);\n\n const requestSort = key => {\n let direction = 'ascending';\n if (sortConfig && sortConfig.key === key && sortConfig.direction === 'ascending') {\n direction = 'descending';\n }\n setSortConfig({ key, direction });\n }\n\n return { items: sortedItems, requestSort, sortConfig};\n}\n\nexport default useSortableData;","import React, {useCallback, useEffect, useState} from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport LandRegistration from '../artifacts/src/contracts/LandRegistration.sol/LandRegistration';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany';\nimport companyLogo from '../assets/DAILogo.svg';\nimport Spinner from \"./Spinner\";\nimport AddDeveloperModal from \"./AddDeveloperModal\";\nimport styled from 'styled-components/macro'\nimport DeleteDeveloperConfirmationModal from \"./DeleteDeveloperConfirmationModal\";\nimport UpdateDeveloperModal from \"./UpdateDeveloperModal\";\nimport useSortableData from \"./UseSortableData\";\nimport {NavLink} from \"react-router-dom\";\n\nconst DashboardPage = styled.div`\n width: 100%;\n font-family: Lato;\n font-style: normal;\n`\n\nconst SubTitle = styled.div`\n position: absolute;\n width: 296px;\n height: 25px;\n left: 10%;\n top: 116px;\n padding: 0px;\n\n font-weight: bold;\n font-size: 14px;\n line-height: 180%;\n color: #000000;\n \n opacity: 0.4;\n`\n\nconst Title = styled.div`\n position: absolute;\n width: 294px;\n height: 54px;\n left: 10%;\n top: 168px;\n\n font-weight: bold;\n font-size: 30px;\n line-height: 180%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n`\n\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n justify-content: center;\n z-index: 1;\n\n width: 80%;\n margin-left: 10%;\n margin-top: 188px;\n`\n\nconst TableContainer = styled.div`\n width: 100%;\n min-height: 60vh;\n`\n\nconst StyledTable = styled.table`\n border: none;\n border-collapse: separate;\n border-spacing: 0px 20px;\n width: 100%;\n font-weight: bold;\n\n thead {\n width: 100%;\n font-weight: bold;\n font-size: 20px;\n line-height: 180%;\n text-decoration: underline;\n }\n \n td, th {\n border: none;\n width: 20%;\n text-align: left;\n padding-left: 20px;\n }\n\n td {\n text-align: left;\n }\n\n tbody tr {\n width: 100%;\n height: 66px;\n \n vertical-align: middle;\n \n background: #FFFFFF;\n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n \n :hover {\n background-color: #f5f5f5;\n }\n }\n \n`;\n\nconst NavLinkText = styled.div`\n display: inline;\n font-size: 20px;\n margin-left: 20px;\n vertical-align: 50%;\n`\n\nconst StyledNavLink = styled(NavLink)`\n border: none;\n background: transparent;\n color: black;\n\n text-decoration: none;\n\n cursor: pointer;\n \n :hover {\n \n }\n`\n\nconst HeaderColumn = styled.button`\n font-weight: bold;\n font-size: 20px;\n border: none;\n background: transparent;\n text-decoration: underline;\n \n cursor: pointer;\n`\n\n//TODO: WHY IS DEVELOPER LOAN LIMIT HAVE A HARD CODED CURRENCY BASE?\nconst CURRENCYBASE = 10 ** 18;\n\nconst DeveloperDashboardPage = () => {\n const web3Context = useWeb3React();\n const [loading, setLoading] = useState(true);\n const [landRegistrationSC, setLandRegistrationSC] = useState({\n address: process.env.REACT_APP_LANDREGISTRATION_ADDRESS,\n abi: LandRegistration.abi\n });\n const [activeDevelopers, setActiveDevelopers] = useState({\n activeDeveloperIDs: [],\n activeDeveloperInfos: [],\n });\n\n const { items, requestSort, sortConfig } = useSortableData(activeDevelopers.activeDeveloperInfos);\n\n const addNewDeveloper = useCallback(async (companyName, location, note) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .addNewDeveloper(companyName.toString(), location.toString(), note.toString())\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const updateDeveloper = useCallback(async (developerId, companyName, location, note) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .updateDeveloper(developerId, companyName.toString(), location.toString(), note.toString())\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const deleteDeveloper = useCallback(async (developerId) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n\n await landRegistrationContract.methods\n .deleteDeveloper(developerId)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const getActiveDevelopers = useCallback(async() => {\n\n let activeDeveloperIDs = [];\n let activeDeveloperInfos = [];\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n activeDeveloperIDs = await landRegistrationContract.methods\n .getActiveDeveloperIDs()\n .call();\n const totalActiveDeveloperID = activeDeveloperIDs.length;\n let newDeveloperArray = [];\n let newDeveloperObject = {};\n // load developer info by each ID\n\n for(var i = 1; i < totalActiveDeveloperID; i++) {\n newDeveloperArray = await landRegistrationContract.methods.getDeveloperByID(activeDeveloperIDs[i]).call();\n newDeveloperObject = {\n developerID: activeDeveloperIDs[i],\n companyName: newDeveloperArray[0],\n location: newDeveloperArray[1],\n note: newDeveloperArray[2],\n // uint developerID;\n loanLimit: newDeveloperArray[4],\n loanBalance: newDeveloperArray[5]\n }\n activeDeveloperInfos.push(newDeveloperObject);\n }\n\n setActiveDevelopers({activeDeveloperIDs, activeDeveloperInfos});\n }, [landRegistrationSC, web3Context]);\n\n const loadSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const MCAdminContract = new ethLibrary.Contract(\n ManagementCompany.abi,\n process.env.REACT_APP_MCADMIN_ADDRESS\n );\n\n const LRSC = await MCAdminContract.methods.LRSCAddress().call();\n\n setLandRegistrationSC({\n address: LRSC,\n abi: LandRegistration.abi\n });\n\n }, [web3Context]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadSCAddress();\n getActiveDevelopers();\n setLoading(false);\n }\n },[web3Context]);\n\n return (\n \n Developer > Manage Developer\n Developer List\n \n \n \n \n \n \n \n requestSort('companyName')}>Developer\n {sortConfig !== null && sortConfig.key === 'companyName' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('location')}>Location\n {sortConfig !== null && sortConfig.key === 'location' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('loanLimit')}>Loan Limit\n {sortConfig !== null && sortConfig.key === 'loanLimit' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('loanBalance')}>Loan Balance\n {sortConfig !== null && sortConfig.key === 'loanBalance' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n Action\n \n \n \n \n {loading ? () : items.map((developer, index) => {\n return (\n \n {developer.companyName}\n {developer.location}\n ${developer.loanLimit}\n ${developer.loanBalance}\n \n \n \n \n \n )\n })}\n \n \n \n \n );\n};\n\nexport default DeveloperDashboardPage;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst AddLandButton = styled(motion.button)` \n display: block;\n justify-content: center;\n align-items: center;\n position: absolute;\n width: 167px;\n height: 39px;\n left: 80%;\n top: 358px;\n \n\n /* yellow */\n\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 16px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n \n @media all and (max-width: 1444px) {\n margin-left: 0px;\n left: 1155px;\n}\n\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: 420px;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 15px 16px;\n \n position: static;\n width: 90%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n \n ${props => props.primary && css`\n width: 95%;\n background: #FFFFFF;\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n `}\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst AddLandModal = (props) => {\n const [modal, setModal] = useState(false);\n const [landPropertyID, setLandPropertyID] = useState(\"\");\n const [landAddress, setLandAddress] = useState(\"\");\n const [zoning, setZoning] = useState(\"\");\n const [note, setNote] = useState(\"\");\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n 十 Add Land\n \n {\n modal && (\n \n \n \n New Land Information\n \n \n { loading ? (): (\n \n \n Land Property ID*\n { setLandPropertyID(e.target.value)}\n } required>\n \n \n Address*\n setLandAddress(e.target.value)} required>\n \n \n Zoning*\n setZoning(e.target.value)} required>\n \n \n setNote(e.target.value)} placeholder=\"Note\" type=\"text\" cols=\"\"/>\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(landPropertyID, landAddress, zoning, note).catch(()=>{\n setLoading(false);\n })}\n }primary>Add Land\n \n \n \n )\n }\n \n );\n};\n\nexport default AddLandModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst UpdateLandButton = styled(motion.button)` \n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 25%;\n height: 30px;\n padding: 4px 12px;\n margin: 3px;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 15px 16px;\n \n position: static;\n width: 90%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n \n ${props => props.primary && css`\n width: 95%;\n background: #FFFFFF;\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n `}\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst AddLandModal = (props) => {\n const [modal, setModal] = useState(false);\n const [landID, setLandID] = useState(props.landID);\n const [landPropertyID, setLandPropertyID] = useState(props.landPropertyID);\n const [landAddress, setLandAddress] = useState(props.landAddress);\n const [zoning, setZoning] = useState(props.landZoning);\n const [note, setNote] = useState(props.note);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n UPDATE\n \n {\n modal && (\n \n \n \n Land Information: {props.landAddress.length <= 30 ? props.landAddress : props.landAddress.substring(0,30) + \"...\"}\n \n \n { loading ? (): (\n \n \n Land Property ID*\n { setLandPropertyID(e.target.value)}\n }\n value={landPropertyID || ''}\n required/>\n \n \n Address*\n setLandAddress(e.target.value)}\n value={landAddress || ''}\n required/>\n \n \n Zoning*\n setZoning(e.target.value)}\n value={zoning || ''}\n required/>\n \n \n setNote(e.target.value)}\n placeholder=\"Note\"\n type=\"text\"\n cols=\"\"\n value={note || ''} />\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(landID, landPropertyID, landAddress, zoning, note).catch(()=>{\n setLoading(false);\n })}\n }primary>Update Land\n \n \n \n )\n }\n \n );\n};\n\nexport default AddLandModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst UpdateLandButton = styled(motion.button)` \n width: 25%; \n height: 30px;\n padding: 4px 12px;\n margin: 3px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst NoteText = styled.div`\n font-size: 16px;\n line-height:24px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst LandAppraisalModal = (props) => {\n const [modal, setModal] = useState(false);\n const [landID, setLandID] = useState(props.landID);\n const [appraiseValue, setAppraiseValue] = useState(props.appraiseValue);\n const [collateralFactor, setCollateralFactor] = useState(props.collateralFactor);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n APPRAISE\n \n {\n modal && (\n \n \n \n Land Information: {props.landAddress.length <= 30 ? props.landAddress : props.landAddress.substring(0,30) + \"...\"}\n \n \n { loading ? (): (\n \n \n Appraisal Value*\n {\n setAppraiseValue(e.target.value)\n }\n }\n value={appraiseValue || ''}\n required />\n \n \n Collateral Factor*\n setCollateralFactor(e.target.value)}\n value={collateralFactor || ''}\n type=\"number\"\n min={0}\n max={100}\n required/>\n \n Note: Appraisal value and collateral factor must be approved by Board Members}\n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(landID, appraiseValue, collateralFactor).catch(()=>{\n setLoading(false);\n })}\n }primary>Update Land\n \n \n \n )\n }\n \n );\n};\n\nexport default LandAppraisalModal;\n","import React, {useState} from 'react';\n\nimport Close from \"../assets/Close.svg\"\n\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport { Table } from 'reactstrap';\n\nconst ApproveAppraisalButton = styled(motion.button)` \n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 25%;\n height: 30px;\n padding: 4px 12px;\n margin: 3px;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 720px;\n width: 100%px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n ${props => props.disabled && css`\n opacity: 0.2;\n `}\n\n \n cursor: pointer;\n`\n\nconst ApprovalStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #4AA900;\n border-radius: 40px;\n color: white;\n`\n\nconst PendingStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #FFCC2E;\n border-radius: 40px;\n color: white;\n`\n\n\n\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\n\nconst AppraisalStatusViewModal = (props) => {\n const [modal, setModal] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n APPROVE\n \n {\n modal && (\n \n \n \n {props.header}\n \n \n { loading ? (): (\n \n \n \n \n \n \n \n \n \n {props.boardMembers.map((member, index) => {\n return(\n \n \n \n \n )\n })}\n \n
\n Management Address\n \n Status\n
{member}{props.votingResults.includes(member) || props.landIsReady ? (APPROVED) : (PENDING)}
\n
\n )}\n \n Cancel\n {\n if(!props.votingResults.includes(props.caller) && !props.landIsReady) {\n setLoading(true);\n props.action(props.landID)\n .catch(()=>{\n setLoading(false);\n })\n }\n }\n }\n >Approve\n \n
\n \n )\n }\n
\n );\n};\n\nexport default AppraisalStatusViewModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst DeleteLandButton = styled(motion.button)` \n width: 25%; \n height: 30px;\n padding: 4px 12px;\n margin: 3px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\n\nconst LoadingOverlay = styled.div`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n\n background: rgba(0, 0, 0, 0);\n text-align: center;\n z-index: 999;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst ContentText = styled.div`\n font-size: 18px;\n line-height:24px;\n font-weight: bold;\n`\n\nconst NoteText = styled.div`\n font-size: 16px;\n line-height:24px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst FlexActionColumn = styled.a`\n min-width: 125px;\n width: 20%;\n \n cursor: pointer;\n`\n\nconst DeleteLandConfirmationModal = (props) => {\n const [modal, setModal] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n DELETE\n {\n modal && (\n \n \n \n {props.header}\n \n \n { loading ? (\n ): (\n \n {props.message}\n
\n {props.note}\n
\n )}\n \n Cancel\n {\n setLoading(true);\n props.action(props.landID)\n .catch(()=>{\n setLoading(false);\n })\n }\n } primary>{props.actionLabel}\n \n
\n \n )\n }\n
\n );\n}\n\nexport default DeleteLandConfirmationModal;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport styled from 'styled-components/macro'\nimport {useWeb3React} from \"@web3-react/core\";\nimport { useParams } from \"react-router-dom\";\nimport moment from \"moment\";\n\nimport LandRegistration from '../artifacts/src/contracts/LandRegistration.sol/LandRegistration';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\nimport LoanOriginator from '../artifacts/src/contracts/LoanOriginator.sol/LoanOriginator'\nimport LoanPool from '../artifacts/src/contracts/LoanPool.sol/LoanPool'\n\nimport companyLogo from '../assets/DAILogo.svg';\nimport Spinner from \"./Spinner\";\n\nimport AddLandModal from \"./AddLandModal\";\nimport useSortableData from \"./UseSortableData\";\nimport UpdateLandModal from \"./UpdateLandInfoModal\";\nimport LandAppraisalModal from \"./UpdateLandAppraisalModal\";\nimport AppraisalStatusViewModal from \"./AppraisalStatusViewModal\";\nimport DeleteLandConfirmationModal from \"./DeleteLandConfirmationModal\";\nimport CurrencyModal from \"./CurrencyModal\";\n\nvar BigNumber = require('big-number');\n\nconst DashboardPage = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: Lato;\n font-style: normal;\n z-index: 1;\n min-height: 100vh;\n`\n\nconst SubTitle = styled.div`\n position: absolute;\n width: 296px;\n height: 25px;\n left: 10%;\n top: 116px;\n padding: 0px;\n\n font-weight: bold;\n font-size: 17px;\n line-height: 180%;\n color: #F9FAFB;\n \n opacity: 0.4;\n`\n\nconst Title = styled.div`\n height: 54px;\n\n font-weight: bold;\n font-size: 40px;\n line-height: 180%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n`\n\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n justify-content: center;\n\n width: 80%;\n margin-left: 10%;\n margin-top: 40px;\n`\n\nconst UpperTableContainer = styled.div`\n width: 100%;\n min-height: 600px;\n`\n\nconst LowerTableContainer = styled.div`\n width: 100%;\n min-height: 300px;\n`\n\nconst StyledTable = styled.table`\n border: none;\n border-collapse: separate;\n border-spacing: 0px 20px;\n width: 100%;\n min-width: 800px;\n font-weight: bold;\n\n thead {\n width: 100%;\n font-weight: bold;\n font-size: 20px;\n line-height: 180%;\n text-decoration: underline;\n }\n \n td, th {\n border: none;\n text-align: left;\n padding: 0px 10px;\n }\n\n tbody tr {\n width: 100%;\n height: 66px;\n \n background: #FFFFFF;\n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n \n :hover {\n background-color: #f5f5f5;\n }\n }\n`;\n\nconst HeaderColumn = styled.button`\n font-weight: bold;\n font-size: 20px;\n border: none;\n background: transparent;\n text-decoration: underline;\n \n cursor: pointer;\n`\nconst TitleNamePart = styled.div`\n position: absolute;\n width: 400px;\n font-style: normal;\n font-weight: bold;\n font-size: 24px;\n line-height: 100%;\n left: 10%;\n top: 197px;\n\n color: #FFFFFF;\n\n`\n\nconst TitleInfoPart = styled.div`\n position: absolute;\n display: flex;\n flex-direction: column;\n line-height: 180%;\n right: 0;\n top: 197px;\n width: 50vw;\n height: 70px;\n \n @media all and (max-width: 1444px) {\n right: auto;\n padding-left: 0;\n margin-left: 567px;\n width: 800px;\n}\n`\n\nconst TitleInfoHeaderRow = styled.div`\n display: flex;\n flex-direction: row;\n font-weight: bold;\n font-size: 18px;\n font-style: normal;\n color: rgba(255, 255, 255, 0.4);\n line-height: 18px;\n`\n\nconst TitleInfoRow = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 8px;\n font-weight: bold;\n font-size: 24px;\n font-style: normal;\n color: #FFFFFF;\n line-height: 30px;\n`\n\n\nconst TitleInfoItem = styled.div`\n width: 33%;\n`\n\nconst HeaderText = styled.div`\n display: inline-block;\n margin-left: 15px;\n vertical-align: 50%;\n`\n\nconst ButtonRow = styled.div`\n display: flex;\n flex-direction: row;\n`\n\nconst ApprovalStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #4AA900;\n border-radius: 40px;\n color: white;\n`\n\nconst PendingStatus = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 4px 16px;\n \n position: static;\n width: 93px;\n height: 25px;\n \n background: #FFCC2E;\n border-radius: 40px;\n color: white;\n`\n\nconst DeveloperInfoPage = () => {\n const web3Context = useWeb3React();\n const [loading, setLoading] = useState(true);\n const [landRegistrationSC, setLandRegistrationSC] = useState({\n address: process.env.REACT_APP_LANDREGISTRATION_ADDRESS,\n abi: LandRegistration.abi\n });\n const [ManagementCompanySC, setManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n const [LoanOriginatorSC, setLoanOriginatorSC] = useState({\n address: process.env.REACT_APP_LOANORIGINATOR,\n abi: LoanOriginator.abi\n });\n\n const currencies = CurrencyModal();\n\n const [boardMembers, setBoardMembers] = useState([]);\n\n const [companyName, setCompanyName] = useState(\"\");\n const [location, setLocation] = useState(\"\");\n const [note, setNote] = useState(\"\");\n const [loanLimit, setLoanLimit] = useState(0);\n const [loanBalance, setLoanBalance] = useState(0);\n\n const [activeLands, setActiveLands] = useState([]);\n const [activeLoanEntities, setActiveLoanEntities] = useState();\n\n const { developerId } = useParams();\n\n const { items, requestSort, sortConfig } = useSortableData(activeLands);\n\n const loadLoanEntities = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n const loanOriginatorContract = new ethLibrary.Contract(\n LoanOriginatorSC.abi,\n LoanOriginatorSC.address\n );\n\n const UniqueLoanEntityIds = await landRegistrationContract.methods\n .getMyUniqueLoanEntityID(developerId)\n .call();\n\n let loanPoolId;\n let loanEntityId;\n\n let loanPoolAddress;\n let LoanPoolContract;\n\n let loanEntityInfoArray = [];\n let newLoanEntityObject = {};\n let loadedDetailsArray = [];\n\n for(var i = 1; i < UniqueLoanEntityIds.length; i++) {\n if(UniqueLoanEntityIds[i] === \"0\")\n {\n continue;\n }\n\n // eslint-disable-next-line no-undef\n const uintNumber = BigInt.asIntN(256, UniqueLoanEntityIds[i]);\n\n loanPoolId = uintNumber >> 128n;\n // eslint-disable-next-line no-undef\n loanEntityId = uintNumber & ((BigInt.asIntN(256, 1n) << 128n) - 1n);\n\n loanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolId)\n .call();\n\n LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n loanPoolAddress\n );\n\n loanEntityInfoArray = await LoanPoolContract.methods\n .getLoanEntityViewByLoanEntityID(loanEntityId)\n .call();\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n const currency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = currency === undefined ? 18 : currency.decimal;\n\n newLoanEntityObject = {\n loanID: Number(loanEntityId),\n loanPoolName: loanEntityInfoArray[0],\n landAddress: loanEntityInfoArray[3],\n interestRateAPY: loanEntityInfoArray[4],\n closeDate: new Date(parseInt(loanEntityInfoArray[5]) * 1000).toISOString().slice(0,10),\n principle: loanEntityInfoArray[6] / (10 ** decimal),\n projectType: loanEntityInfoArray[7]\n };\n\n loadedDetailsArray.push(newLoanEntityObject);\n }\n\n setActiveLoanEntities(loadedDetailsArray);\n\n }, [web3Context, landRegistrationSC, LoanOriginatorSC]);\n\n const loadBoardMembers = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const activeBoardMembers = await ManagementCompanyContract.methods\n .getActiveMCBoard()\n .call();\n\n setBoardMembers(activeBoardMembers.slice(1));\n }, [web3Context, ManagementCompanySC]);\n\n const loadDeveloperInfo = useCallback(async() => {\n // one developer information returned as an array\n let developerInfoArray = [];\n // land Id array stored in the developer\n\n if(developerId !== undefined && developerId !== null && developerId !== 0) {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n developerInfoArray = await landRegistrationContract\n .methods\n .getDeveloperByID(developerId)\n .call();\n\n const newActiveLandIds = await landRegistrationContract\n .methods\n .getActiveLandIdsByDeveloperId(developerId)\n .call();\n\n setCompanyName(developerInfoArray[0]);\n setLocation(developerInfoArray[1]);\n setNote(developerInfoArray[2]);\n //developer Id\n setLoanLimit(developerInfoArray[4]);\n setLoanBalance(developerInfoArray[5]);\n\n let activeLandInfoArray = [];\n let votedAddressesArray = [];\n let newLandObject = {}\n let loadedDetailsArray = [];\n for(var i = 1; i < newActiveLandIds.length; i++) {\n activeLandInfoArray = await landRegistrationContract.methods.getLandByID(newActiveLandIds[i]).call();\n votedAddressesArray = await landRegistrationContract.methods.getVotedAddressByLandID(newActiveLandIds[i]).call();\n\n newLandObject = {\n landID: newActiveLandIds[i],\n // basic info\n propertyIdentificationNumber: activeLandInfoArray[0],\n propertyAddress: activeLandInfoArray[1],\n propertyZoning: activeLandInfoArray[2],\n note: activeLandInfoArray[3],\n isReady: activeLandInfoArray[4],\n votedAddressesArray: votedAddressesArray,\n // uint landID; --5\n // uint developerID; --6\n appraisalAmount: activeLandInfoArray[7],\n appraisalDiscountPercent: activeLandInfoArray[8],\n amountBorrowedByDeveloper: activeLandInfoArray[9]\n }\n\n loadedDetailsArray.push(newLandObject);\n }\n\n setActiveLands(loadedDetailsArray);\n }\n }, [landRegistrationSC, web3Context]);\n\n const addNewLand = useCallback(async (propertyId, landAddress, zoning, note) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .addNewLand(propertyId, landAddress.toString(), zoning.toString(), note.toString(), developerId)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const updateLandInfo = useCallback(async (landId, propertyId, landAddress, zoning, note) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .updateLandBasicInfo(landId, propertyId, landAddress.toString(), zoning.toString(), note.toString())\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const updateAppraisal = useCallback(async (landId, appraisalValue, collateralFactor) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n const exactNumber = web3Context.library.utils.toBN(appraisalValue);\n\n await landRegistrationContract.methods\n .addOrUpdateLandAppraisal(landId, exactNumber, collateralFactor)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const approveAppraisal = useCallback(async (landId, appraisalValue, collateralFactor) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .approveLandAppraisal(landId)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const deleteLand = useCallback(async (landId) => {\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n await landRegistrationContract.methods\n .deleteLand(landId)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [landRegistrationSC, web3Context]);\n\n const loadSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const MCAdminContract = new ethLibrary.Contract(\n ManagementCompany.abi,\n process.env.REACT_APP_MCADMIN_ADDRESS\n );\n\n const LRSC = await MCAdminContract.methods.LRSCAddress().call();\n\n setLandRegistrationSC({\n address: LRSC,\n abi: LandRegistration.abi\n });\n\n const LOSC = await MCAdminContract.methods.LOSCAddress().call();\n\n setLoanOriginatorSC({\n address: LOSC,\n abi: LoanOriginator.abi\n });\n\n\n }, [web3Context]);\n\n useEffect(() => {\n if (web3Context.active) {\n loadSCAddress();\n loadBoardMembers();\n loadDeveloperInfo();\n loadLoanEntities();\n setLoading(false);\n }\n }, [web3Context]);\n\n return (\n \n Land > {companyName}\n {companyName}\n \n \n Location\n Loan Limit\n Loan Balance\n \n \n {location}\n ${loanLimit}\n ${loanBalance}\n \n \n \n Land List For {companyName}\n \n \n \n \n \n \n requestSort('propertyIdentificationNumber')}>Property ID\n {sortConfig !== null && sortConfig.key === 'propertyIdentificationNumber' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('propertyAddress')}>Address\n {sortConfig !== null && sortConfig.key === 'propertyAddress' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('appraisalAmount')}>Appraisal Value\n {sortConfig !== null && sortConfig.key === 'appraisalAmount' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('appraisalDiscountPercent')}>Collateral Factor\n {sortConfig !== null && sortConfig.key === 'appraisalDiscountPercent' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('propertyZoning')}>Zoning\n {sortConfig !== null && sortConfig.key === 'propertyZoning' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('isReady')}>Status\n {sortConfig !== null && sortConfig.key === 'isReady' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('amountBorrowedByDeveloper')}>Loan Balance\n {sortConfig !== null && sortConfig.key === 'amountBorrowedByDeveloper' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n Action\n \n \n \n \n {items === undefined ? () : items.map((land, index) => {\n return (\n \n {land.propertyIdentificationNumber}\n {land.propertyAddress.length <= 10 ? land.propertyAddress : land.propertyAddress.substring(0,10) + \"...\"}\n ${land.appraisalAmount}\n {land.appraisalDiscountPercent}%\n {land.propertyZoning}\n {land.isReady ? (APPROVED) : (PENDING)}\n ${land.amountBorrowedByDeveloper}\n \n \n \n \n \n \n \n \n \n )\n })}\n \n \n \n \n \n Loan Generated For {companyName}\n \n \n \n \n \n Loan ID\n \n \n Market\n \n \n Land Collateral\n \n \n Principal\n \n \n Maturity\n \n \n Rate\n \n \n Project Type\n \n \n \n \n {activeLoanEntities === undefined ? () : activeLoanEntities.map((loanEntity, index) => {\n return (\n \n {loanEntity.loanID}\n {loanEntity.loanPoolName}\n {loanEntity.landAddress}\n ${loanEntity.principle}\n {loanEntity.closeDate}\n {loanEntity.interestRateAPY / 1000}%\n {loanEntity.projectType}\n \n )\n })}\n \n \n \n \n \n );\n}\n\nexport default DeveloperInfoPage;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst ActionBtn = styled(motion.button)`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n margin-right: 20px;\n width: 100px;\n height: 36px;\n \n /* yellow */\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n ${props => props.disabled && css`\n opacity: 0.2;\n `}\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 16px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n \n @media all and (max-width: 1444px) {\n margin-left: 0px;\n left: 1155px;\n }\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n margin-bottom: 20px;\n`\n\nconst PopupText = styled.div`\n width: 100%;\n height: 20px;\n margin-bottom: 2px;\n font-size: 16px;\n font-weight: bold;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 20px;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 20px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 10px 16px;\n position: static;\n width: 91%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 15px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst DECIMALBASE = 100000;\n\nconst DepositModal = (props) => {\n const [modal, setModal] = useState(false);\n const [amount, setAmount] = useState(0);\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n if(props.loanPoolStatus === \"0\") {\n setLoading(false);\n setModal(!modal);\n }\n };\n\n return (\n \n \n Deposit\n \n {\n modal && props.loanPoolStatus === \"0\" &&(\n \n \n \n {props.loanPoolName}-{props.loanPoolCurrencyName}\n \n \n Current Yield: {props.rateToBorrow / DECIMALBASE * 100}%\n Your {props.loanPoolCurrencyName} Wallet Balance: ${props.myAssetBalance/props.loanPoolCurrencyBase}\n { loading ? (): (\n \n {props.myAssetAllowance > 0 ? (\n Amount of {props.loanPoolCurrencyName} to\n Deposit *\n {\n setAmount(e.target.value);\n }} required>\n \n ) : (\"\")}\n \n )}\n \n Cancel\n {\n props.myAssetAllowance > 0 ?\n ( {\n setLoading(true);\n props.action(amount).catch(()=>{\n setLoading(false);\n })}\n }primary>Deposit\n ) : (\n {\n setLoading(true);\n props.approve().catch(()=>{\n setLoading(false);\n })\n .finally(() => setLoading(false))}\n }primary>Approve\n )\n }\n \n \n \n )\n }\n \n );\n};\n\nexport default DepositModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst ActionBtn = styled(motion.button)`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n margin-right: 20px;\n width: 100px;\n height: 36px;\n \n /* yellow */\n\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 16px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n \n @media all and (max-width: 1444px) {\n margin-left: 0px;\n left: 1155px;\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 10px 16px;\n position: static;\n width: 91%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\nconst PopupText = styled.div`\n width: 100%;\n height: 20px;\n margin-bottom: 2px;\n font-size: 16px;\n font-weight: bold;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 20px;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst DECIMALBASE = 100000;\n\nconst RedeemModal = (props) => {\n const [modal, setModal] = useState(false);\n const [companyName, setCompanyName] = useState();\n const [location, setLocation] = useState();\n const [amount, setAmount] = useState(0);\n const [note, setNote] = useState();\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n Redeem\n \n {\n modal && (\n \n \n \n {props.loanPoolName}-{props.loanPoolCurrencyName}\n \n \n Current Yield: {props.rateToBorrow / DECIMALBASE * 100}%\n Your AeToken Balance for the LoanPool: {props.myTokenBalance/props.loanPoolCurrencyBase} AeToken\n { loading ? (): (\n \n \n Amount Of ae{props.loanPoolCurrencyName} Tokens to Redeem *\n setAmount(e.target.value)} required>\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(amount).catch(()=>{\n setLoading(false);\n })}\n }primary>Redeem\n \n \n \n )\n }\n \n );\n};\n\nexport default RedeemModal;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport styled from 'styled-components/macro';\nimport {useWeb3React} from \"@web3-react/core\";\nimport { useParams } from \"react-router-dom\";\nimport { parseUnits } from '@ethersproject/units'\n\nimport LandRegistration from '../artifacts/src/contracts/LandRegistration.sol/LandRegistration';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\nimport LoanOriginator from '../artifacts/src/contracts/LoanOriginator.sol/LoanOriginator'\nimport LoanPool from '../artifacts/src/contracts/LoanPool.sol/LoanPool'\nimport ERC20Token from '../artifacts/src/contracts/test/ERC20Token.sol/ERC20Token'\n\nimport Spinner from \"./Spinner\";\n\nimport useSortableData from \"./UseSortableData\";\nimport DepositModal from './DepositModal';\nimport RedeemModal from './RedeemModal';\nimport CurrencyModal from \"./CurrencyModal\";\n\nvar BigNumber = require(\"big-number\");\n\nconst DashboardPage = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: Lato;\n font-style: normal;\n min-height: 100vh;\n`\n\nconst SubTitle = styled.div`\n position: absolute;\n width: 296px;\n height: 25px;\n left: 10%;\n top: 116px;\n padding: 0px;\n\n font-weight: bold;\n font-size: 14px;\n line-height: 180%;\n color: #000000;\n \n opacity: 0.4;\n`\n\nconst TitleRow = styled.div`\n height: 40px;\n display: flex;\n flex-direction: row;\n margin-top: 50px;\n width: 100%;\n` \nconst Title = styled.div`\n height: 40px;\n font-weight: bold;\n font-size: 30px;\n line-height: 100%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n`\nconst TotalLabel = styled.div`\n margin-top: 45px;\n font-style: normal;\n font-weight: bold;\n font-size: 14px;\n line-height: 100%;\n`\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n justify-content: center;\n\n width: 80%;\n margin-left: 10%;\n margin-top: 40px;\n`\n\nconst LowerTableContainer = styled.div`\n width: 100%;\n min-height: 300px;\n`\nconst ProposalBox = styled.div`\n display: flex;\n flex-direction: column;\n width: 17%;\n align-items: flex-start;\n min-width: 240px;\n height: 150px;\n margin-left: 0px;\n margin-top: 0px;\n margin-right: 30px;\n margin-bottom: 30px;\n align-items: center;\n\n background: #FFFFFF;\n /* shadow 1 */\n \n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n border-radius: 6px;\n`\n\nconst ProposalBoxLabel = styled.div`\n width: 100%;\n height: 18px;\n margin-top: 30px;\n\n font-weight: normal;\n line-height: 100%;\n /* identical to box height, or 18px */\n font-style: normal;\n font-size: 18px;\n\n /* identical to box height */\n text-align: center;\n letter-spacing: 0.4px;\n\n color: #000000;\n\n opacity: 0.4;\n`\n\nconst ProposalNumberLabel = styled.div`\n width: 100%;\n height: 18px;\n margin-top: 20px;\n\n\n font-style: normal;\n font-weight: bold;\n font-size: 40px;\n line-height: 47px;\n\n /* identical to box height */\n text-align: center;\n letter-spacing: 1px;\n color: #F0C235;\n`\n\nconst StyledTable = styled.table`\n border: none;\n border-collapse: separate;\n border-spacing: 0px 20px;\n width: 100%;\n min-width: 800px;\n font-weight: bold;\n\n thead {\n width: 100%;\n font-weight: bold;\n font-size: 20px;\n line-height: 180%;\n text-decoration: underline;\n }\n \n td {\n border: none;\n text-align: left;\n padding: 0px 10px 0px 10px;\n }\n\n th {\n border: none;\n text-align: left;\n padding: 0px;\n }\n\n tbody tr {\n width: 100%;\n height: 66px;\n \n background: #FFFFFF;\n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n \n :hover {\n background-color: #f5f5f5;\n }\n }\n`;\n\nconst ActionBtnContainer = styled.div`\n display: flex;\n flex-direction: row;\n margin-left: auto; \n`\n\nconst HeaderColumn = styled.button`\n font-weight: bold;\n font-size: 16px;\n border: none;\n background: transparent;\n text-decoration: underline;\n \n cursor: pointer;\n`\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n margin-top: 34px;\n flex-wrap: wrap;\n`\n\nconst LogoIcon = styled.div`\n margin-left: 10px;\n width: 35px;\n`\n\nconst MarketInfoPage = () => {\n const web3Context = useWeb3React();\n const [loading, setLoading] = useState(true);\n const [landRegistrationSC, setLandRegistrationSC] = useState({\n address: process.env.REACT_APP_LANDREGISTRATION_ADDRESS,\n abi: LandRegistration.abi\n });\n\n const [ManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n const [LoanOriginatorSC, setLoanOriginatorSC] = useState({\n address: process.env.REACT_APP_LOANORIGINATOR,\n abi: LoanOriginator.abi\n });\n\n\n const [loanPoolName, setLoanPoolName] = useState(\"\");\n const [totalDeposit, setTotalDeposit] = useState(0);\n const [minRate, setMinRate] = useState(\"\");\n const [maxRate, setMaxRate] = useState(\"\");\n const [rateToBorrow, setRateToBorrow] = useState(0);\n const [poolReserve, setPoolReserve] = useState(0);\n const [myAssetBalance, setMyAssetBalance] = useState(0);\n const [myAssetAllowance, setMyAssetAllowance] = useState(0);\n const [myTokenBalance, setMyTokenBalance] = useState(0);\n const [currentUltilizationRate, setCurrentUltilizationRate] = useState(0);\n const [loanPoolCurrency, setLoanPoolCurrency] = useState(\"0x0000000000000000000000000000000000000000\");\n const [currencyBase, setCurrencyBase] = useState(10 ** 18);\n const [currencyName, setCurrencyName] = useState(\"N/A\");\n const [currencyLogo, setCurrencyLogo] = useState(\"\");\n const [loanPoolStatus, setLoanPoolStatus] = useState(\"1\");\n const [activeLoanEntities, setActiveLoanEntities] = useState([]);\n\n const currencies = CurrencyModal();\n\n const { loanPoolId } = useParams();\n\n const { items, requestSort, sortConfig } = useSortableData(activeLoanEntities);\n\n const loadLoanPoolInfo = useCallback(async() => {\n // one developer information returned as an array\n let loanPoolInfoArray = [];\n // land Id array stored in the developer\n let loanPoolAddress;\n let LoanPoolContract;\n let myTokenAmount;\n\n if(loanPoolId !== undefined && loanPoolId !== null && loanPoolId !== 0) {\n const ethLibrary = web3Context.library.eth;\n const loanOriginatorContract = new ethLibrary.Contract(\n LoanOriginatorSC.abi,\n LoanOriginatorSC.address\n );\n \n loanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolId)\n .call();\n\n LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n loanPoolAddress\n );\n\n loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n myTokenAmount = await LoanPoolContract\n .methods\n .balanceOf(web3Context.account)\n .call();\n\n setMyTokenBalance(myTokenAmount);\n setLoanPoolCurrency(loanPoolInfoArray[7]);\n setLoanPoolName(loanPoolInfoArray[0]);\n setMinRate(loanPoolInfoArray[5]);\n setMaxRate(loanPoolInfoArray[4]);\n setRateToBorrow(loanPoolInfoArray[3]);\n setPoolReserve(loanPoolInfoArray[2]);\n setTotalDeposit(parseInt(loanPoolInfoArray[1]) + parseInt(loanPoolInfoArray[2]));\n setCurrentUltilizationRate(loanPoolInfoArray[6]);\n setLoanPoolStatus(loanPoolInfoArray[8].toString());\n\n const currency = currencies.find(c => c.address.toLowerCase() == loanPoolInfoArray[7].toString().toLowerCase());\n setCurrencyBase(currency === undefined ? 10 ** 18 : 10 ** currency.decimal);\n setCurrencyName(currency === undefined ? \"N/A\" : currency.name);\n setCurrencyLogo(currency === undefined ? \"\" : currency.img);\n\n // load balance info and allowance info\n const stableTokenContract = new ethLibrary.Contract(\n ERC20Token.abi,\n currency.address\n );\n\n const myAssetAmount = await stableTokenContract.methods\n .balanceOf(web3Context.account)\n .call();\n\n setMyAssetBalance(myAssetAmount);\n\n const myAssetAllowance = await stableTokenContract.methods\n .allowance(web3Context.account, loanPoolAddress)\n .call();\n\n setMyAssetAllowance(myAssetAllowance);\n\n let loanEntityInfoArray = [];\n let newLoanEntityObject = {};\n let loadedDetailsArray = [];\n\n const activeLoanEntityIds = await LoanPoolContract.methods\n .getActiveLoanEntityIDs()\n .call();\n for(var i = 1; i < activeLoanEntityIds.length; i++) {\n loanEntityInfoArray = await LoanPoolContract.methods\n .getLoanEntityViewByLoanEntityID(activeLoanEntityIds[i])\n .call();\n newLoanEntityObject = {\n loanID: loanEntityInfoArray[1],\n developerName:loanEntityInfoArray[2],\n principal: loanEntityInfoArray[6],\n interestRateAPY: loanEntityInfoArray[4],\n landName: loanEntityInfoArray[3],\n projectType: loanEntityInfoArray[7]\n };\n \n loadedDetailsArray.push(newLoanEntityObject);\n }\n setActiveLoanEntities(loadedDetailsArray);\n }\n }, [landRegistrationSC, web3Context, LoanOriginatorSC]);\n\n const deposit = useCallback(async (amount) => {\n const ethLibrary = web3Context.library.eth;\n if(web3Context.account !== undefined) {\n const loanOriginatorContract = new ethLibrary.Contract(\n LoanOriginatorSC.abi,\n LoanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolId)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n console.log(loanPoolInfoArray[1] + loanPoolInfoArray[2]);\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const currency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = currency === undefined ? 18 : currency.decimal;\n let exactAmount;\n\n\n // work around\n if(amount >= 0) {\n exactAmount = parseUnits(amount, decimal);\n } else {\n exactAmount = 0;\n }\n\n\n await loanOriginatorContract.methods\n .deposit(exactAmount, Number(loanPoolId))\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }\n }, [web3Context, LoanOriginatorSC, loanPoolCurrency]);\n\n const approveToken = useCallback(async () => {\n const ethLibrary = web3Context.library.eth;\n if(web3Context.account !== undefined) {\n const loanOriginatorContract = new ethLibrary.Contract(\n LoanOriginatorSC.abi,\n LoanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolId)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const stableTokenContract = new ethLibrary.Contract(\n ERC20Token.abi,\n reloadedLoanPoolCurrency\n );\n\n const currency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const CurrencyBase = currency === undefined ? 10 ** 18 : 10 ** currency.decimal;\n let exactMaxNumber;\n // tmp fix for approval with different decimal\n if(CurrencyBase === 10 ** 18) {\n // eslint-disable-next-line no-undef\n exactMaxNumber = \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\";\n } else {\n exactMaxNumber = 1999999999 * CurrencyBase;\n }\n\n\n await stableTokenContract.methods\n .approve(reloadedLoanPoolAddress, exactMaxNumber)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n setMyAssetAllowance(1999999999 * CurrencyBase);\n });\n }\n\n }, [ManagementCompanySC, web3Context]);\n\n const redeem = useCallback(async (amount) => {\n // one developer information returned as an array\n // land Id array stored in the developer\n\n const ethLibrary = web3Context.library.eth;\n if(web3Context.account !== undefined) {\n const loanOriginatorContract = new ethLibrary.Contract(\n LoanOriginatorSC.abi,\n LoanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolId)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const currency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = currency === undefined ? 18 : currency.decimal;\n\n let exactAmount;\n\n\n // work around\n if(amount >= 0) {\n exactAmount = parseUnits(amount, decimal);\n } else {\n exactAmount = 0;\n }\n\n\n await loanOriginatorContract.methods\n .withdraw(exactAmount, loanPoolId)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }\n\n }, [ManagementCompanySC, web3Context, LoanOriginatorSC]);\n\n\n const loadSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const MCAdminContract = new ethLibrary.Contract(\n ManagementCompany.abi,\n process.env.REACT_APP_MCADMIN_ADDRESS\n );\n\n const LRSC = await MCAdminContract.methods.LRSCAddress().call();\n\n setLandRegistrationSC({\n address: LRSC,\n abi: LandRegistration.abi\n });\n\n const LOSC = await MCAdminContract.methods.LOSCAddress().call();\n\n setLoanOriginatorSC({\n address: LOSC,\n abi: LoanOriginator.abi\n });\n\n }, [web3Context]);\n\n useEffect(() => {\n if (web3Context.active) {\n loadLoanPoolInfo();\n setLoading(false);\n }\n }, [web3Context, loadLoanPoolInfo, landRegistrationSC]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadSCAddress();\n }\n }, [web3Context])\n\n return (\n loading ? () : (\n \n Market > {loanPoolName}\n \n \n \n {loanPoolName}-{currencyName}\n \n \n \n \n\n \n \n \n \n \n\n Total Deposit: ${totalDeposit / currencyBase} {currencyName}\n \n \n Maximum Yield\n {maxRate/1000}%\n \n \n Minimum Yield\n {minRate/1000}%\n \n \n Current Yield\n {rateToBorrow/1000}%\n \n \n Available liquidity\n ${(poolReserve/currencyBase).toFixed(2)}\n \n \n Utilization Rate\n {currentUltilizationRate/1000}%\n \n \n \n \n Current Loans\n \n \n \n \n \n requestSort('loanEntityId')}>Loan ID\n {sortConfig !== null && sortConfig.key === 'loanEntityId' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('borrower')}>Borrower\n {sortConfig !== null && sortConfig.key === 'borrower' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('borrowedamount')}>Borrowed Amount\n {sortConfig !== null && sortConfig.key === 'borrowedamount' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('loaninterestrate')}>Loan Interest Rate\n {sortConfig !== null && sortConfig.key === 'loaninterestrate' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('dailyinterest')}>Daily Interest\n {sortConfig !== null && sortConfig.key === 'dailyinterest' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('collateral')}>Collateral\n {sortConfig !== null && sortConfig.key === 'collateral' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('projecttype')}>Project Type\n {sortConfig !== null && sortConfig.key === 'projecttype' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n \n \n {items === undefined ? () : items.map((loanEntity, index) => {\n return (\n \n {loanEntity.loanID}\n {loanEntity.developerName}\n ${loanEntity.principal/currencyBase}\n {loanEntity.interestRateAPY/1000}%\n {loanEntity.interestRateAPY*loanEntity.principal/100000/currencyBase/365}\n {loanEntity.landName.length <= 20 ? loanEntity.landName : loanEntity.landName.substring(0,20) + \"...\"}\n {loanEntity.projectType}\n \n )\n })}\n \n \n \n \n \n )\n );\n}\n\nexport default MarketInfoPage;\n","import React, { useState } from \"react\";\nimport \"react-dates/initialize\";\nimport { SingleDatePicker } from \"react-dates\";\nimport moment from \"moment\";\nimport styled from \"styled-components\";\nimport \"react-dates/lib/css/_datepicker.css\";\n\n/* https://github.com/airbnb/react-dates/issues/1030\n * In-order to extend styling, wrapper div around date picker is needed.\n */\n\n\nconst StyledDatePickerWrapper = styled.div`\n & .SingleDatePicker,\n .SingleDatePickerInput {\n margin-left: -15px;\n font-size: 16px;\n\n .DateInput {\n width: 635px;\n height: 48px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n .DateInput_input {\n font-size: 1rem;\n border-bottom: 0;\n padding: 12px 16px 14px;\n }\n }\n\n .SingleDatePickerInput__withBorder {\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n overflow: hidden;\n\n :hover,\n .DateInput_input__focused {\n border: 1px solid black;\n }\n\n .CalendarDay__selected {\n background: blue;\n border: blueviolet;\n }\n \n }\n\n .SingleDatePicker_picker.SingleDatePicker_picker {\n top: 43px;\n left: 2px;\n /* top: 43px !important;\n left: 2px !important; */\n }\n \n }\n \n .DayPicker_transitionContainer__horizontal {\n height: 485px !important;\n }\n \n td {\n width: 39px !important;\n }\n`;\n\nexport default class DatePicker extends React.Component {\n state = {\n focused: false,\n date: moment().add(1, 'days')\n };\n render() {\n return (\n \n this.setState({ date })}\n onFocusChange={({ focused }) => this.setState({ focused })}\n focused={this.state.focused}\n date={this.state.date}\n />\n \n );\n }\n}\n","import React, {useEffect, useState, useRef, useCallback} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport DatePicker from \"./DatePicker\";\nimport moment from \"moment\";\n\nconst CreateLoanButton = styled(motion.button)` \n width: 25%;\n min-width: 90px;\n height: 30px;\n margin-top: 5px;\n margin-right: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 10px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n ${props => props.overlapped && css`\n z-index: 5;\n `}\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst BigInputBox = styled.textarea`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 15px 16px;\n \n position: static;\n width: 90%;\n height: 100px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n background: #F4F6F9;\n border-radius: 8px;\n border: none;\n resize: none; \n \n ${props => props.primary && css`\n width: 95%;\n background: #FFFFFF;\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n `}\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst SelectBox = styled.select`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 14px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n \n option {\n color: black;\n background: white;\n display: flex;\n white-space: pre;\n min-height: 35px;\n \n padding: 14px 15px;\n\n }\n`\n\nconst NotificationBox = styled.div`\n background: rgba(250, 173, 22, 0.1);\n border-radius: 6px;\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n width: 90%;\n \n padding: 15px 16px;\n\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 24px;\n \n text-align: left; \n`\n\nconst WrapUpBox = styled.div`\n width: 100%;\n word-wrap: break-word;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst CreateLoanModal = (props) => {\n const [modal, setModal] = useState(false);\n const [loading, setLoading] = useState(false);\n const loanPoolID = useState(props.loanPool.loanPoolID);\n const [developerID, setDeveloperID] = useState(0);\n const [landList, setLandList] = useState([]);\n const [landID, setLandID] = useState(0);\n const [collateral, setCollateral] = useState();\n const [loanAmount, setLoanAmount] = useState(0);\n const maturity = useRef(null);\n const [projectDescription, setProjectDescription] = useState(\"\");\n\n const toggle = () => {\n if(props.developerInfos !== [] && typeof props.developerInfos !== \"undefined\" && props.developerInfos !== null && props.developerInfos.length !== null) {\n try {\n setDeveloperID(props.developerInfos[0].developerID)\n }\n catch(e) {\n window.location.reload();\n };\n }\n setLoading(false);\n setModal(!modal);\n };\n\n const loadLandList = useCallback((developerID) => {\n const selectedDeveloper = props.developerInfos.find(e => developerID === e.developerID);\n if (selectedDeveloper !== undefined && selectedDeveloper.landInfo.length !== 0) {\n setLandList(selectedDeveloper.landInfo);\n setLandID(selectedDeveloper.landInfo[0].landID);\n } else {\n setLandList([]);\n setLandID(0);\n setCollateral();\n }\n }, [developerID]);\n\n useEffect(() => {\n if (developerID !== 0) {\n loadLandList(developerID);\n }\n },[developerID]);\n\n useEffect(() => {\n if(landID !== 0) {\n loadCollateral(landID);\n }\n }, [landID]);\n\n const loadCollateral = useCallback((landId) => {\n if(landId !== 0) {\n const selectedLand = landList.find(e => e.landID.toString() === landId.toString());\n if(selectedLand !== undefined) {\n setCollateral(selectedLand);\n }\n }\n }, [landID]);\n\n return (\n \n \n CREATE LOAN\n \n {\n modal && (\n \n \n \n Create Loan\n \n \n { loading ? (): (\n \n \n Select Developer*\n {\n setDeveloperID(e.target.value);\n loadLandList(e.target.value);\n }}\n required>\n {props.developerInfos.map((developer, index) => {\n return ()\n })}\n \n \n \n Select Collateral*\n {\n setLandID(e.target.value);\n loadCollateral(e.target.value);\n }} required>\n {landList.map((land, index) => {\n const landName = land.propertyAddress.length <= 50 ? land.propertyAddress : land.propertyAddress.toString().substring(0,50) + \"...\";\n return ()\n })}\n \n \n \n Market: {props.loanPool.loanPoolName} has ${props.loanPool.poolReserve} liquidity
\n {\n collateral === undefined ? \"\" : (\n Collateral: {collateral.propertyAddress}
available borrow limit is ${collateral.appraisalAmount * collateral.appraisalDiscountPercent / 100}
\n )\n }\n
\n \n Maturity*\n \n \n \n Loan Amount*\n setLoanAmount(e.target.value)}\n min={0}\n max={collateral === undefined ? 0 : collateral.appraisalAmount * collateral.appraisalDiscountPercent}\n required/>\n \n \n Current borrowing rate is {props.loanPool.rateToBorrow}%\n \n \n Project Description*\n setProjectDescription(e.target.value)}\n />\n \n
\n )}\n \n Cancel\n {\n setLoading(true);\n props.action(props.loanPool.loanPoolID, collateral.landID, loanAmount, maturity, projectDescription).catch(()=>{\n setLoading(false);\n })}\n } disabled={loanPoolID === undefined || collateral === undefined || loanAmount === 0 || maturity === undefined || developerID === 0 || collateral === undefined} primary>Withdraw Fund\n \n \n \n )\n }\n
\n );\n};\n\nexport default CreateLoanModal;\n","import React, {useEffect, useState, useRef, useCallback} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport {useWeb3React} from \"@web3-react/core\";\n\nimport LoanPool from '../artifacts/src/contracts/LoanPool.sol/LoanPool';\nimport ERC20Token from '../artifacts/src/contracts/test/ERC20Token.sol/ERC20Token'\n\nconst PayLoanButton = styled(motion.button)` \n width: 25%;\n min-width: 70px;\n height: 30px;\n margin-top: 5px;\n margin-right: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 10px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst SelectBox = styled.select`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 14px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n \n option {\n color: black;\n background: white;\n display: flex;\n white-space: pre;\n min-height: 35px;\n \n padding: 14px 15px;\n\n }\n`\n\nconst NotificationBox = styled.div`\n background: rgba(250, 173, 22, 0.1);\n border-radius: 6px;\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n text-align: left;\n\n padding: 15px 16px;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst PayLoanModal = (props) => {\n const [modal, setModal] = useState(false);\n const [developerID, setDeveloperID] = useState();\n const [landList, setLandList] = useState([]);\n const [landID, setLandID] = useState();\n const [collateral, setCollateral] = useState();\n const [walletBalance, setWalletBalance] = useState();\n const [loanEntityDropdownList, setLoanEntityDropDownList] = useState([]);\n const [selectedLoanEntityID, setSelectedLoanEntityID] = useState();\n const [selectedLoanEntity, setSelectedLoanEntity] = useState();\n const [paymentAmount, setPaymentAmount] = useState();\n const web3Context = useWeb3React();\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n if(props.developerInfos !== [] && typeof props.developerInfos !== \"undefined\" && props.developerInfos !== null && props.developerInfos.length !== null) {\n try {\n setDeveloperID(props.developerInfos[0].developerID)\n }\n catch(e) {\n window.location.reload();\n };\n }\n setLoading(false);\n setModal(!modal);\n };\n\n\n const loadLandList = useCallback((developerID) => {\n setCollateral();\n setLoanEntityDropDownList([]);\n setSelectedLoanEntity();\n setSelectedLoanEntityID(0);\n\n const selectedDeveloper = props.developerInfos.find(e => developerID === e.developerID);\n if (selectedDeveloper !== undefined) {\n setLandList(selectedDeveloper.landInfo);\n if(selectedDeveloper.landInfo.length > 0) {\n setLandID(selectedDeveloper.landInfo[0].landID);\n }\n }\n }, [developerID]);\n\n useEffect(() => {\n const selectedLand = landList.find(e => landID === e.landID);\n if(selectedLand !== undefined) {\n setCollateral(selectedLand);\n }\n }, [landID]);\n\n useEffect(() => {\n if (props.developerInfos !== undefined && props.developerInfos.length !== 0 && developerID === 0) {\n setDeveloperID(props.developerInfos[0].developerID);\n }\n\n if (developerID !== 0) {\n loadLandList(developerID);\n }\n },[developerID]);\n\n useEffect(() => {\n if(landID !== 0) {\n loadCollateral(landID);\n }\n }, [landID]);\n\n const loadCollateral = useCallback((landId) => {\n if(landId !== 0) {\n const selectedLand = landList.find(e => e.landID.toString() === landId.toString());\n if(selectedLand !== undefined) {\n setCollateral(selectedLand);\n loadLoanEntityList(landId);\n }\n }\n }, [landID]);\n\n const loadLoanEntityList = useCallback(async (landId) => {\n const ethLibrary = web3Context.library.eth;\n const loanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n props.loanPool.loanPoolAddress\n );\n\n const loanEntityIDs = await loanPoolContract.methods\n .callgetLoanEntityIDsByLandID(landId)\n .call();\n\n const totalLoanEntityID = loanEntityIDs.length;\n let loanEntityArray = [];\n let loanEntityInfos = [];\n let loanEntityObject = {};\n for(var i = 1; i < totalLoanEntityID; i++) {\n loanEntityInfos = await loanPoolContract.methods.getLoanEntityPaymentInfoByLoanEntityID(loanEntityIDs[i]).call();\n loanEntityObject = {\n loanEntityID: loanEntityIDs[i],\n principal: loanEntityInfos[0] / props.loanPool.currencyBase,\n interestObligated: loanEntityInfos[1] / props.loanPool.currencyBase,\n totalPaid: loanEntityInfos[2] / props.loanPool.currencyBase\n };\n\n loanEntityArray.push(loanEntityObject);\n }\n setLoanEntityDropDownList(loanEntityArray);\n console.log(loanEntityArray);\n if(loanEntityArray.length > 0) {\n setSelectedLoanEntityID(loanEntityArray[0].loanEntityID);\n setSelectedLoanEntity(loanEntityArray[0]);\n }\n }, [web3Context]);\n\n const loadSelectedLoanEntity = useCallback((loanEntityId) => {\n const selectedLoanEntity = loanEntityDropdownList.find(e => e.loanEntityID === loanEntityId);\n if(selectedLoanEntity !== undefined) {\n setSelectedLoanEntity(selectedLoanEntity);\n }\n }, [selectedLoanEntityID]);\n\n\n useEffect(async() => {\n const ethLibrary = web3Context.library.eth;\n const stableTokenContract = new ethLibrary.Contract(\n ERC20Token.abi,\n props.loanPool.currency\n );\n\n const myAssetAmount = await stableTokenContract.methods\n .balanceOf(process.env.REACT_APP_MCADMIN_ADDRESS)\n .call();\n\n setWalletBalance(myAssetAmount / props.loanPool.currencyBase);\n });\n\n return (\n \n \n PAY LOAN\n \n {\n modal && (\n \n \n \n Pay Loan\n \n \n { loading ? (): (\n \n \n Select Developer*\n {\n setDeveloperID(e.target.value);\n }} required>\n {props.developerInfos.map((developer, index) => {\n return ()\n })}\n \n \n \n Select Collateral*\n {\n setLandID(e.target.value);\n }} required>\n {landList.map((land, index) => {\n return ()\n })}\n \n \n \n Select Loan*\n {\n setSelectedLoanEntityID(e.target.value);\n loadSelectedLoanEntity(e.target.value);\n }} required>\n {loanEntityDropdownList.map((loanEntity, index) => {\n return ()\n })}\n \n \n \n {\n selectedLoanEntity === undefined ? \"\" : (\n
Loan #{selectedLoanEntity.loanEntityID} remaining balance is ${selectedLoanEntity.principal}\n
Unpaid Interest is ${selectedLoanEntity.interestObligated}\n
Total debt obligation is ${(selectedLoanEntity.principal + selectedLoanEntity.interestObligated)}\n
Your MC wallet has ${walletBalance}\n
\n )\n }\n
\n \n Payment Amount*\n setPaymentAmount(e.target.value)}\n required/>\n \n
\n )}\n \n Cancel\n {\n if(props.loanPool.currency !== undefined && paymentAmount !== undefined && props.loanPool.loanPoolID !== undefined && selectedLoanEntity !== undefined) {\n setLoading(true);\n props.action(props.loanPool.currency, paymentAmount, props.loanPool.loanPoolID, selectedLoanEntity.loanEntityID).catch(()=>{\n setLoading(false);\n })\n }\n }}primary>Pay Loan\n \n \n \n )\n }\n
\n );\n};\n\nexport default PayLoanModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\n\nconst CloseMarketButton = styled(motion.button)` \n width: 25%;\n min-width: 95px;\n height: 30px;\n margin-top: 5px;\n margin-right: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 10px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst NotificationBox = styled.div`\n background: rgba(250, 173, 22, 0.1);\n border-radius: 6px;\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 15px 16px;\n\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 24px;\n \n text-align: left; \n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst CloseMarketModal = (props) => {\n const [modal, setModal] = useState(false);\n const [loanPoolID, setLoanPoolID] = useState(props.loanPoolID);\n\n const [loading, setLoading] = useState(false);\n\n const Notification = props.status == \"0\" ?\n (\n \n You are attempting to close the market '{props.loanPoolName}'.\n
\n
\n When the market is closed, users can no longer deposit into this market and new loans can not be created from this market.\n
\n
\n Users can still redeem their aeTokens and existing loans can be paid.\n
\n ) :\n (\n \n You are attempting to reopen the market '{props.loanPoolName}'.\n
\n
\n When the market is reopen, users will be able to deposit into this market again. New loans can be created from this market.\n
\n
\n Users can still redeem their aeTokens and existing loans can be paid.\n
\n );\n\n const ButtonLabel = props.status === \"0\" ? \"Close Market\" : \"Reopen Market\";\n const Action = props.status === \"0\" ? \"Close\" : \"Reopen\";\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n {ButtonLabel.toUpperCase()}\n \n {\n modal && (\n \n \n \n {Action} Market '{props.loanPoolName}'\n \n \n { loading ? (): (\n \n {Notification}\n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(loanPoolID).catch(()=>{\n setLoading(false);\n })}\n }primary>{ButtonLabel}\n \n \n \n )\n }\n \n );\n};\n\nexport default CloseMarketModal;\n","import React, {useEffect, useState, useRef} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport CurrencyModal from \"./CurrencyModal\";\n\nconst CreateMarketButton = styled(motion.button)`\n justify-content: center;\n align-items: center;\n width: 167px;\n height: 39px;\n margin-left: auto;\n \n\n /* yellow */\n\n background: linear-gradient(95.76deg, #FAC44E -0.92%, #F9AB12 96.25%);\n border-radius: 30px;\n border: none;\n \n font-weight: bold;\n font-size: 16px;\n \n /* or 25px */\n\n\n color: #FFFFFF;\n cursor: pointer;\n \n @media all and (max-width: 1444px) {\n margin-left: 0px;\n left: 1155px;\n}\n\n`\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n float: right;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: 68px;\n top: 8px;\n margin-bottom: 20px;\n`\n\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\n\nconst SelectBox = styled.select`\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 14px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n \n option {\n color: black;\n background: white;\n display: flex;\n white-space: pre;\n min-height: 35px;\n \n padding: 14px 15px;\n }\n \n option[disabled]{\n display:none;\n }\n\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\n\nconst CreateMarketModal = (props) => {\n const [modal, setModal] = useState(false);\n const [marketName, setMarketName] = useState(\"\");\n const [utilizationLimit, setUtilizationLimit] = useState(100);\n const [minRate, setMinRate] = useState(0);\n const [maxRate, setMaxRate] = useState(100);\n\n const [loading, setLoading] = useState(false);\n\n const currencies = CurrencyModal();\n\n const [selectedCurrency, setSelectedCurrency] = useState(currencies[0].address.toString());\n\n const toggle = () => {\n setLoading(false);\n setModal(!modal);\n };\n\n return (\n \n \n 十 Create Market\n \n {\n modal && (\n \n \n \n Create Market\n \n \n { loading ? (): (\n \n \n Market Name*\n setMarketName(e.target.value)} required>\n \n \n Currency*\n {\n setSelectedCurrency(e.target.value);\n }}\n required>\n {currencies.map((currency, index) => {\n return ()\n })}\n \n \n \n Utilization Limit*\n setUtilizationLimit(e.target.value)} required>\n \n \n Minimum Rate*\n setMinRate(e.target.value)} required>\n \n \n Maximum Rate*\n setMaxRate(e.target.value)} required>\n \n \n )}\n \n Cancel\n {\n setLoading(true);\n props.action(minRate, maxRate, utilizationLimit, selectedCurrency, marketName).catch(()=>{\n setLoading(false);\n })}\n }primary>Create Market\n \n \n \n )\n }\n \n );\n};\n\nexport default CreateMarketModal;\n","import React, {useEffect, useState, useRef, useCallback} from 'react';\n\nimport Close from \"../assets/Close.svg\"\nimport styled, {css} from 'styled-components/macro'\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport Spinner from \"./Spinner\";\nimport {useWeb3React} from \"@web3-react/core\";\n\nimport LoanPool from '../artifacts/src/contracts/LoanPool.sol/LoanPool';\nimport ERC20Token from '../artifacts/src/contracts/test/ERC20Token.sol/ERC20Token'\n\nconst LiquidateButton = styled(motion.button)` \n width: 25%;\n min-width: 55px;\n height: 30px;\n margin-top: 5px;\n margin-right: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n \n border: 1px solid #FAAD16;\n box-sizing: border-box;\n border-radius: 41px;\n background: transparent;\n color: #FAAD16;\n font-style: normal;\n font-weight: bold;\n font-size: 10px;\n line-height: 180%;\n \n cursor: pointer;\n`\n\n\nconst Popup = styled(motion.div)`\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0px;\n left: 0px;\n background: rgba(0, 0, 0, 0.75);\n text-align: center;\n z-index: 3;\n`\n\nconst PopupInner = styled(motion.div)`\n text-align: left;\n vertical-align: middle;\n position: absolute;\n max-width: 700px;\n width: 671px;\n top:50%;\n left:50%;\n transform: translate(-50%, -50%);\n padding: 40px;\n z-index: 4;\n \n background: #FFFFFF;\n box-shadow: 0px 8px 36px rgba(0, 0, 0, 0.16);\n border-radius: 16px;\n \n text-align: center;\n\n\n`\n\nconst PopupHeader = styled.div`\n width: 100%;\n height: 24px;\n font-size: 19px;\n left: calc(50% - 623px/2);\n top: calc(50% - 24px/2 - 10px);\n line-height: 24px;\n font-weight: bold;\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n`\n\nconst CloseButton = styled.a`\n width: 24px;\n margin-left: auto;\n height: 24px;\n cursor: pointer;\n`\n\nconst ContentArea = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px; \n`\n\nconst InputBoxContainer = styled.div`\n position: static;\n height: auto;\n top: 8px;\n margin-bottom: 20px;\n`\nconst InputBoxLabel = styled.div`\n display: flex;\n flex-direction:row;\n align-items: center;\n padding-left: 5px;\n \n white-space: nowrap;\n position: relative;\n height: 20px;\n width: ${props => props.FixedWidth || \"10%\"}};\n left: 30px;\n top: 10px;\n font-weight: bold;\n \n background: #FFFFFF;\n`\n\nconst Required = styled.div`\n font-size: 11px;\n line-height: 16px;\n\n color: #DA1414;\n\n opacity: 0.8;\n`\n\nconst InputBox = styled.input`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 0px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n`\n\nconst PopupFooter = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 40px;\n\n`\n\nconst PopupButton = styled.a`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n \n \n position: relative;\n width: 300px;\n height: 42px;\n margin: 15px;\n background: transparent;\n color: #FAC44E;\n border: 2px solid #FAC44E;\n\n border-radius: 30px;\n ${props => props.primary && css`\n background: #FAC44E;\n color: white;\n `}\n \n cursor: pointer;\n`\n\nconst SelectBox = styled.select`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n \n padding: 14px 15px;\n \n position: static;\n width: 95%;\n height: 48px;\n left: 0px;\n top: 0px;\n \n font-size: 16px;\n \n background: #FFFFFF;\n\n border: 1px solid #858C94;\n box-sizing: border-box;\n border-radius: 8px;\n \n option {\n color: black;\n background: white;\n display: flex;\n white-space: pre;\n min-height: 35px;\n \n padding: 14px 15px;\n\n }\n`\n\nconst NotificationBox = styled.div`\n background: rgba(250, 173, 22, 0.1);\n border-radius: 6px;\n \n display: flex;\n flex-direction: column;\n align-items: flex-start;\n text-align: left;\n\n padding: 15px 16px;\n`\n\nconst modalVariant = {\n initial: { opacity: 0 },\n isOpen: { opacity: 1 },\n exit: { opacity: 0 }\n};\nconst containerVariant = {\n initial: { top: \"-50%\", transition: { type: \"spring\" } },\n isOpen: { top: \"50%\" },\n exit: { top: \"-50%\" }\n};\n\nconst LiquidateLandModal = (props) => {\n const [modal, setModal] = useState(false);\n const [developerID, setDeveloperID] = useState();\n const [landList, setLandList] = useState([]);\n const [landID, setLandID] = useState();\n const [collateral, setCollateral] = useState();\n const [walletBalance, setWalletBalance] = useState();\n const [loanEntityDropdownList, setLoanEntityDropDownList] = useState([]);\n const [selectedLoanEntityID, setSelectedLoanEntityID] = useState();\n const [selectedLoanEntity, setSelectedLoanEntity] = useState();\n const [paymentAmount, setPaymentAmount] = useState();\n const web3Context = useWeb3React();\n\n const [loading, setLoading] = useState(false);\n\n const toggle = () => {\n if(props.developerInfos !== [] && typeof props.developerInfos !== \"undefined\" && props.developerInfos !== null && props.developerInfos.length !== null) {\n try {\n setDeveloperID(props.developerInfos[0].developerID)\n }\n catch(e) {\n window.location.reload();\n };\n }\n setLoading(false);\n setModal(!modal);\n };\n\n\n const loadLandList = useCallback((developerID) => {\n setCollateral();\n setLoanEntityDropDownList([]);\n setSelectedLoanEntity();\n setSelectedLoanEntityID(0);\n\n const selectedDeveloper = props.developerInfos.find(e => developerID === e.developerID);\n if (selectedDeveloper !== undefined) {\n setLandList(selectedDeveloper.landInfo);\n if(selectedDeveloper.landInfo.length > 0) {\n setLandID(selectedDeveloper.landInfo[0].landID);\n }\n }\n }, [developerID]);\n\n useEffect(() => {\n const selectedLand = landList.find(e => landID === e.landID);\n if(selectedLand !== undefined) {\n setCollateral(selectedLand);\n }\n }, [landID]);\n\n useEffect(() => {\n if (props.developerInfos !== undefined && props.developerInfos.length !== 0 && developerID === 0) {\n setDeveloperID(props.developerInfos[0].developerID);\n }\n\n if (developerID !== 0) {\n loadLandList(developerID);\n }\n },[developerID]);\n\n useEffect(() => {\n if(landID !== 0) {\n loadCollateral(landID);\n }\n }, [landID]);\n\n const loadCollateral = useCallback((landId) => {\n if(landId !== 0) {\n const selectedLand = landList.find(e => e.landID.toString() === landId.toString());\n if(selectedLand !== undefined) {\n setCollateral(selectedLand);\n loadLoanEntityList(landId);\n }\n }\n }, [landID]);\n\n const loadLoanEntityList = useCallback(async (landId) => {\n const ethLibrary = web3Context.library.eth;\n const loanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n props.loanPool.loanPoolAddress\n );\n\n const loanEntityIDs = await loanPoolContract.methods\n .callgetLoanEntityIDsByLandID(landId)\n .call();\n\n const totalLoanEntityID = loanEntityIDs.length;\n let loanEntityArray = [];\n let loanEntityInfos = [];\n let loanEntityObject = {};\n for(var i = 1; i < totalLoanEntityID; i++) {\n loanEntityInfos = await loanPoolContract.methods.getLoanEntityPaymentInfoByLoanEntityID(loanEntityIDs[i]).call();\n loanEntityObject = {\n loanEntityID: loanEntityIDs[i],\n principal: loanEntityInfos[0] / props.loanPool.currencyBase,\n interestObligated: loanEntityInfos[1] / props.loanPool.currencyBase,\n totalPaid: loanEntityInfos[2] / props.loanPool.currencyBase\n };\n\n loanEntityArray.push(loanEntityObject);\n }\n setLoanEntityDropDownList(loanEntityArray);\n console.log(loanEntityArray);\n if(loanEntityArray.length > 0) {\n setSelectedLoanEntityID(loanEntityArray[0].loanEntityID);\n setSelectedLoanEntity(loanEntityArray[0]);\n }\n }, [web3Context]);\n\n const loadSelectedLoanEntity = useCallback((loanEntityId) => {\n const selectedLoanEntity = loanEntityDropdownList.find(e => e.loanEntityID === loanEntityId);\n if(selectedLoanEntity !== undefined) {\n setSelectedLoanEntity(selectedLoanEntity);\n }\n }, [selectedLoanEntityID]);\n\n\n useEffect(async() => {\n const ethLibrary = web3Context.library.eth;\n const stableTokenContract = new ethLibrary.Contract(\n ERC20Token.abi,\n props.loanPool.currency\n );\n\n const myAssetAmount = await stableTokenContract.methods\n .balanceOf(process.env.REACT_APP_MCADMIN_ADDRESS)\n .call();\n\n setWalletBalance(myAssetAmount / props.loanPool.currencyBase);\n });\n\n return (\n \n \n LIQUIDATE\n \n {\n modal && (\n \n \n \n Collateral Liquidation\n \n \n { loading ? (): (\n \n \n Select Developer*\n {\n setDeveloperID(e.target.value);\n }} required>\n {props.developerInfos.map((developer, index) => {\n return ()\n })}\n \n \n \n Select Collateral*\n {\n setLandID(e.target.value);\n }} required>\n {landList.map((land, index) => {\n return ()\n })}\n \n \n \n Select Loan*\n {\n setSelectedLoanEntityID(e.target.value);\n loadSelectedLoanEntity(e.target.value);\n }} required>\n {loanEntityDropdownList.map((loanEntity, index) => {\n return ()\n })}\n \n \n \n {\n selectedLoanEntity === undefined ? \"\" : (\n
Loan #{selectedLoanEntity.loanEntityID} remaining balance is ${selectedLoanEntity.principal}\n
Unpaid Interest is ${selectedLoanEntity.interestObligated}\n
Total debt obligation is ${(selectedLoanEntity.principal + selectedLoanEntity.interestObligated)}\n
Your MC wallet has ${walletBalance}\n
\n )\n }\n
\n \n Liquidate Amount*\n setPaymentAmount(e.target.value)}\n required/>\n \n
\n )}\n \n Cancel\n {\n if(props.loanPool.currency !== undefined && paymentAmount !== undefined && props.loanPool.loanPoolID !== undefined && selectedLoanEntity !== undefined) {\n setLoading(true);\n props.action(paymentAmount, props.loanPool.loanPoolID, selectedLoanEntity.loanEntityID).catch(()=>{\n setLoading(false);\n })\n }\n }}primary>Pay Loan\n \n \n \n )\n\n }\n
\n );\n};\n\nexport default LiquidateLandModal;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport styled from 'styled-components/macro';\nimport useSortableData from \"./UseSortableData\";\nimport {NavLink} from \"react-router-dom\";\n\nimport LandRegistration from '../artifacts/src/contracts/LandRegistration.sol/LandRegistration';\nimport LoanOriginator from '../artifacts/src/contracts/LoanOriginator.sol/LoanOriginator';\nimport SPVWallet from '../artifacts/src/contracts/SPVWallet.sol/SPVWallet';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\nimport LoanPool from '../artifacts/src/contracts/LoanPool.sol/LoanPool'\n\nimport Spinner from \"./Spinner\";\nimport CreateLoanModal from \"./CreateLoanModal\";\nimport PayLoanModal from \"./PayLoanModal\";\nimport CloseMarketModal from \"./CloseMarketModal\";\nimport CreateMarketModal from \"./CreateMarketModal\";\nimport LiquidateLandModal from \"./LiquidateLandModal\";\nimport CurrencyModal from \"./CurrencyModal\";\nimport {parseUnits} from \"@ethersproject/units\";\n\nvar BigNumber = require(\"big-number\");\n\nconst DashboardPage = styled.div`\n width: 100%;\n font-family: Lato;\n font-style: normal;\n`\n\nconst TitleRow = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 103px;\n margin-left: 152px;\n width: 80%;\n`\n\nconst Title = styled.div`\n width: 294px;\n height: 54px;\n\n font-weight: bold;\n font-size: 30px;\n line-height: 180%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n`\n\nconst ActionButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n margin-left: auto;\n align-items: center;\n gap: 42px;\n\n`\n\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n justify-content: center;\n z-index: 1;\n\n width: 80%;\n margin-left: 10%;\n margin-top: 48px;\n`\n\nconst TableContainer = styled.div`\n width: 100%;\n min-height: 60vh;\n`\n\nconst StyledNavLink = styled(NavLink)`\n border: none;\n background: transparent;\n color: black;\n padding-left: 25px;\n text-decoration: none;\n\n cursor: pointer;\n`\nconst StyledTable = styled.table`\n border: none;\n border-collapse: separate;\n border-spacing: 0px 20px;\n width: 100%;\n font-weight: bold;\n\n thead {\n width: 100%;\n font-weight: bold;\n font-size: 20px;\n line-height: 180%;\n text-decoration: underline;\n }\n \n th {\n border: none;\n padding-left: 10px;\n text-align: left;\n } \n\n td {\n width: 5%;\n }\n \n #name {\n width: 15%;\n padding-left: 5px;\n }\n \n #action {\n width: 25%;\n }\n\n \n tbody tr {\n width: 100%;\n height: 66px;\n \n vertical-align: middle;\n \n background: #FFFFFF;\n box-shadow: 4px 6px 20px rgba(176, 176, 176, 0.15);\n \n :hover {\n background-color: #f5f5f5;\n }\n }\n`;\n\nconst HeaderColumn = styled.button`\n font-weight: bold;\n font-size: 20px;\n border: none;\n background: transparent;\n text-decoration: underline;\n \n cursor: pointer;\n`\n\nconst ActionButtonRow = styled.div`\n display: flex;\n flex-direction: row;\n`\n\nconst DECIMALBASE = 100000;\n\nconst MarketDashboardPage = () => {\n const web3Context = useWeb3React();\n const [loading, setLoading] = useState(true);\n const [boardMembers, setBoardMembers] = useState();\n const [loanOriginatorSC, setLoanOriginatorSC] = useState({\n address: process.env.REACT_APP_LOANORIGINATOR,\n abi: LoanOriginator.abi\n });\n\n const [SPVWalletSC, setSPVWalletSC] = useState({\n address: process.env.REACT_APP_SPVWALLET_ADDRESS,\n abi: SPVWallet.abi\n });\n\n const [activeDevelopers, setActiveDevelopers] = useState([]);\n\n const [ManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n\n const [landRegistrationSC, setLandRegistrationSC] = useState({\n address: process.env.REACT_APP_LANDREGISTRATION_ADDRESS,\n abi: LandRegistration.abi\n });\n\n const [activeLoanPools, setActiveLoanPools] = useState({\n activeLoanPoolIDs: [],\n activeLoanPoolInfos: [],\n });\n\n const currencies = CurrencyModal();\n // cache for loanPool currencies info\n const [loanPoolCurrencyBase, setLoanPoolCurrencyBase] = useState({});\n\n const { items, requestSort, sortConfig } = useSortableData(activeLoanPools.activeLoanPoolInfos);\n\n const getActiveLoanPools = useCallback(async() => {\n let activeLoanPoolIDs = [];\n let activeLoanPoolInfos = [];\n const ethLibrary = web3Context.library.eth;\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n activeLoanPoolIDs = await loanOriginatorContract.methods\n .getActiveLoanPoolIDs()\n .call();\n\n const totalActiveLoanPoolID = activeLoanPoolIDs.length;\n let newLoanPoolArray = [];\n let newLoanPoolObject = {};\n let CURRENCYBASE = 10 ** 18;\n let currency;\n let currencyName;\n let loanPoolCurrencyBaseCache = {};\n // load developer info by each ID\n\n for(var i = 1; i < totalActiveLoanPoolID; i++) {\n newLoanPoolArray = await loanOriginatorContract.methods.getLoanPoolInfoByID(activeLoanPoolIDs[i]).call();\n const loanPoolAddress = await loanOriginatorContract.methods.getLoanPoolByID(activeLoanPoolIDs[i]).call();\n currency = currencies.find(c => c.address.toLowerCase() == newLoanPoolArray[7].toString().toLowerCase());\n CURRENCYBASE = currency === undefined ? 10 ** 18 : 10 ** currency.decimal;\n currencyName = currency === undefined ? \"N/A\" : currency.name;\n\n loanPoolCurrencyBaseCache[activeLoanPoolIDs[i].toString()] = CURRENCYBASE;\n\n newLoanPoolObject = {\n loanPoolID: activeLoanPoolIDs[i],\n loanPoolAddress: loanPoolAddress,\n loanPoolName: newLoanPoolArray[0],\n poolDebt: Number(newLoanPoolArray[1]) / CURRENCYBASE,\n poolReserve: Number(newLoanPoolArray[2]) / CURRENCYBASE,\n marketsize: (Number(newLoanPoolArray[1])+Number(newLoanPoolArray[2])) / CURRENCYBASE,\n rateToBorrow: newLoanPoolArray[3] / DECIMALBASE * 100,\n maxRate: Number(newLoanPoolArray[4]) / DECIMALBASE * 100,\n // uint developerID;\n minRate: Number(newLoanPoolArray[5]) / DECIMALBASE * 100,\n currentUltilizationRate: (newLoanPoolArray[6]) / DECIMALBASE * 100,\n currency: newLoanPoolArray[7],\n currencyBase: CURRENCYBASE,\n status: newLoanPoolArray[8].toString(),\n currencyName: currencyName\n }\n\n activeLoanPoolInfos.push(newLoanPoolObject);\n\n }\n\n setLoanPoolCurrencyBase(loanPoolCurrencyBaseCache);\n setActiveLoanPools({activeLoanPoolIDs, activeLoanPoolInfos});\n }, [loanOriginatorSC, web3Context]);\n\n const loadBoardMembers = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const activeBoardMembers = await ManagementCompanyContract.methods\n .getActiveMCBoard()\n .call();\n\n setBoardMembers(activeBoardMembers.slice(1));\n\n }, [web3Context, ManagementCompanySC]);\n\n\n const createLoanPool = useCallback(async (minRate, maxRate, ultLimit, currency, loanPoolName) => {\n const ethLibrary = web3Context.library.eth;\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n await loanOriginatorContract.methods\n .createLoanPool(Number(minRate) * 1000, Number(maxRate) * 1000, ultLimit * 1000, currency.toString(), loanPoolName)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n\n }, [ManagementCompanySC, web3Context, loanOriginatorSC, landRegistrationSC]);\n\n const withdrawFund = useCallback(async (loanPoolID, landID, loanAmount, maturity, projectDescription) => {\n const ethLibrary = web3Context.library.eth;\n const SPVWalletContract = new ethLibrary.Contract(\n SPVWalletSC.abi,\n SPVWalletSC.address\n );\n\n const dateTime = new Date(maturity.current.state.date).getTime();\n const timestamp = Math.floor(dateTime / 1000);\n\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolID)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const currency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = currency === undefined ? 18 : currency.decimal;\n const dec = web3Context.library.utils.toBN(decimal);\n let bnAmount;\n let exactAmount;\n\n // work around\n if(loanAmount >= 0) {\n exactAmount = parseUnits(loanAmount, decimal);\n } else {\n exactAmount = 0;\n }\n\n // uint amount, uint loanPoolID, uint landID, uint closeDate, string calldata projectDescription\n await SPVWalletContract.methods\n .loanPoolDrawFund(exactAmount, Number(loanPoolID), Number(landID), timestamp, projectDescription)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [ManagementCompanySC, web3Context, SPVWalletSC]);\n\n const payLoan = useCallback(async (currency, loanAmount, loanPoolID, loanEntityID) => {\n const ethLibrary = web3Context.library.eth;\n const managementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolID)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const reloadedcurrency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = reloadedcurrency === undefined ? 18 : reloadedcurrency.decimal;\n const dec = web3Context.library.utils.toBN(decimal);\n let bnAmount;\n let exactAmount;\n\n // work around\n if(loanAmount >= 0) {\n exactAmount = parseUnits(loanAmount, decimal);\n } else {\n exactAmount = 0;\n }\n\n\n await managementCompanyContract.methods\n .payLoanRequest(currency, exactAmount, loanPoolID, loanEntityID)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [ManagementCompanySC, web3Context, loanOriginatorSC]);\n\n const liquidateLand = useCallback(async (loanAmount, loanPoolID, loanEntityID) => {\n const ethLibrary = web3Context.library.eth;\n const managementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n const reloadedLoanPoolAddress = await loanOriginatorContract.methods\n .getLoanPoolByID(loanPoolID)\n .call();\n\n const LoanPoolContract = new ethLibrary.Contract(\n LoanPool.abi,\n reloadedLoanPoolAddress\n );\n\n const loanPoolInfoArray = await LoanPoolContract\n .methods\n .getLoanPoolInfo()\n .call();\n\n const reloadedLoanPoolCurrency = loanPoolInfoArray[7];\n\n const reloadedCurrency = currencies.find(c => c.address.toLowerCase() === reloadedLoanPoolCurrency.toString().toLowerCase());\n const decimal = reloadedCurrency === undefined ? 18 : reloadedCurrency.decimal;\n const dec = web3Context.library.utils.toBN(decimal);\n let bnAmount;\n let exactAmount;\n\n // work around\n if(loanAmount >= 1) {\n bnAmount = web3Context.library.utils.toBN(loanAmount);\n exactAmount =\"0x\"+ bnAmount.mul(web3Context.library.utils.toBN(10).pow(dec)).toString(\"hex\");\n }\n else if (loanAmount > 0 && loanAmount < 1) {\n exactAmount = web3Context.library.utils.toBN(loanAmount * (10 ** decimal).toString());\n } else {\n exactAmount = 0;\n }\n await managementCompanyContract.methods\n .debtVoidRequest(exactAmount, loanPoolID, loanEntityID)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [ManagementCompanySC, web3Context, loanOriginatorSC]);\n\n\n const closeMarket = useCallback(async (loanPoolID) => {\n const ethLibrary = web3Context.library.eth;\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n await loanOriginatorContract.methods\n .closeLoanPool(loanPoolID)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n\n }, [ManagementCompanySC, web3Context, loanOriginatorSC]);\n\n const openMarket = useCallback(async (loanPoolID) => {\n const ethLibrary = web3Context.library.eth;\n const loanOriginatorContract = new ethLibrary.Contract(\n loanOriginatorSC.abi,\n loanOriginatorSC.address\n );\n\n await loanOriginatorContract.methods\n .openLoanPool(loanPoolID)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n\n }, [ManagementCompanySC, web3Context, loanOriginatorSC]);\n\n const getActiveDeveloperDetails = useCallback(async() => {\n if(web3Context.account !== undefined && boardMembers !== undefined && boardMembers.includes(web3Context.account)) {\n let activeDeveloperIDs = [];\n let activeDeveloperInfos = [];\n const ethLibrary = web3Context.library.eth;\n const landRegistrationContract = new ethLibrary.Contract(\n landRegistrationSC.abi,\n landRegistrationSC.address\n );\n activeDeveloperIDs = await landRegistrationContract.methods\n .getActiveDeveloperIDs()\n .call();\n\n const totalActiveDeveloperID = activeDeveloperIDs.length;\n let newDeveloperArray = [];\n let newDeveloperObject = {};\n\n for (var i = 1; i < totalActiveDeveloperID; i++) {\n\n newDeveloperArray = await landRegistrationContract.methods.getDeveloperByID(activeDeveloperIDs[i]).call();\n newDeveloperObject = {\n developerID: activeDeveloperIDs[i],\n companyName: newDeveloperArray[0],\n location: newDeveloperArray[1],\n note: newDeveloperArray[2],\n // uint developerID;\n loanLimit: Number(newDeveloperArray[4]),\n loanBalance: Number(newDeveloperArray[5])\n }\n\n const newActiveLandIds = await landRegistrationContract\n .methods\n .getActiveLandIdsByDeveloperId(activeDeveloperIDs[i])\n .call();\n\n newDeveloperObject.landIds = newActiveLandIds;\n let activeLandInfoArray = [];\n let newLandObject = {}\n let loadedDetailsArray = [];\n for(var j = 1; j < newActiveLandIds.length; j++) {\n activeLandInfoArray = await landRegistrationContract.methods.getLandByID(newActiveLandIds[j]).call();\n\n newLandObject = {\n landID: newActiveLandIds[j],\n // basic info\n propertyIdentificationNumber: activeLandInfoArray[0],\n propertyAddress: activeLandInfoArray[1],\n propertyZoning: activeLandInfoArray[2],\n note: activeLandInfoArray[3],\n isReady: activeLandInfoArray[4],\n // uint landID; --5\n developerID: activeLandInfoArray[6],\n appraisalAmount: activeLandInfoArray[7],\n appraisalDiscountPercent: activeLandInfoArray[8],\n amountBorrowedByDeveloper: activeLandInfoArray[9]\n }\n\n loadedDetailsArray.push(newLandObject);\n }\n newDeveloperObject.landInfo = loadedDetailsArray;\n activeDeveloperInfos.push(newDeveloperObject);\n }\n setActiveDevelopers(activeDeveloperInfos);\n }\n }, [ManagementCompanySC, landRegistrationSC, web3Context, boardMembers]);\n\n const loadSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const MCAdminContract = new ethLibrary.Contract(\n ManagementCompany.abi,\n process.env.REACT_APP_MCADMIN_ADDRESS\n );\n\n const LRSC = await MCAdminContract.methods.LRSCAddress().call();\n\n setLandRegistrationSC({\n address: LRSC,\n abi: LandRegistration.abi\n });\n\n const LOSC = await MCAdminContract.methods.LOSCAddress().call();\n\n setLoanOriginatorSC({\n address: LOSC,\n abi: LoanOriginator.abi\n });\n\n const SPV = await MCAdminContract.methods.SPVWalletAddress().call();\n\n setSPVWalletSC({\n address: SPV,\n abi: SPVWallet.abi\n });\n\n }, [web3Context]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadSCAddress();\n getActiveLoanPools();\n // work around of the async call issue\n loadBoardMembers();\n setLoading(false);\n }\n },[web3Context]);\n\n // work around about the delay setState issue\n useEffect(() => {\n getActiveDeveloperDetails();\n }, [boardMembers, getActiveDeveloperDetails]);\n\n return (\n \n \n Governance Market\n {web3Context.account !== undefined && boardMembers !== undefined && boardMembers.includes(web3Context.account)\n ? (\n \n \n ) : (\"\")}\n \n \n \n \n \n \n \n requestSort('loanPoolName')}>Market\n {sortConfig !== null && sortConfig.key === 'loanPoolName' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('marketsize')}>Market Size\n {sortConfig !== null && sortConfig.key === 'marketsize' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('rateToBorrow')}>Current Yield\n {sortConfig !== null && sortConfig.key === 'rateToBorrow' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('maxRate')}>Maximum Yield\n {sortConfig !== null && sortConfig.key === 'maxRate' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('minRate')}>Minimum Yield\n {sortConfig !== null && sortConfig.key === 'minRate' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('currentUltilizationRate')}>Utilization Rate\n {sortConfig !== null && sortConfig.key === 'currentUltilizationRate' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n \n requestSort('currency')}>Currency\n {sortConfig !== null && sortConfig.key === 'currency' ? sortConfig.direction === 'ascending' ? '▼' : '▲' : ''}\n \n \n {\n web3Context.account !== undefined && boardMembers !== undefined && boardMembers.includes(web3Context.account) ? (Action):(\"\")\n }\n \n \n \n {web3Context.account === undefined || items === undefined || items === [] ? () : items.map((loanPool, index) => {\n return (\n \n {loanPool.loanPoolName}\n ${loanPool.marketsize.toFixed(2)}\n {loanPool.rateToBorrow.toFixed(2)}%\n {loanPool.maxRate.toFixed(2)}%\n {loanPool.minRate.toFixed(2)}%\n {loanPool.currentUltilizationRate.toFixed(2)}%\n {loanPool.currencyName}\n {\n web3Context.account !== undefined && boardMembers !== undefined && boardMembers.includes(web3Context.account) && loanPool.status === \"0\" ? (\n \n \n \n \n \n \n \n ):(\"\")\n }\n {\n web3Context.account !== undefined && boardMembers !== undefined && boardMembers.includes(web3Context.account) && loanPool.status === \"1\" ? (\n \n \n \n \n ):(\"\")\n }\n \n )\n })}\n \n \n \n \n );\n};\n\nexport default MarketDashboardPage;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport ManagementCompany from '../artifacts/src/contracts/ManagementCompany.sol/ManagementCompany'\nimport SPVWallet from '../artifacts/src/contracts/SPVWallet.sol/SPVWallet'\nimport {useWeb3React} from \"@web3-react/core\";\nimport styled, {css} from 'styled-components/macro'\nimport Spinner from \"./Spinner\";\nimport {AnimatePresence, motion} from \"framer-motion\";\nimport CreateProposalModal from \"./CreateProposalModal\";\nimport ProposalViewModal from \"./ProposalViewModal\";\nimport ERC20Token from '../artifacts/src/contracts/test/ERC20Token.sol/ERC20Token'\nimport CurrencyModal from \"./CurrencyModal\";\nimport {parseUnits} from \"@ethersproject/units\";\n\nvar BigNumber = require(\"big-number\");\n\nconst DashboardPage = styled.div `\n display: flex;\n flex-direction: column;\n width: 100%;\n font-family: Lato;\n font-style: normal;\n z-index:2;\n min-height: 80vh;\n`\n\nconst UpperArea = styled.div`\n width: 100%;\n min-width: 1440px;\n margin-top: -300px;\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-bottom: 50px;\n z-index: 1;\n`\n\nconst Title = styled.div`\n \n height: 54px;\n \n font-style: normal;\n font-weight: bold;\n font-size: 40px;\n line-height: 45px;\n text-align: center;\n letter-spacing: 0.03em;\n text-transform: uppercase;\n \n color: rgba(240, 194, 53, 1);\n`\n\nconst SubTitle = styled.div`\n \n height: 54px;\n \n font-style: normal;\n font-weight: bold;\n font-size: 20px;\n line-height: 45px;\n text-align: center;\n letter-spacing: 0.03em;\n \n color: rgba(240, 194, 53, 1);\n \n margin-bottom: 45px;\n opacity: 0.4;\n`\n\nconst RowTitle = styled.div`\n \n height: 54px;\n\n font-weight: bold;\n font-size: 30px;\n line-height: 180%;\n /* identical to box height, or 54px */\n\n text-transform: capitalize;\n\n color: #000000;\n margin-bottom: 31px;\n`\n\nconst BalanceContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 70%;\n min-width: 1049px;\n height: 259px;\n border: 2px solid rgba(240, 194, 53, 1);\n \n background: linear-gradient(287.81deg, #161616 32.36%, rgba(22, 22, 22, 0.73) 99.22%);\n box-shadow: 26px 24px 90px 0px rgba(31, 26, 51, 0.13);\n`\n\nconst BalanceDisplay = styled.div`\n display: flex;\n flex-direction: column;\n width: 33%;\n align-items: center;\n`\n\nconst BalanceNumber = styled.div`\n margin-top: 56px;\n font-style: normal;\n font-weight: bold;\n font-size: 48px;\n line-height: 109%;\n /* or 52px */\n \n color: #F0C235;\n`\n\nconst BalanceLabel = styled.div`\n margin-top: 15px;\n font-style: normal;\n font-weight: bold;\n font-size: 32px;\n line-height: 109%;\n /* identical to box height, or 35px */\n\n\n color: #FFFFFF;\n`\n\nconst FlexContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding: 0px;\n\n width: 80%;\n margin-left: 10%;\n margin-top: 14px;\n margin-bottom: 67px;\n`\n\n\nconst AddressZero = '0x0000000000000000000000000000000000000000';\n\nconst SPVWalletPage = (() => {\n const web3Context = useWeb3React();\n const [ManagementCompanySC] = useState({\n address: process.env.REACT_APP_MCADMIN_ADDRESS,\n abi: ManagementCompany.abi\n });\n\n const [SPVWalletSC, setSPVWalletSC] = useState({\n address: process.env.REACT_APP_SPVWALLET_ADDRESS,\n abi: SPVWallet.abi\n });\n\n const currencies = CurrencyModal();\n\n const [USDCInfo, setUSDCInfo] = useState({\n balance: 0,\n decimal: 6,\n name: \"USDC\"\n });\n const [USDTInfo, setUSDTInfo] = useState({\n balance: 0,\n decimal: 6,\n name: \"USDT\"\n });\n const [DAIInfo, setDAIInfo] = useState({\n balance: 0,\n decimal: 18,\n name: \"DAI\"\n });\n\n const [requestInfo, setRequestInfo] = useState();\n\n const [boardMembers, setBoardMembers] = useState([]);\n\n const loadBoardMembers = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const ManagementCompanyContract = new ethLibrary.Contract(\n ManagementCompanySC.abi,\n ManagementCompanySC.address\n );\n\n const activeBoardMembers = await ManagementCompanyContract.methods\n .getActiveMCBoard()\n .call();\n\n setBoardMembers(activeBoardMembers.slice(1));\n }, [web3Context, ManagementCompanySC]);\n\n const loadCurrentRequest = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const SPVWalletContract = new ethLibrary.Contract(\n SPVWalletSC.abi,\n SPVWalletSC.address\n );\n\n const currentRequest = await SPVWalletContract.methods\n .request()\n .call();\n\n const voteFlags = await SPVWalletContract.methods\n .getRequestVoteFlags()\n .call();\n\n let currencyName = \"N/A\";\n let CURRENCYBASE = 10 ** 18;\n let selectedCurrency = currencies.find(c => c.address.toString().toLowerCase() === currentRequest[0].toString().toLowerCase());\n if(selectedCurrency !== undefined) {\n CURRENCYBASE = 10 ** selectedCurrency.decimal;\n currencyName = selectedCurrency.name;\n }\n let newRequestObject = {\n currency: currentRequest[0],\n amount: currentRequest[1],\n to: currentRequest[2],\n voteFlags: voteFlags,\n currencyName: currencyName,\n currencyBase: CURRENCYBASE\n };\n\n setRequestInfo(newRequestObject);\n\n }, [web3Context, SPVWalletSC]);\n\n\n const loadTokenBalance = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const USDTInfo = currencies.find(c => c.name === \"USDT\");\n const USDTContract = new ethLibrary.Contract(\n ERC20Token.abi,\n USDTInfo.address\n );\n const USDTBalance = await USDTContract.methods\n .balanceOf(process.env.REACT_APP_SPVWALLET_ADDRESS)\n .call();\n\n setUSDTInfo({\n balance: USDTBalance / (10 ** USDTInfo.decimal),\n decimal: USDTInfo.decimal,\n address: USDTInfo.address,\n name: USDTInfo.name\n });\n\n const USDCInfo = currencies.find(c => c.name === \"USDC\");\n const USDCContract = new ethLibrary.Contract(\n ERC20Token.abi,\n USDCInfo.address\n );\n\n const USDCBalance = await USDCContract.methods\n .balanceOf(process.env.REACT_APP_SPVWALLET_ADDRESS)\n .call();\n\n setUSDCInfo({\n balance: USDCBalance / (10 ** USDCInfo.decimal),\n decimal: USDCInfo.decimal,\n address: USDCInfo.address,\n name: USDCInfo.name\n });\n\n const DAIInfo = currencies.find(c => c.name === \"DAI\");\n const DAIContract = new ethLibrary.Contract(\n ERC20Token.abi,\n DAIInfo.address\n );\n\n const DAIBalance = await DAIContract.methods\n .balanceOf(process.env.REACT_APP_SPVWALLET_ADDRESS)\n .call();\n\n\n setDAIInfo({\n balance: DAIBalance / (10 ** DAIInfo.decimal),\n decimal: DAIInfo.decimal,\n address: DAIInfo.address,\n name: DAIInfo.name\n });\n\n }, [web3Context, SPVWalletSC]);\n\n const createRequest = useCallback(async(currency, to, amount) => {\n const ethLibrary = web3Context.library.eth;\n const SPVWalletContract = new ethLibrary.Contract(\n SPVWalletSC.abi,\n SPVWalletSC.address\n );\n\n let CURRENCYBASE = 10 ** 18;\n let decimal = 18;\n let dec = web3Context.library.utils.toBN(decimal);\n let selectedCurrency = currencies.find(c => c.address.toString().toLowerCase() === currency.toString().toLowerCase());\n if(selectedCurrency !== undefined) {\n decimal = selectedCurrency.decimal;\n }\n\n let exactAmount;\n\n // work around\n if(amount >= 0) {\n exactAmount = parseUnits(amount, decimal);\n } else {\n exactAmount = 0;\n }\n\n await SPVWalletContract.methods\n .createFundTransferRequest(currency, exactAmount, to)\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n\n }, [web3Context, SPVWalletSC]);\n\n const approveRequest = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const SPVWalletContract = new ethLibrary.Contract(\n SPVWalletSC.abi,\n SPVWalletSC.address\n );\n\n await SPVWalletContract.methods\n .approveFundTransferRequest()\n .send({from: web3Context.account})\n .once('receipt', async() => {\n window.location.reload();\n });\n }, [web3Context, SPVWalletSC]);\n\n const loadSCAddress = useCallback(async() => {\n const ethLibrary = web3Context.library.eth;\n const MCAdminContract = new ethLibrary.Contract(\n ManagementCompany.abi,\n process.env.REACT_APP_MCADMIN_ADDRESS\n );\n\n const SPV = await MCAdminContract.methods.SPVWalletAddress().call();\n\n setSPVWalletSC({\n address: SPV,\n abi: SPVWallet.abi\n });\n\n }, [web3Context]);\n\n useEffect(() => {\n if(web3Context.active) {\n loadSCAddress();\n loadBoardMembers();\n loadTokenBalance();\n loadCurrentRequest();\n }\n },[web3Context]);\n\n return (\n \n {\n web3Context.account === undefined || !boardMembers.includes(web3Context.account)? (\n \n \n ) : (\n \n SPV Wallet Balance\n Address: {process.env.REACT_APP_SPVWALLET_ADDRESS}\n \n \n \n {USDCInfo.balance}\n \n \n USDC\n \n \n \n \n {DAIInfo.balance}\n \n \n DAI\n \n \n \n \n {USDTInfo.balance}\n \n \n USDT\n \n \n \n \n \n Current Transfer Request\n {requestInfo === undefined || requestInfo.currency === AddressZero ? (\"\") : (\n \n {\"Transfer amount: \" + requestInfo.amount/requestInfo.currencyBase + \" \" + requestInfo.currencyName}\n
\n {\"Receiving Address: \" + requestInfo.to.substring(0,7)+ \"...\" + requestInfo.to.substring(requestInfo.to.length - 6)}\n \n )}\n requestText = {(\n
\n {\"Transfer amount: \" + requestInfo.amount + \" \" + requestInfo.currencyName}\n
\n {\"Receiving Address: \" + requestInfo.to}\n
\n )}\n action = {approveRequest}\n header = \"TRANSFER REQUEST PROPOSAL\"\n boardMembers = {boardMembers}\n votingResults = {requestInfo.voteFlags}\n caller={web3Context.account}\n />\n )}\n
\n \n Create New Transfer Request\n \n \n
\n )\n }\n
\n );\n});\n\nexport default SPVWalletPage;\n","import React, { Component } from 'react';\nimport '../styles/App.css';\n\nimport Addressbar from './Addressbar'\nimport {Switch, Route, Redirect, useLocation} from \"react-router-dom\";\nimport MCAdminPage from \"./MCAdminPage\";\nimport DeveloperDashboardPage from \"./DeveloperDashboardPage\";\nimport DeveloperInfoPage from \"./DeveloperInfoPage\";\nimport MarketInfoPage from \"./MarketInfoPage\";\nimport Footer from \"./Footer\";\nimport styled from 'styled-components/macro'\nimport MarketDashboardPage from './MarketDashboardPage';\nimport SPVWalletPage from \"./SPVWalletPage\";\nimport Lato from 'lato-font/css/lato-font.css';\n\nconst Main = styled.div`\n min-width: 1440px;\n min-height: 100vh;\n width: 100%;\n margin: 0px;\n padding: 0px;\n overflow-x: hidden;\n background: #F9FAFB;\n font-family: Lato;\n font-style: normal;\n`\n\nfunction App() {\n const location = useLocation();\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport reportWebVitals from './reportWebVitals';\nimport \"./styles/App.css\"\nimport App from \"./components/App\";\nimport {BrowserRouter as Router} from \"react-router-dom\";\n\n//* Web3\nimport { Web3ReactProvider } from '@web3-react/core';\nimport Web3 from 'web3';\nfunction getLibrary(provider) {\n const library = new Web3(provider);\n library.pollingInterval = 12000;\n return library;\n}\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}