Still working on it.

This commit is contained in:
Jordan Prince 2021-08-16 18:06:10 -05:00
parent 0dfdcaa7d4
commit 7fce1ba024
4 changed files with 52 additions and 15 deletions

View File

@ -225,6 +225,8 @@ export class AuctionData {
/// Used for precalculation on the front end, not a backend key
bidRedemptionKey?: StringPublicKey;
auctionDataExtended?: StringPublicKey;
public timeToEnd(): CountdownState {
const now = moment().unix();
const ended = { days: 0, hours: 0, minutes: 0, seconds: 0 };

View File

@ -1,4 +1,5 @@
import {
PublicKey,
SystemProgram,
SYSVAR_RENT_PUBKEY,
TransactionInstruction,
@ -6,7 +7,12 @@ import {
import { programIds } from '../utils/programIds';
import { deserializeUnchecked, serialize } from 'borsh';
import BN from 'bn.js';
import { findProgramAddress, StringPublicKey, toPublicKey } from '../utils';
import {
findProgramAddress,
METADATA_PROGRAM_ID,
StringPublicKey,
toPublicKey,
} from '../utils';
export const METADATA_PREFIX = 'metadata';
export const EDITION = 'edition';
export const RESERVATION = 'reservation';
@ -244,22 +250,23 @@ export class Metadata {
}
public async init() {
const edition: PublicKey;
if (this.info.editionNonce != null) {
edition = await PublicKey.createProgramAddress(
[
Buffer.from(METADATA_PREFIX),
METADATA_PROGRAM_ID.toBuffer(),
tempCache.metadata[i].info.mint.toBuffer(),
new Uint8Array([tempCache.metadata[i].info.editionNonce || 0]),
],
METADATA_PROGRAM_ID,
);
const metadata = toPublicKey(programIds().metadata);
if (this.editionNonce != null) {
this.edition = (
await PublicKey.createProgramAddress(
[
Buffer.from(METADATA_PREFIX),
metadata.toBuffer(),
toPublicKey(this.mint).toBuffer(),
new Uint8Array([this.editionNonce || 0]),
],
metadata,
)
).toBase58();
} else {
edition = await getEdition(tempCache.metadata[i].info.mint);
this.edition = await getEdition(this.mint);
}
this.edition = edition;
this.masterEdition = edition;
this.masterEdition = this.edition;
}
}

View File

@ -11,6 +11,7 @@ import {
MasterEditionV2,
useWallet,
StringPublicKey,
AuctionDataExtended,
} from '@oyster/common';
import BN from 'bn.js';
import { useEffect, useState } from 'react';
@ -22,6 +23,7 @@ import {
BidRedemptionTicket,
BidRedemptionTicketV2,
getBidderKeys,
MetaplexKey,
SafetyDepositConfig,
WinningConfigType,
} from '../models/metaplex';
@ -49,6 +51,7 @@ export interface AuctionView {
// once tiered auctions come along, this becomes an array of arrays.
items: AuctionViewItem[][];
auction: ParsedAccount<AuctionData>;
auctionDataExtended?: ParsedAccount<AuctionDataExtended>;
auctionManager: AuctionManager;
participationItem?: AuctionViewItem;
state: AuctionViewState;
@ -134,6 +137,7 @@ export const useAuctions = (state?: AuctionViewState) => {
metadataByMasterEdition,
safetyDepositConfigsByAuctionManagerAndIndex,
bidRedemptionV2sByAuctionManagerAndWinningIndex,
auctionDataExtended,
} = useMeta();
useEffect(() => {
@ -142,6 +146,7 @@ export const useAuctions = (state?: AuctionViewState) => {
const nextAuctionView = processAccountsIntoAuctionView(
pubkey,
auction,
auctionDataExtended,
auctionManagersByAuction,
safetyDepositBoxesByVaultAndIndex,
metadataByMint,
@ -173,6 +178,7 @@ export const useAuctions = (state?: AuctionViewState) => {
}, [
state,
auctions,
auctionDataExtended,
auctionManagersByAuction,
safetyDepositBoxesByVaultAndIndex,
metadataByMint,
@ -211,6 +217,7 @@ function buildListWhileNonZero<T>(hash: Record<string, T>, key: string) {
export function processAccountsIntoAuctionView(
walletPubkey: StringPublicKey | null | undefined,
auction: ParsedAccount<AuctionData>,
auctionDataExtended: Record<string, ParsedAccount<AuctionDataExtended>>,
auctionManagersByAuction: Record<
string,
ParsedAccount<AuctionManagerV1 | AuctionManagerV2>
@ -310,6 +317,15 @@ export function processAccountsIntoAuctionView(
bidRedemptions,
});
const auctionDataExtendedKey =
auctionManagerInstance.info.key == MetaplexKey.AuctionManagerV2
? (auctionManagerInstance as ParsedAccount<AuctionManagerV2>).info
.auctionDataExtended
: null;
const auctionDataExt = auctionDataExtendedKey
? auctionDataExtended[auctionDataExtendedKey]
: null;
const boxesExpected = auctionManager.safetyDepositBoxesExpected.toNumber();
let bidRedemption: ParsedAccount<BidRedemptionTicket> | undefined =
@ -330,6 +346,7 @@ export function processAccountsIntoAuctionView(
existingAuctionView.myBidderPot = bidderPot;
existingAuctionView.myBidderMetadata = bidderMetadata;
existingAuctionView.myBidRedemption = bidRedemption;
existingAuctionView.auctionDataExtended = auctionDataExt || undefined;
for (let i = 0; i < existingAuctionView.items.length; i++) {
const winningSet = existingAuctionView.items[i];
for (let j = 0; j < winningSet.length; j++) {
@ -402,6 +419,7 @@ export function processAccountsIntoAuctionView(
auctionManager,
state,
vault,
auctionDataExtended: auctionDataExt || undefined,
items: auctionManager.getItemsFromSafetyDepositBoxes(
metadataByMint,
masterEditionsByPrintingMint,

View File

@ -14,6 +14,7 @@ import {
MasterEditionV2,
toPublicKey,
StringPublicKey,
getAuctionExtended,
} from '@oyster/common';
import { AccountInfo, SystemProgram } from '@solana/web3.js';
import BN from 'bn.js';
@ -88,6 +89,7 @@ export class PayoutTicket {
this.amountPaid = args.amountPaid;
}
}
export class AuctionManager {
pubkey: StringPublicKey;
store: StringPublicKey;
@ -259,6 +261,7 @@ export class AuctionManagerV2 {
vault: StringPublicKey;
acceptPayment: StringPublicKey;
state: AuctionManagerStateV2;
auctionDataExtended?: StringPublicKey;
constructor(args: {
store: StringPublicKey;
@ -275,6 +278,13 @@ export class AuctionManagerV2 {
this.vault = args.vault;
this.acceptPayment = args.acceptPayment;
this.state = args.state;
const auction = programIds().auction;
getAuctionExtended({
auctionProgramId: auction,
resource: this.vault,
}).then(val => (this.auctionDataExtended = val));
}
}