From 617a33092961f874b524880e46bc8eed98e93724 Mon Sep 17 00:00:00 2001 From: Dev - Aletheia Data Date: Tue, 16 Aug 2022 17:13:43 +0000 Subject: [PATCH 1/4] integrated deployed mumbai contract --- .../svg/logo/colored/polygon-matic-logo.png | Bin 0 -> 77839 bytes .../layout/components/header/Topbar.tsx | 7 +- .../sidebar-partials/SidebarGeneral.tsx | 42 +- .../partials/widgets/tables/TablesWidget6.tsx | 2 +- src/app/contracts/config.js | 627 ++++++++++++++++++ src/app/modules/auth/components/Login.tsx | 7 +- src/app/modules/auth/redux/AuthCRUD.ts | 9 +- .../create-app-stepper/CreateAppModal.tsx | 7 +- .../single/start-dashboard/SinglePage.tsx | 3 +- 9 files changed, 693 insertions(+), 11 deletions(-) create mode 100644 public/media/svg/logo/colored/polygon-matic-logo.png create mode 100644 src/app/contracts/config.js diff --git a/public/media/svg/logo/colored/polygon-matic-logo.png b/public/media/svg/logo/colored/polygon-matic-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f5493343bef92b656cca848cbd42c037bcda9ef GIT binary patch literal 77839 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 = ({ } }; + const getContract = async () =>{ + const contract = new web3.eth.Contract(CONTRACT_ABI as AbiItem[], CONTRACT_ADDRESS) + console.log(contract); + const taskCount = await contract.methods.cost().call() + console.log(taskCount); + } + useEffect(() => { setTab(1); + getContract(); + return function cleanup() { if (activeChart) { activeChart.destroy(); @@ -560,15 +586,23 @@ export const SidebarGeneral: React.FC = ({ {/* end::Sidebar Content */} {/* begin::Sidebar footer + */} - */} {/* end::Sidebar footer */} ); diff --git a/src/_start/partials/widgets/tables/TablesWidget6.tsx b/src/_start/partials/widgets/tables/TablesWidget6.tsx index d40ca0b..f41a6b6 100644 --- a/src/_start/partials/widgets/tables/TablesWidget6.tsx +++ b/src/_start/partials/widgets/tables/TablesWidget6.tsx @@ -42,7 +42,7 @@ const TablesWidget6: React.FC = ({ records = data.alexandrias; } else { entityCount = dataFile.aletheias.length > 0 ? dataFile.aletheias.length : 0; - title = "Pruebas cargados"; + title = "Public Data NFTs"; records = dataFile.aletheias; } diff --git a/src/app/contracts/config.js b/src/app/contracts/config.js new file mode 100644 index 0000000..79ac3cc --- /dev/null +++ b/src/app/contracts/config.js @@ -0,0 +1,627 @@ +export const CONTRACT_ADDRESS = '0xBd20F3a5F3763261669CcfB359de3f5851D509a7' + +export const CONTRACT_ABI = [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cost", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hiddenMetadataUri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxMintAmountPerTx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_mintAmount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_cid", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_mintAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "string", + "name": "_cid", + "type": "string" + } + ], + "name": "mintForAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revealed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_cost", + "type": "uint256" + } + ], + "name": "setCost", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_hiddenMetadataUri", + "type": "string" + } + ], + "name": "setHiddenMetadataUri", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxMintAmountPerTx", + "type": "uint256" + } + ], + "name": "setMaxMintAmountPerTx", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_state", + "type": "bool" + } + ], + "name": "setPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_state", + "type": "bool" + } + ], + "name": "setRevealed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_uriPrefix", + "type": "string" + } + ], + "name": "setUriPrefix", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "uriPrefix", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "walletOfOwner", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/src/app/modules/auth/components/Login.tsx b/src/app/modules/auth/components/Login.tsx index b2131a7..bd109b7 100644 --- a/src/app/modules/auth/components/Login.tsx +++ b/src/app/modules/auth/components/Login.tsx @@ -10,8 +10,13 @@ import { Magic } from "magic-sdk"; import { ConnectExtension } from "@magic-ext/connect"; import Web3 from "web3"; +const customNodeOptions = { + rpcUrl: "https://rpc-mumbai.maticvigil.com/", + chainId: 137, +}; + const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { - network: "mainnet", + network: customNodeOptions, locale: "en_US", extensions: [new ConnectExtension()], }); diff --git a/src/app/modules/auth/redux/AuthCRUD.ts b/src/app/modules/auth/redux/AuthCRUD.ts index f42b586..387f650 100644 --- a/src/app/modules/auth/redux/AuthCRUD.ts +++ b/src/app/modules/auth/redux/AuthCRUD.ts @@ -35,10 +35,15 @@ export function requestPassword(email: string) { declare let window: any; +const customNodeOptions = { + rpcUrl: "https://rpc-mumbai.maticvigil.com/", + chainId: 137, +}; + const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { - network: "mainnet", + network: customNodeOptions, locale: "en_US", - extensions: [new ConnectExtension()] + extensions: [new ConnectExtension()], }); export function getUserByToken() { diff --git a/src/app/pages/dashboards/_modals/create-app-stepper/CreateAppModal.tsx b/src/app/pages/dashboards/_modals/create-app-stepper/CreateAppModal.tsx index b1344c7..7c01ce7 100644 --- a/src/app/pages/dashboards/_modals/create-app-stepper/CreateAppModal.tsx +++ b/src/app/pages/dashboards/_modals/create-app-stepper/CreateAppModal.tsx @@ -24,8 +24,13 @@ interface Props { } declare let window: any; +const customNodeOptions = { + rpcUrl: "https://rpc-mumbai.maticvigil.com/", + chainId: 137, +}; + const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { - network: "mainnet", + network: customNodeOptions, locale: "en_US", extensions: [new ConnectExtension()], }); diff --git a/src/app/pages/single/start-dashboard/SinglePage.tsx b/src/app/pages/single/start-dashboard/SinglePage.tsx index dcde838..c0ddbbe 100644 --- a/src/app/pages/single/start-dashboard/SinglePage.tsx +++ b/src/app/pages/single/start-dashboard/SinglePage.tsx @@ -141,11 +141,12 @@ export const SinglePage: FC = (data: any) => { >
From 9cf6f80b55e04d50a3c6a7cd110ecafe38bf19ec Mon Sep 17 00:00:00 2001 From: EnzoVezzaro Date: Sun, 11 Sep 2022 18:44:15 -0400 Subject: [PATCH 2/4] change smart contract --- .../layout/components/header/Topbar.tsx | 3 +- .../sidebar-partials/SidebarGeneral.tsx | 150 +- src/app/contracts/config.js | 1299 +++++++++-------- src/app/modules/auth/components/Login.tsx | 3 +- src/app/modules/auth/redux/AuthCRUD.ts | 3 +- .../create-app-stepper/CreateAppModal.tsx | 3 +- 6 files changed, 806 insertions(+), 655 deletions(-) diff --git a/src/_start/layout/components/header/Topbar.tsx b/src/_start/layout/components/header/Topbar.tsx index e3d948d..eaacf87 100644 --- a/src/_start/layout/components/header/Topbar.tsx +++ b/src/_start/layout/components/header/Topbar.tsx @@ -13,9 +13,10 @@ import * as auth from "../../../../app/modules/auth/redux/AuthRedux"; import { Magic } from "magic-sdk"; import { ConnectExtension } from "@magic-ext/connect"; import Web3 from "web3"; +import { CHAIN_ID } from "app/contracts/config"; const customNodeOptions = { rpcUrl: "https://rpc-mumbai.maticvigil.com/", - chainId: 137, + chainId: CHAIN_ID, }; const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { diff --git a/src/_start/partials/layout/sidebar-partials/SidebarGeneral.tsx b/src/_start/partials/layout/sidebar-partials/SidebarGeneral.tsx index 3360e62..3753ca6 100644 --- a/src/_start/partials/layout/sidebar-partials/SidebarGeneral.tsx +++ b/src/_start/partials/layout/sidebar-partials/SidebarGeneral.tsx @@ -14,13 +14,17 @@ import { getFilesType } from "_start/helpers/getFilesType"; import { Magic } from "magic-sdk"; import { ConnectExtension } from "@magic-ext/connect"; -import { AbiItem } from 'web3-utils' +import { AbiItem } from "web3-utils"; import Web3 from "web3"; -import { CONTRACT_ABI, CONTRACT_ADDRESS } from '../../../../app/contracts/config'; +import { + CONTRACT_ABI, + CONTRACT_ADDRESS, + CHAIN_ID, +} from "../../../../app/contracts/config"; const customNodeOptions = { rpcUrl: "https://rpc-mumbai.maticvigil.com/", - chainId: 137, + chainId: CHAIN_ID, }; const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { @@ -48,10 +52,12 @@ export const SidebarGeneral: React.FC = ({ }) => { const id = "cat"; const [isLoading, setIsLoading] = useState(false); + const [isLoadingMinting, setIsLoadingMinting] = useState(false); const [activeTab, setActiveTab] = useState(`#sidebar_${id}_tab1`); const [activeTabTotal, setActiveTabTotal] = useState("Loading"); const [elementTab, setElementTab] = useState(false); const [copied, setCopy] = useState(false); + const [contractLoaded, setContractLoaded] = useState(); const [activeChart, setActiveChart] = useState(); if (!props) { @@ -68,6 +74,76 @@ export const SidebarGeneral: React.FC = ({ variables: {}, }); + const getBalance = async (wallet: string) => { + let balance: string; + try { + balance = await web3.eth.getBalance(wallet); + console.log(balance); + } catch (error) { + console.log(error); + } + + return new Promise((resolve) => { + // console.log(accounts); + resolve(balance); + }); + }; + + const getTxs = async () => { + var options = { + fromBlock: "pending", + toBlock: "latest", + address: "0xabc123...", + }; + + await web3.eth.getPendingTransactions().then((res) => { + console.log(res); + }); + }; + + const mint = async () => { + setIsLoadingMinting(true); + try { + /* + let sign = await magic.connect.requestUserInfo(); + console.log(sign); + */ + const contract = contractLoaded; + + const fromAddress = (await web3.eth.getAccounts())[0]; + const cost = await contract.methods.cost().call(); + + contract.options.from = fromAddress; + + console.log(await web3.eth.getBalance(fromAddress)); + console.log(cost); + + await web3.eth.getGasPrice(async function (err, getGasPrice) { + console.log(getGasPrice); + + if (!err) { + try { + let tx = await contract.methods + .mint( + 1, + "bafybeiehpsvsihlzwub53piun3z5uhigbm6clrmhxocajahw3frtan4tt4/token_uri.json", + "bafybeieagjmhrt6sn4yeuk2cypsxnsg5az7ht3xcolzyfidzqgv6szuznu" + ) + .send({ from: fromAddress, gas: "1000000" }); + console.log(tx); + setIsLoadingMinting(false); + } catch (error) { + console.log(error); + setIsLoadingMinting(false); + } + } + }); + } catch (error) { + console.log(error); + setIsLoadingMinting(false); + } + }; + const setTab = async (tab_n: number) => { if (activeChart) { activeChart.destroy(); @@ -138,17 +214,24 @@ export const SidebarGeneral: React.FC = ({ } }; - const getContract = async () =>{ - const contract = new web3.eth.Contract(CONTRACT_ABI as AbiItem[], CONTRACT_ADDRESS) + const initContract = async () => { + const contract = new web3.eth.Contract( + CONTRACT_ABI as AbiItem[], + CONTRACT_ADDRESS + ); + setContractLoaded(contract); + let accounts = await web3.eth.getAccounts(); + getBalance(accounts[0]); console.log(contract); - const taskCount = await contract.methods.cost().call() - console.log(taskCount); - } + const cost = await contract.methods.cost().call(); + console.log(cost); + getTxs(); + }; useEffect(() => { setTab(1); - getContract(); + initContract(); return function cleanup() { if (activeChart) { @@ -189,22 +272,24 @@ export const SidebarGeneral: React.FC = ({ id="kt_sidebar_tabs" role="tablist" > - { - !items && + {!items && (
  • - - Please wait...{" "} - - - -
  • - } + + Please wait...{" "} + + + + + )} {items.map((cat: any, i: number) => { let current_item = cat.connection.values[0]; let img = current_item.icon ? current_item.icon.url - : "/media/svg/logo/gray/aven.svg"; + : "/media/svg/logo/gray/aven.svg"; i++; return (
  • @@ -585,12 +670,20 @@ export const SidebarGeneral: React.FC = ({ {/* end::Sidebar Content */} - {/* begin::Sidebar footer - */} -
  • 0 + ? getSinglePageColumnsNFT(currentUser, data.data.nft) + : [] + } + emptyMessage="No hay NFT disponibles para este CID" id="alexandria-data-list" title="Public Data NFTs" /> diff --git a/src/app/pages/single/start-dashboard/SinglePageWrapper.tsx b/src/app/pages/single/start-dashboard/SinglePageWrapper.tsx index 49561ed..3609945 100644 --- a/src/app/pages/single/start-dashboard/SinglePageWrapper.tsx +++ b/src/app/pages/single/start-dashboard/SinglePageWrapper.tsx @@ -13,6 +13,7 @@ import { SinglePage } from "./SinglePage"; import gql from "graphql-tag"; import { useQuery } from "@apollo/react-hooks"; import { Sidebar } from "../../../../_start/layout/components/Sidebar"; +import { getMintedNFT } from "../../../../setup/web3js"; const getBreadcrumbs = () => { return [ @@ -140,6 +141,8 @@ export function SinglePageWrapper(): JSX.Element { const query = getQuery(cid, entity); const component = Single(query, entity, assetId); + const [nftList, setNftList] = useState([]); + const { setTheme } = useTheme(); // Refresh UI after config updates useEffect(() => { @@ -154,13 +157,32 @@ export function SinglePageWrapper(): JSX.Element { setMinisearchActive(!minisearchActive); }; + async function refreshNfts(cid: string) { + try { + console.log("Refreshing nfts list"); + + return getMintedNFT(cid).then((nfts) => { + setNftList(nfts); + }); + } catch (error) { + console.log(error); + } + } + + useEffect(() => { + refreshNfts(component?.props?.data?.cid); + }, [component?.props?.data?.cid]); + if (component?.props?.data) { const data = component?.props?.data; const { title } = data; + component.props.data.title = title; component.props.data.sidebar = "single"; component.props.data.minisearchActive = minisearchActive; component.props.data.toogleMinisearch = toogleMinisearch; + component.props.data.refreshNfts = refreshNfts; + component.props.data.nft = nftList; } else { return component; } @@ -173,6 +195,7 @@ export function SinglePageWrapper(): JSX.Element { ); diff --git a/src/setup/web3.storage/index.js b/src/setup/web3.storage/index.js new file mode 100644 index 0000000..a324ecc --- /dev/null +++ b/src/setup/web3.storage/index.js @@ -0,0 +1,13 @@ +import { Web3Storage } from 'web3.storage/dist/bundle.esm.min.js' + +function getAccessToken () { + // In a real app, it's better to read an access token from an + // environement variable or other configuration that's kept outside of + // your code base. For this to work, you need to set the + // WEB3STORAGE_TOKEN environment variable before you run your code. + return process.env.REACT_APP_WEB3_STORAGE_API_KEY +} + +export function makeStorageClient () { + return new Web3Storage({ token: getAccessToken() }) +} \ No newline at end of file diff --git a/src/setup/web3js/index.js b/src/setup/web3js/index.js new file mode 100644 index 0000000..0e46107 --- /dev/null +++ b/src/setup/web3js/index.js @@ -0,0 +1,98 @@ +import { Magic } from "magic-sdk"; +import { ConnectExtension } from "@magic-ext/connect"; +import Web3 from "web3"; + +import { + CONTRACT_ABI, + CONTRACT_ADDRESS, + CHAIN_ID + } from "app/contracts/config"; + +const customNodeOptions = { + rpcUrl: "https://rpc-mumbai.maticvigil.com/", + chainId: CHAIN_ID, +}; + +export const POLYSCAN = "https://mumbai.polygonscan.com/tx"; +export const OPENSEA = "https://testnets.opensea.io/assets/mumbai"; + +const magic = new Magic(`${process.env.REACT_APP_MAGIC_LINK_API_KEY}`, { + network: customNodeOptions, + locale: "en_US", + extensions: [new ConnectExtension()], +}); +const web3 = new Web3(magic.rpcProvider); + +export function initSmartContract () { + const contract = new web3.eth.Contract( + CONTRACT_ABI, + CONTRACT_ADDRESS + ); + + return contract +} + +export async function getTokenOwner(token){ + const contract = initSmartContract() + const owner = await contract.methods.ownerOf(token).call(); + return owner; +} + +export async function getOwnersNFT (cid) { + const contract = initSmartContract() + const owners = await contract.methods + .getTokensCID(cid) + .call(); + + return owners; +} + +export async function getMintedNFT (cid) { + const endpoint = `${process.env.REACT_APP_API_ENDPOINT}/nfts/?cid=${cid}&_sort=createdAt:DESC`; + return fetch(endpoint, { + method: "get", + headers: { + "Content-Type": "application/json", + } + }) + .then((response) => response.json()) + .then((data) => { + // console.log(data) + return data; + }) + .catch((err) => { + console.log(err); + return err; + }); +} + +export async function getTxHistory (from, to, amount) { + const contract = initSmartContract() + // Generate filter options + const options = { + filter: { + _from: from, + _to: to, + _value: amount + }, + fromBlock: 'latest' + } + + // Subscribe to Transfer events matching filter criteria + return await contract.events.Transfer(options, async (error, event) => { + if (error) { + console.log(error) + return + } + + console.log('Found incoming Pluton transaction from ' + from + ' to ' + to + '\n'); + console.log('Transaction value is: ' + amount) + console.log('Transaction hash is: ' + txHash + '\n') + + // Initiate transaction confirmation + confirmEtherTransaction(event.transactionHash) + + return txHash + }) +} + From 8aecdd072fdad35c5f46bd0b6ec4e6a6069c65ad Mon Sep 17 00:00:00 2001 From: EnzoVezzaro Date: Sun, 18 Sep 2022 17:18:20 -0400 Subject: [PATCH 4/4] added nft to dashboard --- .../helpers/GetCollectionPageColumns.tsx | 2 - .../partials/components/NFTTimeline/index.tsx | 232 ++++++++++++++++++ .../components/NFTTimeline/timeline.scss | 0 .../partials/components/Stats/index.tsx | 1 - src/_start/partials/components/index.ts | 1 + .../sidebar-partials/SidebarGeneral.tsx | 3 +- .../start-dashboard/StartDashboardPage.tsx | 5 +- .../start-dashboard/SinglePageWrapper.tsx | 11 +- src/setup/web3js/index.js | 4 +- 9 files changed, 247 insertions(+), 12 deletions(-) create mode 100644 src/_start/partials/components/NFTTimeline/index.tsx create mode 100644 src/_start/partials/components/NFTTimeline/timeline.scss diff --git a/src/_start/helpers/GetCollectionPageColumns.tsx b/src/_start/helpers/GetCollectionPageColumns.tsx index dd4b70e..ba65196 100644 --- a/src/_start/helpers/GetCollectionPageColumns.tsx +++ b/src/_start/helpers/GetCollectionPageColumns.tsx @@ -92,8 +92,6 @@ export const getCollectionPageColumns = ( { title: "Action", cells: data?.map((recordItem: Record) => { - console.log(recordItem); - if ( recordItem.status === "on_line" || recordItem.status === "under_review" diff --git a/src/_start/partials/components/NFTTimeline/index.tsx b/src/_start/partials/components/NFTTimeline/index.tsx new file mode 100644 index 0000000..ab90ed7 --- /dev/null +++ b/src/_start/partials/components/NFTTimeline/index.tsx @@ -0,0 +1,232 @@ +/* eslint-disable jsx-a11y/anchor-is-valid */ +import React from "react"; +import { Ktsvg, truncate } from "../../../helpers"; +import { Dropdown1 } from "../../content/dropdown/Dropdown1"; +import gql from "graphql-tag"; +import { useQuery } from "@apollo/react-hooks"; +import { OPENSEA } from "setup/web3js"; + +type Props = { + className: string; +}; + +const NFTTimeline: React.FC = ({ className }) => { + const NFTS_QUERY = gql` + query latestNfts { + nfts(limit: 5, sort: "createdAt:desc", where: {}) { + id + cid + asset { + id + } + txReceipt + createdAt + } + } + `; + + var { data, loading, error } = useQuery(NFTS_QUERY, { + variables: {}, + }); + + console.log(data); + + const NFTS_QUERY_ALL = gql` + query NFTCount { + nftsConnection { + groupBy { + cid { + key + connection { + aggregate { + count + totalCount + } + } + } + } + } + } + `; + + var { + data: dataCount, + loading: loadingCount, + error, + } = useQuery(NFTS_QUERY_ALL, { + variables: {}, + }); + + if (loading || loadingCount) { + return ( +
    + {/* begin::Header */} +
    +

    + PDNFTs + Loading ... +

    +
    + {/* begin::Dropdown */} + + + {/* end::Dropdown */} +
    +
    + {/* end::Header */} + + {/* begin::Body */} +
    + {/* + {/* begin::Item */} +
    + {/* begin::Label */} +
    + 00:00 +
    + {/* end::Label */} + + {/* begin::Badge */} +
    + +
    + {/* end::Badge */} + + {/* begin::Content */} +
    + + Loading ... + +
    + {/* end::Content */} +
    + {/* end::Item */} +
    + {/* + + {/* + ); + } + + console.log(data); + + return ( +
    + {/* begin::Header */} +
    +

    + PDNFTs + + { + dataCount.nftsConnection.groupBy.cid[0].connection.aggregate + .totalCount + }{" "} + NFTs + +

    +
    + {/* begin::Dropdown + + + */} + {/* end::Dropdown */} +
    +
    + {/* end::Header */} + + {/* begin::Body */} +
    + {/* + {data.nfts.map(function (item: any) { + let txReceipt = item.txReceipt; + let cid = item.cid; + let time = new Date(item.createdAt); + let asset = item.asset; + + const getLinkAsset = (cid: string, item: any) => { + let url = item?.id ? `/single/src/${cid}?assetId=${item.id}` : ``; + + return ( + + {`${truncate(`${cid}`, 15)}`} + + ); + }; + + let message = `NFT creado para CID:`; + let badge_color = `color-xls`; + + const getLinkOpensea = (item: any) => { + let url = `${OPENSEA}/${item.events["Transfer"]["address"]}/${item.events["Transfer"]["returnValues"].tokenId}`; + + return ( + + {`${truncate(`${item.transactionHash}`, 15)}`} + + ); + }; + + return ( +
    + {/* begin::Label */} +
    + {time.toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + })} +
    + {/* end::Label */} + + {/* begin::Badge */} +
    + +
    + {/* end::Badge */} + + {/* begin::Content */} +
    + + {`${message}`} {getLinkAsset(cid, asset)}
    + {txReceipt ? getLinkOpensea(txReceipt) : null} +
    +
    + {/* end::Content */} +
    + ); + })} +
    + {/* + + {/* + ); +}; + +export { NFTTimeline }; diff --git a/src/_start/partials/components/NFTTimeline/timeline.scss b/src/_start/partials/components/NFTTimeline/timeline.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/_start/partials/components/Stats/index.tsx b/src/_start/partials/components/Stats/index.tsx index f037020..c8fbd4b 100644 --- a/src/_start/partials/components/Stats/index.tsx +++ b/src/_start/partials/components/Stats/index.tsx @@ -411,7 +411,6 @@ const Stats: React.FC = ({ /> ); }; - console.log(activeTabTotal); return (
    = ({ }, body: JSON.stringify({ cid: props.alexandrias[0].cid, + asset: props.alexandrias[0].id, txReceipt: tx, }), }) @@ -178,7 +179,7 @@ export const SidebarGeneral: React.FC = ({ .then((newData) => { console.log("minted new nft: ", newData); setIsLoadingMinting(false); - updateNFTList(props.alexandrias[0].cid); + updateNFTList(props.alexandrias[0].cid, props.alexandrias[0].id); }) .catch((err) => { console.log(err); diff --git a/src/app/pages/dashboards/start-dashboard/StartDashboardPage.tsx b/src/app/pages/dashboards/start-dashboard/StartDashboardPage.tsx index aa4fa5c..88b681d 100644 --- a/src/app/pages/dashboards/start-dashboard/StartDashboardPage.tsx +++ b/src/app/pages/dashboards/start-dashboard/StartDashboardPage.tsx @@ -4,6 +4,7 @@ import { BigUploader, LibraryStats, Timeline, + NFTTimeline, } from "_start/partials/components"; import { CreateAppModal } from "../_modals/create-app-stepper/CreateAppModal"; import { Stats, TypeStats } from "../../../../_start/partials/components"; @@ -73,7 +74,9 @@ export const StartDashboardPage: React.FC = () => { {/* begin::Row */}
    -
    +
    + +
    { + return getMintedNFT(cid, assetId).then((nfts) => { + console.log("Refreshing nfts list: ", nfts); setNftList(nfts); }); } catch (error) { @@ -170,7 +169,9 @@ export function SinglePageWrapper(): JSX.Element { } useEffect(() => { - refreshNfts(component?.props?.data?.cid); + if (!component?.props?.data?.cid || !component?.props?.data?.id) return; + + refreshNfts(component?.props?.data?.cid, component?.props?.data?.id); }, [component?.props?.data?.cid]); if (component?.props?.data) { diff --git a/src/setup/web3js/index.js b/src/setup/web3js/index.js index 0e46107..ad8f9bc 100644 --- a/src/setup/web3js/index.js +++ b/src/setup/web3js/index.js @@ -47,8 +47,8 @@ export async function getOwnersNFT (cid) { return owners; } -export async function getMintedNFT (cid) { - const endpoint = `${process.env.REACT_APP_API_ENDPOINT}/nfts/?cid=${cid}&_sort=createdAt:DESC`; +export async function getMintedNFT (cid, asset_id) { + const endpoint = `${process.env.REACT_APP_API_ENDPOINT}/nfts/?cid=${cid}&asset=${asset_id}&_sort=createdAt:DESC`; return fetch(endpoint, { method: "get", headers: {