From cdcc8c6f5c5adf7370d17c0e548d9285696d2e32 Mon Sep 17 00:00:00 2001 From: Nathaniel Parke Date: Fri, 18 Dec 2020 12:28:04 -0800 Subject: [PATCH] Cache market accounts for trading (#55) * Cache accounts for longer and warm up the cache * Prettier --- src/components/TradeForm.tsx | 27 ++++++++++++++++++++++++++- src/utils/send.tsx | 9 ++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/components/TradeForm.tsx b/src/components/TradeForm.tsx index 3e595df..68ed5ed 100644 --- a/src/components/TradeForm.tsx +++ b/src/components/TradeForm.tsx @@ -19,7 +19,7 @@ import { } from '../utils/utils'; import { useSendConnection } from '../utils/connection'; import FloatingElement from './layout/FloatingElement'; -import { placeOrder } from '../utils/send'; +import { getUnixTs, placeOrder } from '../utils/send'; import { SwitchChangeEventHandler } from 'antd/es/switch'; import { refreshCache } from '../utils/fetch-loop'; import tuple from 'immutable-tuple'; @@ -98,6 +98,31 @@ export default function TradeForm({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [price, baseSize]); + useEffect(() => { + const warmUpCache = async () => { + if (!wallet || !wallet.publicKey || !market) { + console.log(`Skipping refreshing accounts`); + return; + } + const startTime = getUnixTs(); + console.log(`Refreshing accounts for ${market.address}`); + await market.findOpenOrdersAccountsForOwner( + sendConnection, + wallet.publicKey, + ); + await market.findBestFeeDiscountKey(sendConnection, wallet.publicKey); + const endTime = getUnixTs(); + console.log( + `Finished refreshing accounts for ${market.address} after ${ + endTime - startTime + }`, + ); + }; + warmUpCache(); + const id = setInterval(warmUpCache, 30_000); + return () => clearInterval(id); + }, [market, sendConnection, wallet, wallet.publicKey]); + const onSetBaseSize = (baseSize: number | undefined) => { setBaseSize(baseSize); if (!baseSize) { diff --git a/src/utils/send.tsx b/src/utils/send.tsx index 8a551d0..ca2c955 100644 --- a/src/utils/send.tsx +++ b/src/utils/send.tsx @@ -442,15 +442,18 @@ export async function placeOrder({ const matchOrderstransaction = market.makeMatchOrdersTransaction(5); transaction.add(matchOrderstransaction); + const startTime = getUnixTs(); let { transaction: placeOrderTx, signers: placeOrderSigners, } = await market.makePlaceOrderTransaction( connection, params, - 10_000, - 10_000, + 120_000, + 120_000, ); + const endTime = getUnixTs(); + console.log(`Creating order transaction took ${endTime - startTime}`); transaction.add(placeOrderTx); transaction.add(market.makeMatchOrdersTransaction(5)); signers.push(...placeOrderSigners); @@ -614,7 +617,7 @@ export async function listMarket({ return market.publicKey; } -const getUnixTs = () => { +export const getUnixTs = () => { return new Date().getTime() / 1000; };