diff --git a/packages/common/src/actions/metadata.ts b/packages/common/src/actions/metadata.ts index c69c11d..a586a9b 100644 --- a/packages/common/src/actions/metadata.ts +++ b/packages/common/src/actions/metadata.ts @@ -87,10 +87,16 @@ class CreateMetadataArgs { symbol: string; uri: string; - constructor(args: { name: string; symbol: string; uri: string }) { + constructor(args: { + name: string; + symbol: string; + uri: string; + allow_duplicates?: boolean; + }) { this.name = args.name; this.symbol = args.symbol; this.uri = args.uri; + this.allow_duplicates = !!args.allow_duplicates; } } class UpdateMetadataArgs { @@ -226,11 +232,12 @@ export async function createMetadata( symbol: string, name: string, uri: string, + allow_duplicates: boolean, + updateAuthority: PublicKey, mintKey: PublicKey, mintAuthorityKey: PublicKey, instructions: TransactionInstruction[], payer: PublicKey, - updateAuthority: PublicKey, signers: Account[], ) { const metadataProgramId = programIds().metadata; @@ -258,7 +265,7 @@ export async function createMetadata( ) )[0]; - const value = new CreateMetadataArgs({ name, symbol, uri }); + const value = new CreateMetadataArgs({ name, symbol, uri, allow_duplicates }); const data = Buffer.from(serialize(SCHEMA, value)); const keys = [ diff --git a/packages/common/src/contexts/connection.tsx b/packages/common/src/contexts/connection.tsx index 6313acc..c10ec42 100644 --- a/packages/common/src/contexts/connection.tsx +++ b/packages/common/src/contexts/connection.tsx @@ -1,7 +1,9 @@ import { useLocalStorageState } from '../utils/utils'; import { Account, + BlockhashAndFeeCalculator, clusterApiUrl, + Commitment, Connection, Transaction, TransactionInstruction, @@ -245,26 +247,32 @@ export const sendTransactions = async ( commitment = 'singleGossip', successCallback: (txid: string, ind: number) => void = (txid, ind) => {}, failCallback: (txid: string, ind: number) => boolean = (txid, ind) => false, + block?: BlockhashAndFeeCalculator, ) => { const unsignedTxns: Transaction[] = []; + + if(!block) { + block = await connection.getRecentBlockhash('singleGossip'); + } + for (let i = 0; i < instructionSet.length; i++) { const instructions = instructionSet[i]; const signers = signersSet[i]; let transaction = new Transaction(); instructions.forEach(instruction => transaction.add(instruction)); - transaction.recentBlockhash = ( - await connection.getRecentBlockhash('max') - ).blockhash; + transaction.recentBlockhash = block.blockhash; transaction.setSigners( - // fee payied by the wallet owner + // fee payed by the wallet owner wallet.publicKey, ...signers.map(s => s.publicKey), ); if (signers.length > 0) { transaction.partialSign(...signers); } + unsignedTxns.push(transaction); } + const signedTxns = await wallet.signAllTransactions(unsignedTxns); const rawTransactions = signedTxns.map((t: Transaction) => t.serialize()); let options = { @@ -272,41 +280,46 @@ export const sendTransactions = async ( commitment, }; + const tasks: Promise[] = []; for (let i = 0; i < rawTransactions.length; i++) { const rawTransaction = rawTransactions[i]; - const txid = await connection.sendRawTransaction(rawTransaction, options); + const task = connection.sendRawTransaction(rawTransaction, options).then(async (txid) => { + if (awaitConfirmation) { + const status = ( + await connection.confirmTransaction( + txid, + options && (options.commitment as any), + ) + ).value; - if (awaitConfirmation) { - const status = ( - await connection.confirmTransaction( - txid, - options && (options.commitment as any), - ) - ).value; + if (status?.err && !failCallback(txid, i)) { + const errors = await getErrorForTransaction(connection, txid); + notify({ + message: 'Transaction failed...', + description: ( + <> + {errors.map(err => ( +
{err}
+ ))} + + + ), + type: 'error', + }); - if (status?.err && !failCallback(txid, i)) { - const errors = await getErrorForTransaction(connection, txid); - notify({ - message: 'Transaction failed...', - description: ( - <> - {errors.map(err => ( -
{err}
- ))} - - - ), - type: 'error', - }); - - throw new Error( - `Raw transaction ${txid} failed (${JSON.stringify(status)})`, - ); - } else { - successCallback(txid, i); + throw new Error( + `Raw transaction ${txid} failed (${JSON.stringify(status)})`, + ); + } else { + successCallback(txid, i); + } } - } + }); + + tasks.push(task); } + + return await Promise.all(tasks); }; export const sendTransaction = async ( @@ -315,22 +328,33 @@ export const sendTransaction = async ( instructions: TransactionInstruction[], signers: Account[], awaitConfirmation = true, - commitment = 'singleGossip', + commitment: Commitment = 'singleGossip', + includesFeePayer: boolean = false, ) => { let transaction = new Transaction(); instructions.forEach(instruction => transaction.add(instruction)); transaction.recentBlockhash = ( - await connection.getRecentBlockhash('max') + await connection.getRecentBlockhash(commitment) ).blockhash; - transaction.setSigners( - // fee payied by the wallet owner - wallet.publicKey, - ...signers.map(s => s.publicKey), - ); + if(includesFeePayer) { + transaction.setSigners( + ...signers.map(s => s.publicKey), + ); + } else { + transaction.setSigners( + // fee payed by the wallet owner + wallet.publicKey, + ...signers.map(s => s.publicKey), + ); + } + if (signers.length > 0) { transaction.partialSign(...signers); } - transaction = await wallet.signTransaction(transaction); + if(!includesFeePayer) { + transaction = await wallet.signTransaction(transaction); + } + const rawTransaction = transaction.serialize(); let options = { skipPreflight: true, diff --git a/packages/metavinci/public/CNAME b/packages/metavinci/public/CNAME deleted file mode 100644 index b10007a..0000000 --- a/packages/metavinci/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -www.wormholebridge.com diff --git a/packages/metavinci/public/appbar/logo.svg b/packages/metavinci/public/appbar/logo.svg deleted file mode 100644 index b1a0cdc..0000000 --- a/packages/metavinci/public/appbar/logo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/packages/metavinci/public/apple-icon.png b/packages/metavinci/public/apple-icon.png deleted file mode 100644 index 2c42f52..0000000 Binary files a/packages/metavinci/public/apple-icon.png and /dev/null differ diff --git a/packages/metavinci/public/home/background.svg b/packages/metavinci/public/home/background.svg deleted file mode 100644 index 334a87c..0000000 --- a/packages/metavinci/public/home/background.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/metavinci/public/home/footer.svg b/packages/metavinci/public/home/footer.svg deleted file mode 100644 index 262289d..0000000 --- a/packages/metavinci/public/home/footer.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/metavinci/public/home/get-started.svg b/packages/metavinci/public/home/get-started.svg deleted file mode 100644 index 4755c4f..0000000 --- a/packages/metavinci/public/home/get-started.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/metavinci/public/home/icons/bridge-direction.svg b/packages/metavinci/public/home/icons/bridge-direction.svg deleted file mode 100644 index 551018e..0000000 --- a/packages/metavinci/public/home/icons/bridge-direction.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/metavinci/public/home/icons/down-arrow.svg b/packages/metavinci/public/home/icons/down-arrow.svg deleted file mode 100644 index 82c0a67..0000000 --- a/packages/metavinci/public/home/icons/down-arrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/metavinci/public/home/icons/layers.svg b/packages/metavinci/public/home/icons/layers.svg deleted file mode 100644 index 293daeb..0000000 --- a/packages/metavinci/public/home/icons/layers.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/metavinci/public/home/icons/sd-card.svg b/packages/metavinci/public/home/icons/sd-card.svg deleted file mode 100644 index e763c3a..0000000 --- a/packages/metavinci/public/home/icons/sd-card.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/packages/metavinci/public/img/auction1.jpg b/packages/metavinci/public/img/auction1.jpg deleted file mode 100644 index 4c16ff7..0000000 Binary files a/packages/metavinci/public/img/auction1.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction2.jpg b/packages/metavinci/public/img/auction2.jpg deleted file mode 100644 index 380875e..0000000 Binary files a/packages/metavinci/public/img/auction2.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction3.jpg b/packages/metavinci/public/img/auction3.jpg deleted file mode 100644 index 23e57be..0000000 Binary files a/packages/metavinci/public/img/auction3.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction4.jpg b/packages/metavinci/public/img/auction4.jpg deleted file mode 100644 index 6ae2de5..0000000 Binary files a/packages/metavinci/public/img/auction4.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction5.jpg b/packages/metavinci/public/img/auction5.jpg deleted file mode 100644 index 478c09e..0000000 Binary files a/packages/metavinci/public/img/auction5.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction6.jpg b/packages/metavinci/public/img/auction6.jpg deleted file mode 100644 index 5880a84..0000000 Binary files a/packages/metavinci/public/img/auction6.jpg and /dev/null differ diff --git a/packages/metavinci/public/img/auction7.jpg b/packages/metavinci/public/img/auction7.jpg deleted file mode 100644 index 2512865..0000000 Binary files a/packages/metavinci/public/img/auction7.jpg and /dev/null differ diff --git a/packages/metavinci/public/ms-icon-144x144.png b/packages/metavinci/public/ms-icon-144x144.png deleted file mode 100644 index a186713..0000000 Binary files a/packages/metavinci/public/ms-icon-144x144.png and /dev/null differ diff --git a/packages/metavinci/public/ms-icon-150x150.png b/packages/metavinci/public/ms-icon-150x150.png deleted file mode 100644 index 2a1c7a0..0000000 Binary files a/packages/metavinci/public/ms-icon-150x150.png and /dev/null differ diff --git a/packages/metavinci/public/ms-icon-310x310.png b/packages/metavinci/public/ms-icon-310x310.png deleted file mode 100644 index 6075908..0000000 Binary files a/packages/metavinci/public/ms-icon-310x310.png and /dev/null differ diff --git a/packages/metavinci/public/ms-icon-70x70.png b/packages/metavinci/public/ms-icon-70x70.png deleted file mode 100644 index 9de2426..0000000 Binary files a/packages/metavinci/public/ms-icon-70x70.png and /dev/null differ diff --git a/packages/metavinci/src/components/ArtCard/index.less b/packages/metavinci/src/components/ArtCard/index.less new file mode 100644 index 0000000..eb62be5 --- /dev/null +++ b/packages/metavinci/src/components/ArtCard/index.less @@ -0,0 +1,32 @@ + +.art-card { + min-width: 200px; + max-width: 300px; + margin-top: 30px; + filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, 0.1)); + border-radius: 8px; + overflow: hidden; + + .ant-card-body { + display: flex; + flex-direction: row; + align-items: flex-start; + padding: 24px; + text-align: left; + + /* gradients/metal */ + background: #282828; + box-shadow: inset 0px 4px 20px rgba(0, 0, 0, 0.3); + border-radius: 0px 0px 8px 8px; + } + + .ant-card-cover { + min-height: 200px; + } + + .ant-card-meta-title { + font-family: Inter; + font-size: 20px; + font-weight: 600; + } +} diff --git a/packages/metavinci/src/components/ArtCard/index.tsx b/packages/metavinci/src/components/ArtCard/index.tsx index 8a29ca6..dc715f3 100644 --- a/packages/metavinci/src/components/ArtCard/index.tsx +++ b/packages/metavinci/src/components/ArtCard/index.tsx @@ -1,7 +1,8 @@ import React, { useLayoutEffect, useState } from 'react'; -import { Card, Image } from 'antd'; +import { Card, Avatar } from 'antd'; import { MetadataCategory } from '@oyster/common'; import { ArtContent } from './../ArtContent'; +import './index.less'; const { Meta } = Card; @@ -10,17 +11,30 @@ export const ArtCard = ({ category, name, symbol, + description, + artist, preview, }: { image?: string; category?: MetadataCategory - name?: String; - symbol?: String; + name?: string; + symbol?: string; + description?: string; + artist?: string; preview?: boolean; }) => { return ( - }> - + } + > + + {artist} + } + /> ); }; diff --git a/packages/metavinci/src/components/ArtContent/index.tsx b/packages/metavinci/src/components/ArtContent/index.tsx index af6b84d..e989b11 100644 --- a/packages/metavinci/src/components/ArtContent/index.tsx +++ b/packages/metavinci/src/components/ArtContent/index.tsx @@ -4,6 +4,9 @@ import { MetadataCategory } from '@oyster/common' export const ArtContent = ({ content, category, className }: { category?: MetadataCategory, content?: string, className?: string }) => { return category === 'video' ? -