Fix unnecessary open orders rendering

This commit is contained in:
armaniferrante 2021-05-17 14:03:14 -07:00
parent f1c4d0386a
commit 5db9a61b35
No known key found for this signature in database
GPG Key ID: 58BEF301E91F7828
3 changed files with 16 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@project-serum/swap-ui", "name": "@project-serum/swap-ui",
"version": "0.1.0-alpha.6", "version": "0.1.0-alpha.8",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",
"homepage": ".", "homepage": ".",

View File

@ -1,4 +1,4 @@
import { useState } from "react"; import { useState, useMemo } from "react";
import { PublicKey } from "@solana/web3.js"; import { PublicKey } from "@solana/web3.js";
import { MintInfo } from "@solana/spl-token"; import { MintInfo } from "@solana/spl-token";
import { BN } from "@project-serum/anchor"; import { BN } from "@project-serum/anchor";
@ -83,6 +83,12 @@ export default function OpenOrdersDialog({
function OpenOrdersAccounts() { function OpenOrdersAccounts() {
const styles = useStyles(); const styles = useStyles();
const openOrders = useOpenOrders(); const openOrders = useOpenOrders();
const openOrdersEntries: Array<[PublicKey, OpenOrders[]]> = useMemo(() => {
return Array.from(openOrders.entries()).map(([market, oo]) => [
new PublicKey(market),
oo,
]);
}, [openOrders]);
return ( return (
<TableContainer component={Paper} elevation={0}> <TableContainer component={Paper} elevation={0}>
<Table className={styles.table} aria-label="simple table"> <Table className={styles.table} aria-label="simple table">
@ -99,11 +105,11 @@ function OpenOrdersAccounts() {
</TableRow> </TableRow>
</TableHead> </TableHead>
<TableBody> <TableBody>
{Array.from(openOrders.entries()).map(([market, oos]) => { {openOrdersEntries.map(([market, oos]) => {
return ( return (
<OpenOrdersRow <OpenOrdersRow
key={market} key={market.toString()}
market={new PublicKey(market)} market={market}
openOrders={oos} openOrders={oos}
/> />
); );

View File

@ -3,6 +3,11 @@ import { PublicKey } from "@solana/web3.js";
import { AccountInfo as TokenAccount } from "@solana/spl-token"; import { AccountInfo as TokenAccount } from "@solana/spl-token";
import { getOwnedTokenAccounts } from "../utils/tokens"; import { getOwnedTokenAccounts } from "../utils/tokens";
export type TokenContext = {
ownedTokenAccounts:
| { publicKey: PublicKey; account: TokenAccount }[]
| undefined;
};
const _TokenContext = React.createContext<TokenContext | null>(null); const _TokenContext = React.createContext<TokenContext | null>(null);
export function TokenContextProvider(props: any) { export function TokenContextProvider(props: any) {
@ -31,12 +36,6 @@ export function TokenContextProvider(props: any) {
); );
} }
export type TokenContext = {
ownedTokenAccounts:
| { publicKey: PublicKey; account: TokenAccount }[]
| undefined;
};
// Null => none exists. // Null => none exists.
// Undefined => loading. // Undefined => loading.
export function useOwnedTokenAccount( export function useOwnedTokenAccount(