mirror of https://github.com/certusone/oyster.git
Fix states
This commit is contained in:
parent
b026cd1088
commit
3f209d9baa
|
@ -151,7 +151,7 @@ export const mintNFT = async (
|
|||
|
||||
// Force wait for max confirmations
|
||||
// await connection.confirmTransaction(txid, 'max');
|
||||
await connection.getParsedConfirmedTransaction(txid, 'confirmed');
|
||||
await connection.getParsedConfirmedTransaction(txid);
|
||||
|
||||
// this means we're done getting AR txn setup. Ship it off to ARWeave!
|
||||
const data = new FormData();
|
||||
|
|
|
@ -10,13 +10,9 @@ export const useAuction = (id: string) => {
|
|||
prev.set(acc.info.mint.toBase58(), acc);
|
||||
return prev;
|
||||
}, new Map<string, TokenAccount>());
|
||||
const [clock, setClock] = useState<number>(0);
|
||||
const [existingAuctionView, setAuctionView] = useState<AuctionView | null>(
|
||||
null,
|
||||
);
|
||||
useEffect(() => {
|
||||
connection.getSlot().then(setClock);
|
||||
}, [connection]);
|
||||
|
||||
const {
|
||||
auctions,
|
||||
|
@ -46,14 +42,12 @@ export const useAuction = (id: string) => {
|
|||
masterEditions,
|
||||
vaults,
|
||||
accountByMint,
|
||||
clock,
|
||||
undefined,
|
||||
existingAuctionView || undefined,
|
||||
);
|
||||
if (auctionView) setAuctionView(auctionView);
|
||||
}
|
||||
}, [
|
||||
clock,
|
||||
auctions,
|
||||
auctionManagers,
|
||||
safetyDepositBoxesByVaultAndIndex,
|
||||
|
|
|
@ -47,20 +47,15 @@ export interface AuctionView {
|
|||
}
|
||||
|
||||
export const useAuctions = (state: AuctionViewState) => {
|
||||
const connection = useConnection();
|
||||
const { userAccounts } = useUserAccounts();
|
||||
const accountByMint = userAccounts.reduce((prev, acc) => {
|
||||
prev.set(acc.info.mint.toBase58(), acc);
|
||||
return prev;
|
||||
}, new Map<string, TokenAccount>());
|
||||
|
||||
const [clock, setClock] = useState<number>(0);
|
||||
const [auctionViews, setAuctionViews] = useState<
|
||||
Record<string, AuctionView | undefined>
|
||||
>({});
|
||||
useEffect(() => {
|
||||
connection.getSlot().then(setClock);
|
||||
}, [connection]);
|
||||
|
||||
const {
|
||||
auctions,
|
||||
|
@ -76,30 +71,27 @@ export const useAuctions = (state: AuctionViewState) => {
|
|||
} = useMeta();
|
||||
|
||||
useEffect(() => {
|
||||
if (clock != 0)
|
||||
Object.keys(auctions).forEach(a => {
|
||||
const auction = auctions[a];
|
||||
const existingAuctionView = auctionViews[a];
|
||||
const nextAuctionView = processAccountsIntoAuctionView(
|
||||
auction,
|
||||
auctionManagers,
|
||||
safetyDepositBoxesByVaultAndIndex,
|
||||
metadataByMint,
|
||||
nameSymbolTuples,
|
||||
bidRedemptions,
|
||||
bidderMetadataByAuctionAndBidder,
|
||||
bidderPotsByAuctionAndBidder,
|
||||
masterEditions,
|
||||
vaults,
|
||||
accountByMint,
|
||||
clock,
|
||||
state,
|
||||
existingAuctionView,
|
||||
);
|
||||
setAuctionViews(nA => ({ ...nA, [a]: nextAuctionView }));
|
||||
});
|
||||
Object.keys(auctions).forEach(a => {
|
||||
const auction = auctions[a];
|
||||
const existingAuctionView = auctionViews[a];
|
||||
const nextAuctionView = processAccountsIntoAuctionView(
|
||||
auction,
|
||||
auctionManagers,
|
||||
safetyDepositBoxesByVaultAndIndex,
|
||||
metadataByMint,
|
||||
nameSymbolTuples,
|
||||
bidRedemptions,
|
||||
bidderMetadataByAuctionAndBidder,
|
||||
bidderPotsByAuctionAndBidder,
|
||||
masterEditions,
|
||||
vaults,
|
||||
accountByMint,
|
||||
state,
|
||||
existingAuctionView,
|
||||
);
|
||||
setAuctionViews(nA => ({ ...nA, [a]: nextAuctionView }));
|
||||
});
|
||||
}, [
|
||||
clock,
|
||||
state,
|
||||
auctions,
|
||||
auctionManagers,
|
||||
|
@ -135,20 +127,13 @@ export function processAccountsIntoAuctionView(
|
|||
masterEditions: Record<string, ParsedAccount<MasterEdition>>,
|
||||
vaults: Record<string, ParsedAccount<Vault>>,
|
||||
accountByMint: Map<string, TokenAccount>,
|
||||
clock: number,
|
||||
desiredState: AuctionViewState | undefined,
|
||||
existingAuctionView?: AuctionView,
|
||||
): AuctionView | undefined {
|
||||
let state: AuctionViewState;
|
||||
if (
|
||||
auction.info.state == AuctionState.Ended ||
|
||||
(auction.info.endedAt && auction.info.endedAt.toNumber() <= clock)
|
||||
) {
|
||||
if (auction.info.state == AuctionState.Ended) {
|
||||
state = AuctionViewState.Ended;
|
||||
} else if (
|
||||
auction.info.state == AuctionState.Started ||
|
||||
(auction.info.endedAt && auction.info.endedAt.toNumber() > clock)
|
||||
) {
|
||||
} else if (auction.info.state == AuctionState.Started) {
|
||||
state = AuctionViewState.Live;
|
||||
} else if (auction.info.state == AuctionState.Created) {
|
||||
state = AuctionViewState.Upcoming;
|
||||
|
|
Loading…
Reference in New Issue