From bec562dcf34244bbfe586dc5ea1b504c7779cbca Mon Sep 17 00:00:00 2001 From: Szegoo Date: Mon, 19 Aug 2024 21:45:03 +0200 Subject: [PATCH] sale status --- src/contexts/orders/index.tsx | 2 +- src/contexts/sales/index.tsx | 43 +++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/contexts/orders/index.tsx b/src/contexts/orders/index.tsx index fa467e8d..e9fea2a0 100644 --- a/src/contexts/orders/index.tsx +++ b/src/contexts/orders/index.tsx @@ -6,7 +6,7 @@ import { useState, } from 'react'; -import { fetchOrders as fetchOrdersApi,fetchUserContribution } from '@/apis'; +import { fetchOrders as fetchOrdersApi, fetchUserContribution } from '@/apis'; import { ApiResponse, ContextStatus, Order } from '@/models'; import { useAccounts } from '../account'; diff --git a/src/contexts/sales/index.tsx b/src/contexts/sales/index.tsx index e7302d34..ae069f43 100644 --- a/src/contexts/sales/index.tsx +++ b/src/contexts/sales/index.tsx @@ -68,7 +68,7 @@ const defaultSaleStatus: BrokerStatus = { lastCommittedTimeslice: 0, lastTimeslice: 0, privatePoolSize: 0, - systemPoolSize: 0 + systemPoolSize: 0, }; const defaultSaleData: SaleData = { @@ -100,7 +100,9 @@ const SaleInfoProvider = ({ children }: Props) => { } = useRelayApi(); const [saleInfo, setSaleInfo] = useState(defaultSaleData.saleInfo); - const [saleStatus, setSaleStatus] = useState(defaultSaleData.saleStatus); + const [saleStatus, setSaleStatus] = useState( + defaultSaleData.saleStatus + ); const [config, setConfig] = useState(defaultSaleData.config); const [status, setStatus] = useState(ContextStatus.UNINITIALIZED); @@ -126,27 +128,37 @@ const SaleInfoProvider = ({ children }: Props) => { const fetchSaleInfo = async () => { try { setStatus(ContextStatus.LOADING); - if ( - !coretimeApi || - coretimeApiState !== ApiState.READY || - !relayApi || - relayApiState !== ApiState.READY || - !coretimeApi.query.broker - ) { + if (!coretimeApi || coretimeApiState !== ApiState.READY) { setStatus(ContextStatus.UNINITIALIZED); return; } - const saleInfoRaw = await coretimeApi.query.broker.saleInfo(); + const [brokerStatusRaw, saleInfoRaw, configRaw] = (await new Promise( + (resolve, _reject) => { + coretimeApi.queryMulti( + [ + coretimeApi.query.broker.status, + coretimeApi.query.broker.saleInfo, + coretimeApi.query.broker.configuration, + ], + (result) => { + resolve(result); + } + ); + } + )) as Array; + const saleInfo = saleInfoRaw.toJSON() as SaleInfo; // On Rococo we have `endPrice` while on Kusama we still have `price`. saleInfo.price = saleInfo.price || (saleInfo as any).endPrice; setSaleInfo(saleInfo); - const configRaw = await coretimeApi.query.broker.configuration(); const config = configRaw.toJSON() as SaleConfig; setConfig(config); + const brokerStatus = brokerStatusRaw.toJSON() as BrokerStatus; + setSaleStatus(brokerStatus); + const saleStart = saleInfo.saleStart; // Sale start != bulk phase start. sale_start = bulk_phase_start + interlude_length. const saleStartTimestamp = await getBlockTimestamp( @@ -186,14 +198,7 @@ const SaleInfoProvider = ({ children }: Props) => { useEffect(() => { fetchSaleInfo(); - }, [ - network, - coretimeApi, - coretimeApiState, - relayApi, - relayApiState, - timeslicePeriod, - ]); + }, [network, coretimeApi, coretimeApiState, timeslicePeriod]); useEffect(() => { if (height === 0) return;