Fix states

This commit is contained in:
Jordan Prince 2021-04-28 11:40:20 -05:00
parent b026cd1088
commit 3f209d9baa
3 changed files with 23 additions and 44 deletions

View File

@ -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();

View File

@ -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,

View File

@ -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;