mirror of https://github.com/certusone/oyster.git
feat: fix collateral display
This commit is contained in:
parent
c193cf2b4f
commit
2682001514
|
@ -215,6 +215,7 @@ body {
|
|||
|
||||
.ant-layout-content {
|
||||
display: flex;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.flexColumn {
|
||||
|
|
|
@ -76,7 +76,7 @@ export const useLending = () => {
|
|||
reserveAccounts.map((reserve) => reserve.info.liquidityMint.toBase58())
|
||||
);
|
||||
}
|
||||
}, [reserveAccounts]);
|
||||
}, [reserveAccounts, precacheMarkets]);
|
||||
|
||||
// initial query
|
||||
useEffect(() => {
|
||||
|
|
|
@ -187,7 +187,11 @@ export function MarketProvider({ children = null as any }) {
|
|||
|
||||
const precacheMarkets = useCallback(
|
||||
(mints: string[]) => {
|
||||
setMarketMints([...new Set([...marketMints, ...mints]).values()]);
|
||||
const newMints = [...new Set([...marketMints, ...mints]).values()];
|
||||
|
||||
if (marketMints.length !== newMints.length) {
|
||||
setMarketMints(newMints);
|
||||
}
|
||||
},
|
||||
[setMarketMints, marketMints]
|
||||
);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PublicKey } from "@solana/web3.js";
|
||||
import { useMint } from "../contexts/accounts";
|
||||
import { LendingReserve } from "../models/lending";
|
||||
import { LendingReserve, reserveMarketCap } from "../models/lending";
|
||||
import { fromLamports } from "../utils/utils";
|
||||
import { useUserBalance } from "./useUserBalance";
|
||||
|
||||
|
@ -15,7 +15,7 @@ export function useCollateralBalance(
|
|||
);
|
||||
|
||||
const collateralRatioLamports =
|
||||
(reserve?.availableLiquidity.toNumber() || 0) *
|
||||
reserveMarketCap(reserve) *
|
||||
(balanceLamports / (reserve?.collateralMintSupply.toNumber() || 1));
|
||||
|
||||
return {
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
import BN from "bn.js";
|
||||
import * as BufferLayout from "buffer-layout";
|
||||
import { LENDING_PROGRAM_ID, TOKEN_PROGRAM_ID } from "../../constants/ids";
|
||||
import { WAD } from "../../constants/math";
|
||||
import { wadToLamports } from "../../utils/utils";
|
||||
import * as Layout from "./../../utils/layout";
|
||||
import { LendingInstruction } from "./lending";
|
||||
import { LendingReserve } from "./reserve";
|
||||
|
@ -112,7 +112,7 @@ export const borrowInstruction = (
|
|||
// deposit APY utilization currentUtilizationRate * borrowAPY
|
||||
|
||||
export const calculateBorrowAPY = (reserve: LendingReserve) => {
|
||||
const totalBorrows = reserve.borrowedLiquidityWad.div(WAD).toNumber();
|
||||
const totalBorrows = wadToLamports(reserve.borrowedLiquidityWad).toNumber();
|
||||
const currentUtilization =
|
||||
totalBorrows / (reserve.availableLiquidity.toNumber() + totalBorrows);
|
||||
const optimalUtilization = reserve.config.optimalUtilizationRate / 100;
|
||||
|
|
|
@ -5,8 +5,8 @@ import {
|
|||
} from "@solana/web3.js";
|
||||
import BN from "bn.js";
|
||||
import * as BufferLayout from "buffer-layout";
|
||||
import { WAD } from "../../constants";
|
||||
import { LENDING_PROGRAM_ID, TOKEN_PROGRAM_ID } from "../../constants/ids";
|
||||
import { wadToLamports } from "../../utils/utils";
|
||||
import * as Layout from "./../../utils/layout";
|
||||
import { calculateBorrowAPY } from "./borrow";
|
||||
import { LendingInstruction } from "./lending";
|
||||
|
@ -64,7 +64,7 @@ export const depositInstruction = (
|
|||
};
|
||||
|
||||
export const calculateDepositAPY = (reserve: LendingReserve) => {
|
||||
const totalBorrows = reserve.borrowedLiquidityWad.div(WAD).toNumber();
|
||||
const totalBorrows = wadToLamports(reserve.borrowedLiquidityWad).toNumber();
|
||||
const currentUtilization =
|
||||
totalBorrows / (reserve.availableLiquidity.toNumber() + totalBorrows);
|
||||
|
||||
|
|
|
@ -175,3 +175,11 @@ export const calculateUtilizationRatio = (reserve: LendingReserve) => {
|
|||
(reserve.availableLiquidity.toNumber() + borrowedLiquidity)
|
||||
);
|
||||
};
|
||||
|
||||
export const reserveMarketCap = (reserve?: LendingReserve ) => {
|
||||
const available = (reserve?.availableLiquidity.toNumber() || 0) ;
|
||||
const borrowed = wadToLamports(reserve?.borrowedLiquidityWad).toNumber() ;
|
||||
const total = available + borrowed;
|
||||
|
||||
return total;
|
||||
}
|
|
@ -4,7 +4,8 @@ import { LABELS } from "../../constants";
|
|||
import { cache, ParsedAccount } from "../../contexts/accounts";
|
||||
import { useMarkets } from "../../contexts/market";
|
||||
import { useLendingReserves } from "../../hooks";
|
||||
import { formatUSD, fromLamports, wadToLamports } from "../../utils/utils";
|
||||
import { reserveMarketCap } from "../../models";
|
||||
import { formatUSD, fromLamports } from "../../utils/utils";
|
||||
import { LendingReserveItem } from "./item";
|
||||
import "./itemStyle.less";
|
||||
|
||||
|
@ -13,12 +14,10 @@ export const HomeView = () => {
|
|||
const [totalMarketSize, setTotalMarketSize] = useState(0);
|
||||
const { marketEmitter, midPriceInUSD } = useMarkets();
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const refreshTotalMarketSize = () => {
|
||||
const total = reserveAccounts.reduce((result, item) => {
|
||||
const marketCapLamports = item.info.availableLiquidity.toNumber() +
|
||||
wadToLamports(item.info.borrowedLiquidityWad).toNumber();
|
||||
const marketCapLamports = reserveMarketCap(item.info);
|
||||
|
||||
const localCache = cache;
|
||||
const mint = localCache.get(item.info.liquidityMint.toBase58()) as ParsedAccount<MintInfo>;
|
||||
|
|
Loading…
Reference in New Issue