Merge remote-tracking branch 'origin/feature/m-jordan' into feature/m

This commit is contained in:
bartosz-lipinski 2021-04-27 22:22:52 -05:00
commit ada2fc035b
7 changed files with 65 additions and 58 deletions

View File

@ -37,15 +37,24 @@ export class Bid {
export class BidState { export class BidState {
type: BidStateType; type: BidStateType;
bids?: Bid[]; bids: Bid[];
max?: BN; max: BN;
public getWinnerIndex(bidder: PublicKey): number | null { public getWinnerIndex(bidder: PublicKey): number | null {
if (!this.bids) return null; if (!this.bids) return null;
return this.bids.findIndex(b => b.key.toBase58() == bidder.toBase58()); console.log(
'bids',
this.bids.map(b => b.key.toBase58()),
bidder.toBase58(),
);
const index = this.bids.findIndex(
b => b.key.toBase58() == bidder.toBase58(),
);
if (index != -1) return index;
else return null;
} }
constructor(args: { type: BidStateType; bids?: Bid[]; max?: BN }) { constructor(args: { type: BidStateType; bids: Bid[]; max: BN }) {
this.type = args.type; this.type = args.type;
this.bids = args.bids; this.bids = args.bids;
this.max = args.max; this.max = args.max;
@ -326,8 +335,8 @@ export const AUCTION_SCHEMA = new Map<any, any>([
kind: 'struct', kind: 'struct',
fields: [ fields: [
['type', 'u8'], ['type', 'u8'],
['bids', { kind: 'option', type: [Bid] }], ['bids', [Bid]],
['max', { kind: 'option', type: 'u64' }], ['max', 'u64'],
], ],
}, },
], ],

View File

@ -170,14 +170,12 @@ export async function createAuctionManager(
wallet, wallet,
vault, vault,
// No need to validate open edition, it's already been during init // No need to validate open edition, it's already been during init
safetyDeposits.filter( safetyDeposits.filter((_, i) => i != settings.openEditionConfig),
(_, i) =>
settings.openEditionConfig != null && i != settings.openEditionConfig,
),
stores, stores,
), ),
}; };
console.log('Lookup', lookup.validateBoxes);
let signers: Account[][] = [ let signers: Account[][] = [
lookup.externalPriceAccount.signers, lookup.externalPriceAccount.signers,
lookup.createVault.signers, lookup.createVault.signers,

View File

@ -53,10 +53,11 @@ export async function sendRedeemBid(
); );
let winnerIndex = null; let winnerIndex = null;
if (auctionView.myBidderMetadata?.info.bidderPubkey) if (auctionView.myBidderPot?.pubkey)
winnerIndex = auctionView.auction.info.bidState.getWinnerIndex( winnerIndex = auctionView.auction.info.bidState.getWinnerIndex(
auctionView.myBidderMetadata?.info.bidderPubkey, auctionView.myBidderPot?.pubkey,
); );
console.log('Winner index', winnerIndex);
if (winnerIndex != null) { if (winnerIndex != null) {
const winningConfig = const winningConfig =
@ -65,6 +66,7 @@ export async function sendRedeemBid(
const safetyDeposit = item.safetyDeposit; const safetyDeposit = item.safetyDeposit;
switch (winningConfig.editionType) { switch (winningConfig.editionType) {
case EditionType.LimitedEdition: case EditionType.LimitedEdition:
console.log('Redeeming limited');
await setupRedeemLimitedInstructions( await setupRedeemLimitedInstructions(
connection, connection,
auctionView, auctionView,
@ -79,6 +81,7 @@ export async function sendRedeemBid(
); );
break; break;
case EditionType.MasterEdition: case EditionType.MasterEdition:
console.log('Redeeming master');
await setupRedeemMasterInstructions( await setupRedeemMasterInstructions(
auctionView, auctionView,
accountsByMint, accountsByMint,
@ -91,6 +94,7 @@ export async function sendRedeemBid(
); );
break; break;
case EditionType.NA: case EditionType.NA:
console.log('Redeeming normal');
await setupRedeemInstructions( await setupRedeemInstructions(
auctionView, auctionView,
accountsByMint, accountsByMint,
@ -461,10 +465,6 @@ async function setupRedeemOpenInstructions(
cashInOpenPrizeAuthorizationTokenSigner.push(burnAuthority); cashInOpenPrizeAuthorizationTokenSigner.push(burnAuthority);
console.log(
'My master edition key',
item.masterEdition.pubkey.toBase58(),
);
await mintNewEditionFromMasterEditionViaToken( await mintNewEditionFromMasterEditionViaToken(
newOpenEditionMint, newOpenEditionMint,
item.metadata.info.mint, item.metadata.info.mint,

View File

@ -154,7 +154,13 @@ export function MetaProvider({ children = null as any }) {
...e, ...e,
[a.pubkey.toBase58()]: account, [a.pubkey.toBase58()]: account,
})); }));
} catch { } catch (e) {
if (
a.pubkey.toBase58() ===
'yNPR97243ke5cV3QGW9ZhSxfVP1K2YVQxzkjikCVbee'
) {
console.error(e);
}
// ignore errors // ignore errors
// add type as first byte for easier deserialization // add type as first byte for easier deserialization
} }

View File

@ -134,7 +134,6 @@ export enum EditionType {
export class WinningConfig { export class WinningConfig {
safetyDepositBoxIndex: number = 0; safetyDepositBoxIndex: number = 0;
amount: number = 0; amount: number = 0;
hasAuthority: boolean = false;
editionType: EditionType = EditionType.NA; editionType: EditionType = EditionType.NA;
constructor(args?: WinningConfig) { constructor(args?: WinningConfig) {
@ -233,7 +232,6 @@ export const SCHEMA = new Map<any, any>([
fields: [ fields: [
['safetyDepositBoxIndex', 'u8'], ['safetyDepositBoxIndex', 'u8'],
['amount', 'u8'], ['amount', 'u8'],
['hasAuthority', 'u8'], // bool
['editionType', 'u8'], ['editionType', 'u8'],
], ],
}, },

View File

@ -37,15 +37,7 @@ export async function initAuctionManager(
}); });
const data = Buffer.from(serialize(SCHEMA, value)); const data = Buffer.from(serialize(SCHEMA, value));
console.log( console.log('mData', data, settings);
'Auction',
auctionManagerKey,
vault,
auctionKey,
auctionManagerAuthority,
payer,
acceptPaymentAccount,
);
const keys = [ const keys = [
{ {
pubkey: auctionManagerKey, pubkey: auctionManagerKey,

View File

@ -168,15 +168,17 @@ export const AuctionCreateView = () => {
settings = new AuctionManagerSettings({ settings = new AuctionManagerSettings({
openEditionWinnerConstraint: WinningConstraint.NoOpenEdition, openEditionWinnerConstraint: WinningConstraint.NoOpenEdition,
openEditionNonWinningConstraint: NonWinningConstraint.NoOpenEdition, openEditionNonWinningConstraint: NonWinningConstraint.NoOpenEdition,
winningConfigs: attributes.items.map((item, index) => (new WinningConfig({ winningConfigs: attributes.items.map(
(item, index) =>
new WinningConfig({
// TODO: check index // TODO: check index
safetyDepositBoxIndex: index, safetyDepositBoxIndex: index,
amount: 1, amount: 1,
hasAuthority: false,
editionType: item.masterEdition editionType: item.masterEdition
? EditionType.MasterEdition ? EditionType.MasterEdition
: EditionType.NA, : EditionType.NA,
}))), }),
),
openEditionConfig: null, openEditionConfig: null,
openEditionFixedPrice: null, openEditionFixedPrice: null,
}); });
@ -193,7 +195,7 @@ export const AuctionCreateView = () => {
wallet, wallet,
settings, settings,
winnerLimit, winnerLimit,
new BN((attributes.auctionDuration || 1) * 60 * 60 * 24), new BN((attributes.auctionDuration || 1) * 60),
new BN((attributes.gapTime || 1) * 60), new BN((attributes.gapTime || 1) * 60),
attributes.items, attributes.items,
// TODO: move to config // TODO: move to config
@ -364,7 +366,7 @@ export const AuctionCreateView = () => {
)} )}
<Col {...(saving ? { xl: 24 } : { xl: 16, md: 17 })}> <Col {...(saving ? { xl: 24 } : { xl: 16, md: 17 })}>
{stepsByCategory[attributes.category][step][1]} {stepsByCategory[attributes.category][step][1]}
{0 < step && step < (stepsByCategory[attributes.category].length - 1) && ( {0 < step && step < stepsByCategory[attributes.category].length - 1 && (
<Button <Button
style={{ width: '100%' }} style={{ width: '100%' }}
onClick={() => gotoNextStep(step - 1)} onClick={() => gotoNextStep(step - 1)}
@ -497,7 +499,8 @@ const CopiesStep = (props: {
> >
Select NFT Select NFT
</ArtSelector> </ArtSelector>
{props.attributes.category !== AuctionCategory.Open && <label className="action-field"> {props.attributes.category !== AuctionCategory.Open && (
<label className="action-field">
<span className="field-title"> <span className="field-title">
How many copies do you want to create? How many copies do you want to create?
</span> </span>
@ -515,7 +518,8 @@ const CopiesStep = (props: {
}) })
} }
/> />
</label>} </label>
)}
</Col> </Col>
</Row> </Row>
<Row> <Row>