diff --git a/js/packages/cli/src/helpers/accounts.ts b/js/packages/cli/src/helpers/accounts.ts index afa8e33..87af7dd 100644 --- a/js/packages/cli/src/helpers/accounts.ts +++ b/js/packages/cli/src/helpers/accounts.ts @@ -205,7 +205,7 @@ export const getMasterEdition = async ( export function loadWalletKey(keypair): Keypair { if (!keypair || keypair == '') { - throw new Error("Keypair is required!"); + throw new Error('Keypair is required!'); } const loaded = Keypair.fromSecretKey( new Uint8Array(JSON.parse(fs.readFileSync(keypair).toString())), diff --git a/js/packages/fair-launch/src/fair-launch.ts b/js/packages/fair-launch/src/fair-launch.ts index 3298f73..eeac85d 100644 --- a/js/packages/fair-launch/src/fair-launch.ts +++ b/js/packages/fair-launch/src/fair-launch.ts @@ -188,9 +188,8 @@ export const punchTicket = async ( const ticket = fairLaunch.ticket.data; - const fairLaunchLotteryBitmap = ( //@ts-ignore - await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint) - )[0]; + const fairLaunchLotteryBitmap = //@ts-ignore + (await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint))[0]; const buyerTokenAccount = ( await getAtaForMint( @@ -520,8 +519,9 @@ export const purchaseTicket = async ( ); if (ticket) { - const fairLaunchLotteryBitmap = //@ts-ignore - (await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint))[0]; + const fairLaunchLotteryBitmap = ( //@ts-ignore + await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint) + )[0]; console.log( 'Anchor wallet', anchorWallet.publicKey.toBase58(), diff --git a/js/packages/web/src/actions/nft.tsx b/js/packages/web/src/actions/nft.tsx index f83f30f..56b52b2 100644 --- a/js/packages/web/src/actions/nft.tsx +++ b/js/packages/web/src/actions/nft.tsx @@ -28,7 +28,9 @@ import crypto from 'crypto'; import { getAssetCostToStore } from '../utils/assets'; import { AR_SOL_HOLDER_ID } from '../utils/ids'; import BN from 'bn.js'; + const RESERVED_TXN_MANIFEST = 'manifest.json'; +const RESERVED_METADATA = 'metadata.json'; interface IArweaveResult { error?: string; @@ -40,6 +42,33 @@ interface IArweaveResult { }>; } +const uploadToArweave = async (data: FormData): Promise => { + const resp = await fetch( + 'https://us-central1-principal-lane-200702.cloudfunctions.net/uploadFile4', + { + method: 'POST', + // @ts-ignore + body: data, + }, + ); + + if (!resp.ok) { + return Promise.reject( + new Error( + 'Unable to upload the artwork to Arweave. Please wait and then try again.', + ), + ); + } + + const result: IArweaveResult = await resp.json(); + + if (result.error) { + return Promise.reject(new Error(result.error)); + } + + return result; +}; + export const mintNFT = async ( connection: Connection, wallet: WalletSigner | undefined, @@ -85,7 +114,7 @@ export const mintNFT = async ( const realFiles: File[] = [ ...files, - new File([JSON.stringify(metadataContent)], 'metadata.json'), + new File([JSON.stringify(metadataContent)], RESERVED_METADATA), ]; const { instructions: pushInstructions, signers: pushSigners } = @@ -170,6 +199,7 @@ export const mintNFT = async ( wallet, instructions, signers, + 'single', ); try { @@ -184,6 +214,8 @@ export const mintNFT = async ( // this means we're done getting AR txn setup. Ship it off to ARWeave! const data = new FormData(); + data.append('transaction', txid); + data.append('env', env); const tags = realFiles.reduce( (acc: Record>, f) => { @@ -193,30 +225,10 @@ export const mintNFT = async ( {}, ); data.append('tags', JSON.stringify(tags)); - data.append('transaction', txid); realFiles.map(f => data.append('file[]', f)); // TODO: convert to absolute file name for image - const uploadArweaveResponse = await fetch( - // TODO: add CNAME - env.startsWith('mainnet-beta') - ? 'https://us-central1-principal-lane-200702.cloudfunctions.net/uploadFileProd2' - : 'https://us-central1-principal-lane-200702.cloudfunctions.net/uploadFile2', - { - method: 'POST', - body: data, - }, - ) - - if (!uploadArweaveResponse.ok) { - return Promise.reject(new Error("Unable to upload the artwork to Arweave. Please wait and then try again.")) - } - - const result: IArweaveResult = await uploadArweaveResponse.json(); - - if (result.error) { - return Promise.reject(new Error(result.error)) - } + const result: IArweaveResult = await uploadToArweave(data); const metadataFile = result.messages?.find( m => m.filename === RESERVED_TXN_MANIFEST,