diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 27f2485..aa00364 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -21,9 +21,7 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } @@ -35,12 +33,8 @@ "../node_modules/@openzeppelin/contracts/utils/Counters.sol", "../node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol" ], - "versionPragmas": [ - "0.8.10" - ], - "artifacts": [ - "InstrumentDeedToken" - ] + "versionPragmas": ["0.8.10"], + "artifacts": ["InstrumentDeedToken"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": { "lastModificationDate": 1652716966146, @@ -62,9 +56,7 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } @@ -78,12 +70,8 @@ "../../utils/Strings.sol", "../../utils/introspection/ERC165.sol" ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC721" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["ERC721"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol": { "lastModificationDate": 1652716973214, @@ -105,22 +93,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../ERC721.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC721URIStorage" - ] + "imports": ["../ERC721.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["ERC721URIStorage"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/access/Ownable.sol": { "lastModificationDate": 1652716955599, @@ -142,22 +122,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../utils/Context.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Ownable" - ] + "imports": ["../utils/Context.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["Ownable"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/Counters.sol": { "lastModificationDate": 1652716955615, @@ -179,20 +151,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Counters" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["Counters"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol": { "lastModificationDate": 1652716973213, @@ -214,23 +180,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../ERC721.sol", - "./IERC721Enumerable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC721Enumerable" - ] + "imports": ["../ERC721.sol", "./IERC721Enumerable.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["ERC721Enumerable"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { "lastModificationDate": 1652716966145, @@ -252,22 +209,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../../utils/introspection/IERC165.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC721" - ] + "imports": ["../../utils/introspection/IERC165.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["IERC721"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { "lastModificationDate": 1652716966146, @@ -289,20 +238,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC721Receiver" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["IERC721Receiver"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { "lastModificationDate": 1652716973214, @@ -324,22 +267,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../IERC721.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC721Metadata" - ] + "imports": ["../IERC721.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["IERC721Metadata"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/Address.sol": { "lastModificationDate": 1652716955615, @@ -361,20 +296,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.1" - ], - "artifacts": [ - "Address" - ] + "versionPragmas": ["^0.8.1"], + "artifacts": ["Address"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/Context.sol": { "lastModificationDate": 1652716955615, @@ -396,20 +325,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Context" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["Context"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/Strings.sol": { "lastModificationDate": 1652716955616, @@ -431,20 +354,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Strings" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["Strings"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { "lastModificationDate": 1652716966153, @@ -466,22 +383,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "./IERC165.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC165" - ] + "imports": ["./IERC165.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["ERC165"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { "lastModificationDate": 1652716966154, @@ -503,20 +412,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC165" - ] + "versionPragmas": ["^0.8.0"], + "artifacts": ["IERC165"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { "lastModificationDate": 1652716973213, @@ -538,22 +441,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, - "imports": [ - "../IERC721.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC721Enumerable" - ] + "imports": ["../IERC721.sol"], + "versionPragmas": ["^0.8.0"], + "artifacts": ["IERC721Enumerable"] }, "/Users/peter/Development/trackyouraxe.v2/contracts/Provenance.sol": { "lastModificationDate": 1651602338123, @@ -575,9 +470,7 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } @@ -588,12 +481,8 @@ "./Mothership.sol", "./InstrumentDeedToken.sol" ], - "versionPragmas": [ - "0.8.10" - ], - "artifacts": [ - "Provenance" - ] + "versionPragmas": ["0.8.10"], + "artifacts": ["Provenance"] }, "/Users/peter/Development/trackyouraxe.v2/node_modules/hardhat/console.sol": { "lastModificationDate": 1652716951596, @@ -615,20 +504,14 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } }, "imports": [], - "versionPragmas": [ - ">=0.4.22 <0.9.0" - ], - "artifacts": [ - "console" - ] + "versionPragmas": [">=0.4.22 <0.9.0"], + "artifacts": ["console"] }, "/Users/peter/Development/trackyouraxe.v2/contracts/Mothership.sol": { "lastModificationDate": 1651602457710, @@ -650,9 +533,7 @@ "evm.methodIdentifiers", "metadata" ], - "": [ - "ast" - ] + "": ["ast"] } } } @@ -663,12 +544,8 @@ "./Provenance.sol", "./InstrumentDeedToken.sol" ], - "versionPragmas": [ - "0.8.10" - ], - "artifacts": [ - "Mothership" - ] + "versionPragmas": ["0.8.10"], + "artifacts": ["Mothership"] } } } diff --git a/hardhat.config.js b/hardhat.config.js index b566259..63b128c 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -25,11 +25,11 @@ module.exports = { }, sepolia: { url: `${process.env.KOVAN_INFURA_URL}`, - accounts:[`${process.env.PRIVATE_KEY}`], + accounts: [`${process.env.PRIVATE_KEY}`], }, mumbai: { url: `${process.env.MUMBAI_ENDPOINT}`, - accounts:[`${process.env.PRIVATE_KEY}`], + accounts: [`${process.env.PRIVATE_KEY}`], }, }, solidity: { diff --git a/package.json b/package.json index 8554cf1..04f2a8b 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "deploymothership": "hh run --network localhost scripts/deployMothership.js", "deploytoken-mumbai": "hh run scripts/deployInstrumentToken.js --network mumbai", "deploymothership-mumbai": "hh run scripts/deployMothership.js --network mumbai", - "prettify": "yarn prettier --write ." + "prettier": "prettier --write ." }, "dependencies": { "3d-earth": "^1.0.8", diff --git a/pages/provenances/[provenance]/index.js b/pages/provenances/[provenance]/index.js index bf0f9ac..3cde105 100644 --- a/pages/provenances/[provenance]/index.js +++ b/pages/provenances/[provenance]/index.js @@ -74,8 +74,12 @@ const ProvenanceProfile = () => { }, [provenanceObjects, provenance]); function loadAndPush() { - const address = provenanceContract.address; - router.push(`/provenances/${address}/release-provenance`); + if (provenanceContract && provenanceContract.address) { + const address = provenanceContract.address; + router.push(`/provenances/${address}/release-provenance`); + } else { + console.log("no provenance contract"); + } } const ItemPhotoCarousel = () => { diff --git a/pages/provenances/[provenance]/release-provenance.js b/pages/provenances/[provenance]/release-provenance.js index 9856424..1fdcda1 100644 --- a/pages/provenances/[provenance]/release-provenance.js +++ b/pages/provenances/[provenance]/release-provenance.js @@ -2,36 +2,19 @@ import { useEffect, useState } from "react"; import { ethers } from "ethers"; //next imports -import Link from "next/link"; + import { useRouter } from "next/router"; //react-bootstrap imports -import { - Container, - Carousel, - Table, - Row, - Col, - Card, - Image, - Button, - ListGroup, - ListGroupItem, - InputGroup, - Form, - FormControl, -} from "react-bootstrap"; +import { Container, Row, Col, Image, Button } from "react-bootstrap"; // context imports import { useItemContext } from "../../../src/context/ItemContext"; import { useContractContext } from "../../../src/context/ContractContext"; import { useUserContext } from "../../../src/context/UserContext"; -import { useTransferContext } from "../../../src/context/TransferContext"; - // styles import styles from "./release-provenance.module.css"; -import { use } from "chai"; // images @@ -62,24 +45,31 @@ const ReleaseProvenance = () => { const [escrowActive, setEscowActive] = useState(); const router = useRouter(); + const { provenance } = router.query; - // this will change if prov objects is an object with address key instead of array useEffect(() => { - if (provenanceObjects && provenance) { - loadProvenance(); + if (!provenanceObjects || !provenance || provenanceObjects.length === 0) { + return; } + + loadProvenance(); + async function loadProvenance() { - for (let contract of provenanceObjects) { - if (contract.ProvenanceContract.address == provenance) { - const { ProvenanceContract, ProvenanceProps, ProvenanceOwnerInfo } = - contract; - - setOutgoingContract(ProvenanceContract); - setOutgoingProvenanceProps(ProvenanceProps); - setOutgoingProvenanceOwnerInfo(ProvenanceOwnerInfo); - setLoaded(true); - } + const contract = provenanceObjects.find( + (contract) => + contract.ProvenanceContract && + contract.ProvenanceContract.address === provenance + ); + + if (contract) { + const { ProvenanceContract, ProvenanceProps, ProvenanceOwnerInfo } = + contract; + + setOutgoingContract(ProvenanceContract); + setOutgoingProvenanceProps(ProvenanceProps); + setOutgoingProvenanceOwnerInfo(ProvenanceOwnerInfo); + setLoaded(true); } } }, [provenanceObjects, provenance]); @@ -96,7 +86,7 @@ const ReleaseProvenance = () => { setTokenApproved(true); } } - }, [TokenContract, outgoingProvenanceProps, outgoingContract.address]); + }, [TokenContract, outgoingProvenanceProps, outgoingContract]); useEffect(() => { if (outgoingContract || transferInitiated) { @@ -123,26 +113,42 @@ const ReleaseProvenance = () => { async function approveTransfer() { setSuccessMessage(""); setAddressErrorMessage(""); - await TokenContract.approve( - outgoingContract.address, - outgoingProvenanceProps.instrumentDeedToken.toString() - ) - .then(async (result) => { - provider - .waitForTransaction(result.hash) - .then(async (mined) => { - if (mined) { - setSuccessMessage("Transaction Success"); - setTokenApproved(true); - } - }) - .catch((error) => { - console.log(error); - }); - }) - .catch((error) => { - console.log(error.message, "User denied approval txn"); - }); + if ( + TokenContract && + outgoingContract && + outgoingProvenanceProps.instrumentDeedToken + ) { + // alert, change instrumentDeedTokent type + await TokenContract.approve( + outgoingContract.address, + outgoingProvenanceProps.instrumentDeedToken + ) + .then(async (result) => { + provider + .waitForTransaction(result.hash) + .then(async (mined) => { + if (mined) { + setSuccessMessage("Transaction Success"); + setTokenApproved(true); + } + }) + .catch((error) => { + console.log(error); + }); + }) + .catch((error) => { + console.log(error.message, "User denied approval txn"); + }); + } else { + console.log( + "TokenContract", + TokenContract, + "outgoingContract", + outgoingContract, + "outgoingProvenanceProps", + outgoingProvenanceProps + ); + } } async function revokeTransferApproval() { @@ -192,7 +198,7 @@ const ReleaseProvenance = () => { } } - if (loaded) { + if (loaded && outgoingContract && outgoingProvenanceProps) { return (
@@ -218,7 +224,11 @@ const ReleaseProvenance = () => {

Step 1: Approve This Token For Transfer{" "} {tokenApproved ? ( - green checkmark + green checkmark ) : null}

diff --git a/pages/register-item/RegisterItem.jsx b/pages/register-item/RegisterItem.jsx index 8a6b265..18be25c 100644 --- a/pages/register-item/RegisterItem.jsx +++ b/pages/register-item/RegisterItem.jsx @@ -81,7 +81,6 @@ const RegisterItem = () => { const { MothershipContract, TokenContract } = useContractContext(); const { stringToBytes32 } = useItemContext(); - const { items, setItems, diff --git a/pages/search/index.js b/pages/search/index.js index 2db1094..38f1e26 100644 --- a/pages/search/index.js +++ b/pages/search/index.js @@ -388,37 +388,3 @@ function PublicProvenanceSearchTable() { } export default PublicProvenanceSearchTable; - -// if (!(isEmptyObject(values))) { -// const filteredData = allProvenanceObjects.filter((item) => { -// const itemProps = item.ProvenanceProps; -// const itemOwnerInfo = item.ProvenanceOwnerInfo; -// const combinedObj = { -// ...itemProps, -// ...itemOwnerInfo -// } -// const valuesKeys = Object.keys(values); -// const combinedObjKeys = Object.keys(combinedObj); -// for (const [key, value] of Object.entries(values)) { - -// console.log(key, value) -// return Object.values(combinedObj).join('').toLowerCase().includes(value.toLowerCase()); - -// // console.log(Object.entries(values), "object entires") -// // console.log(combinedObj, "combinedObj") -// // return Object.values(combinedObj).join('').toLowerCase().includes(value.toLowerCase()); -// } -// }) - -// // const filteredData = allProvenanceObjects.filter(function(item) { -// // for (const [key, value] of Object.entries(values)) { -// // console.log(key, "key") -// // if (item[key] === undefined || item[key] != filter[key]) -// // return false; -// // } -// // return true; -// // }); - -// console.log(filteredData, "filteredData") -// setFilteredResults(filteredData) -// } diff --git a/src/context/ContractContext.js b/src/context/ContractContext.js index 1a5bbc3..5efcf60 100644 --- a/src/context/ContractContext.js +++ b/src/context/ContractContext.js @@ -27,7 +27,6 @@ export function ContractContextProvider({ children }) { const { provider, modalProvider, signer } = useUserContext(); - const [MothershipContract, setMothershipContract] = useState(""); const [TokenContract, setTokenContract] = useState(""); diff --git a/src/context/ItemContext.js b/src/context/ItemContext.js index 04744e0..1b051d8 100644 --- a/src/context/ItemContext.js +++ b/src/context/ItemContext.js @@ -114,7 +114,7 @@ export function ItemContextProvider({ children }) { } setProvenanceObjects(provenanceArray); } - }, [items, newProvenanceAddress, itemAdded, mainAccount]); + }, [items, newProvenanceAddress, itemAdded, mainAccount, signer]); const stringToBytes32 = (string) => ethers.utils.formatBytes32String(string); diff --git a/src/context/UserContext.js b/src/context/UserContext.js index 3fe7e6e..d4d132c 100644 --- a/src/context/UserContext.js +++ b/src/context/UserContext.js @@ -1,5 +1,11 @@ // src/context/state.js -import { createContext, useContext, useEffect, useState, useCallback } from "react"; +import { + createContext, + useContext, + useEffect, + useState, + useCallback, +} from "react"; // import { networkParams } from "./networks"; import { toHex, truncateAddress } from "../hooks/utils"; import { ethers } from "ethers"; @@ -38,7 +44,7 @@ export function UserContextProvider({ children }) { } }, []); - const connectWallet = useCallback(async() => { + const connectWallet = useCallback(async () => { try { const modalProvider = await web3Modal.connect(); const provider = new ethers.providers.Web3Provider(modalProvider); @@ -60,7 +66,7 @@ export function UserContextProvider({ children }) { ); console.error(error, "connect error"); } - },[web3Modal]); + }, [web3Modal]); //connect page on reload useEffect(() => { @@ -69,8 +75,6 @@ export function UserContextProvider({ children }) { } }, [web3Modal, connectWallet]); - - const handleNetwork = (e) => { const id = e.target.value; setNetwork(Number(id)); @@ -114,7 +118,7 @@ export function UserContextProvider({ children }) { await web3Modal.clearCachedProvider(); refreshState(); console.log("disconnect"); - },[web3Modal]); + }, [web3Modal]); //EVENT LISTENERS diff --git a/src/deployedContractAddresses/instrumenttokenaddress.json b/src/deployedContractAddresses/instrumenttokenaddress.json index fb258a8..3c28655 100644 --- a/src/deployedContractAddresses/instrumenttokenaddress.json +++ b/src/deployedContractAddresses/instrumenttokenaddress.json @@ -1 +1 @@ -{ "address": "0x62737d2A21aAc79826AEf1CBd52B3Ae2641d8bF1" } \ No newline at end of file +{ "address": "0x62737d2A21aAc79826AEf1CBd52B3Ae2641d8bF1" } diff --git a/src/deployedContractAddresses/mothershipaddress.json b/src/deployedContractAddresses/mothershipaddress.json index 108cfd2..319c382 100644 --- a/src/deployedContractAddresses/mothershipaddress.json +++ b/src/deployedContractAddresses/mothershipaddress.json @@ -1 +1 @@ -{ "address": "0x88550a5d951f5717Ec259659Ed9A6D18544eA9B5" } \ No newline at end of file +{ "address": "0x88550a5d951f5717Ec259659Ed9A6D18544eA9B5" }