mirror of
https://github.com/stronk-dev/RandomChad.git
synced 2025-07-05 02:35:08 +02:00
Make minter trigger backend
This commit is contained in:
parent
bc183ea8a4
commit
b5dfc95c4c
@ -33,15 +33,15 @@ contract Rocketeer is ERC721Tradable {
|
||||
// TODO: add Api data
|
||||
// https://docs.opensea.io/docs/metadata-standards
|
||||
function baseTokenURI() override public pure returns (string memory) {
|
||||
// return "https://rocketeer.fans/testnetapi/rocketeer/";
|
||||
return "https://rocketeer.fans/api/rocketeer/";
|
||||
return "https://rocketeer.fans/testnetapi/rocketeer/";
|
||||
// return "https://rocketeer.fans/api/rocketeer/";
|
||||
}
|
||||
|
||||
// TODO: add API link
|
||||
// https://docs.opensea.io/docs/contract-level-metadata
|
||||
function contractURI() public pure returns (string memory) {
|
||||
// return "https://rocketeer.fans/testnetapi/collection/";
|
||||
return "https://rocketeer.fans/api/rocketeer/";
|
||||
return "https://rocketeer.fans/testnetapi/collection/";
|
||||
// return "https://rocketeer.fans/api/rocketeer/";
|
||||
}
|
||||
|
||||
// ///////////////////////////////
|
||||
|
@ -15,6 +15,7 @@ export default function Minter() {
|
||||
const [ loading, setLoading ] = useState( false )
|
||||
const [ error, setError ] = useState( undefined )
|
||||
const [ mintedTokenId, setMintedTokenId ] = useState( undefined )
|
||||
const [ txHash, setTxhash ] = useState( null )
|
||||
const totalSupply = useTotalSupply( )
|
||||
const address = useAddress()
|
||||
const chainId = useChainId()
|
||||
@ -36,7 +37,7 @@ export default function Minter() {
|
||||
setLoading( 'Confirm transaction in metamask' )
|
||||
const response = await contract.spawnRocketeer( address )
|
||||
log( 'Successful mint with: ', response )
|
||||
|
||||
setTxhash( response.hash )
|
||||
setLoading( 'Waiting for confirmations...' )
|
||||
|
||||
} catch( e ) {
|
||||
@ -54,16 +55,24 @@ export default function Minter() {
|
||||
|
||||
try {
|
||||
|
||||
// Get confirmation details
|
||||
log( `useEffect: Transfer ${ from } sent to ${ to } `, amount, event )
|
||||
const [ transFrom, transTo, tokenId ] = event.args
|
||||
setMintedTokenId( tokenId.toString() )
|
||||
const id = tokenId.toString()
|
||||
|
||||
// Trigger remote generation
|
||||
const rocketeer = await fetch( `https://rocketeer.fans/${ chainId === 'api' ? '' : 'testnetapi'}/rocketeer/${id}` ).then( res => res.json() )
|
||||
log( 'Oracle returned: ', rocketeer )
|
||||
|
||||
// Set token to state
|
||||
setMintedTokenId( id )
|
||||
setLoading( false )
|
||||
|
||||
} catch( e ) {
|
||||
log( 'Error getting Transfer event from contract: ', e )
|
||||
}
|
||||
|
||||
} ), [ contract, loading ] )
|
||||
} ), [ contract, loading, chainId ] )
|
||||
|
||||
// ///////////////////////////////
|
||||
// Rendering
|
||||
@ -75,6 +84,7 @@ export default function Minter() {
|
||||
|
||||
<div className="lds-dual-ring"></div>
|
||||
<p>{ loading }</p>
|
||||
{ txHash && <a className="button" rel='noreferrer' target="_blank" href={ `https://${ chainId === '0x01' ? 'etherscan' : 'rinkeby.etherscan' }.io/tx/${ txHash }` }>View tx on Etherscan</a> }
|
||||
|
||||
</div> }
|
||||
</Container>
|
||||
|
@ -31,12 +31,17 @@ export async function getAddress() {
|
||||
export function useAddress() {
|
||||
|
||||
const [ address, setAddress ] = useState( undefined )
|
||||
const [ interval, setInterval ] = useState( 5000 )
|
||||
const [ interval, setInterval ] = useState( 1000 )
|
||||
const [ timesChecked, setTimesChecked ] = useState( 0 )
|
||||
|
||||
useInterval( () => {
|
||||
|
||||
setTimesChecked( timesChecked++ )
|
||||
log( 'Checking for address' )
|
||||
if( window.ethereum && window.ethereum.selectedAddress ) setAddress( window.ethereum.selectedAddress )
|
||||
if( window.ethereum && window.ethereum.selectedAddress ) return setAddress( window.ethereum.selectedAddress )
|
||||
|
||||
// if checked five times and interval still running, slow it down
|
||||
if( timesChecked > 5 && !!interval ) setInterval( 5000 )
|
||||
|
||||
}, interval )
|
||||
|
||||
@ -46,16 +51,21 @@ export function useAddress() {
|
||||
if( window.ethereum && window.ethereum.selectedAddress ) {
|
||||
setAddress( window.ethereum.selectedAddress )
|
||||
setInterval( null )
|
||||
} else {
|
||||
setInterval( 5000 )
|
||||
}
|
||||
}, [] )
|
||||
|
||||
// Create listener to accounts change
|
||||
useEffect( f => setListenerAndReturnUnlistener( window.ethereum, 'accountsChanged', addresses => {
|
||||
log( 'Addresses changed to ', addresses )
|
||||
setAddress( addresses[0] )
|
||||
setInterval( 5000 )
|
||||
const [ newAddress ] = addresses
|
||||
|
||||
// No new address? Change nothing
|
||||
if( !newAddress ) return
|
||||
|
||||
// New address? Set it to state and stop interval
|
||||
setAddress( newAddress )
|
||||
setInterval( null )
|
||||
|
||||
} ), [ ] )
|
||||
|
||||
|
||||
|
2268
package-lock.json
generated
2268
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -14,6 +14,7 @@
|
||||
"dependencies": {
|
||||
"@openzeppelin/contracts": "^4.3.2",
|
||||
"@truffle/hdwallet-provider": "^1.5.1",
|
||||
"dotenv": "^10.0.0"
|
||||
"dotenv": "^10.0.0",
|
||||
"truffle-ledger-provider": "^1.0.3"
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,9 @@
|
||||
|
||||
require('dotenv').config()
|
||||
|
||||
const HDWalletProvider = require('@truffle/hdwallet-provider');
|
||||
// const HDWalletProvider = require('@truffle/hdwallet-provider');
|
||||
const LedgerWalletProvider = require('truffle-ledger-provider');
|
||||
const ledgerOptions = {}
|
||||
|
||||
// Copied from https://github.com/ProjectOpenSea/opensea-creatures
|
||||
const MNEMONIC = process.env.MNEMONIC;
|
||||
@ -69,7 +71,8 @@ module.exports = {
|
||||
},
|
||||
rinkeby: {
|
||||
provider: function () {
|
||||
return new HDWalletProvider(MNEMONIC, rinkebyNodeUrl);
|
||||
// return new HDWalletProvider(MNEMONIC, rinkebyNodeUrl);
|
||||
return new LedgerWalletProvider( ledgerOptions, rinkebyNodeUrl );
|
||||
},
|
||||
gas: 5000000,
|
||||
network_id: 4,
|
||||
@ -77,7 +80,8 @@ module.exports = {
|
||||
live: {
|
||||
network_id: 1,
|
||||
provider: function () {
|
||||
return new HDWalletProvider(MNEMONIC, mainnetNodeUrl);
|
||||
// return new HDWalletProvider(MNEMONIC, mainnetNodeUrl);
|
||||
return new LedgerWalletProvider( ledgerOptions, rinkebyNodeUrl );
|
||||
},
|
||||
gas: 5000000,
|
||||
gasPrice: 5000000000,
|
||||
|
Loading…
x
Reference in New Issue
Block a user