Still working on it.
This commit is contained in:
parent
0dfdcaa7d4
commit
7fce1ba024
|
@ -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 };
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue