From c7a08a5c663722588b1ad8a7ae94b4aaeef8067d Mon Sep 17 00:00:00 2001 From: bartosz-lipinski <264380+bartosz-lipinski@users.noreply.github.com> Date: Tue, 15 Dec 2020 12:14:35 -0600 Subject: [PATCH] feat: add collateral reserve selection --- src/components/BorrowInput/index.tsx | 14 +++--- src/components/CollateralSelector/index.tsx | 19 ++++---- src/components/RepayInput/index.tsx | 23 +++------- src/constants/labels.ts | 2 + src/contexts/market.tsx | 50 +++++++++++++++++++++ src/hooks/useUserObligationByReserve.ts | 12 +++-- src/models/lending/liquidate.ts | 2 +- src/models/lending/obligation.ts | 8 ++-- src/models/lending/reserve.ts | 9 ++++ src/views/dashboard/index.tsx | 1 + src/views/dashboard/obligationItem.tsx | 46 ++++++++++++++++--- src/views/dashboard/style.less | 4 +- src/views/repayReserve/index.tsx | 9 +++- 13 files changed, 150 insertions(+), 49 deletions(-) diff --git a/src/components/BorrowInput/index.tsx b/src/components/BorrowInput/index.tsx index e6e2a10..a59db0e 100644 --- a/src/components/BorrowInput/index.tsx +++ b/src/components/BorrowInput/index.tsx @@ -34,16 +34,16 @@ export const BorrowInput = (props: { const borrowReserve = props.reserve; - const [collateralReserveMint, setCollateralReserveMint] = useState(); + const [collateralReserveKey, setCollateralReserveKey] = useState(); const collateralReserve = useMemo(() => { const id: string = cache .byParser(LendingReserveParser) - .find((acc) => acc === collateralReserveMint) || ""; + .find((acc) => acc === collateralReserveKey) || ""; return cache.get(id) as ParsedAccount; - }, [collateralReserveMint]); + }, [collateralReserveKey]); const name = useTokenName(borrowReserve?.info.liquidityMint); const { accounts: fromAccounts } = useUserBalance( @@ -51,7 +51,8 @@ export const BorrowInput = (props: { ); const { userObligationsByReserve } = useUserObligationByReserve( - borrowReserve.pubkey + borrowReserve?.pubkey, + collateralReserve?.pubkey, ); const onBorrow = useCallback(() => { @@ -74,6 +75,7 @@ export const BorrowInput = (props: { borrowReserve, collateralReserve, + // TODO: select exsisting obligations by collateral reserve userObligationsByReserve.length > 0 ? userObligationsByReserve[0].obligation : undefined, @@ -126,8 +128,8 @@ export const BorrowInput = (props: {
{LABELS.SELECT_COLLATERAL}
{LABELS.BORROW_QUESTION}
diff --git a/src/components/CollateralSelector/index.tsx b/src/components/CollateralSelector/index.tsx index 0c6355d..3275792 100644 --- a/src/components/CollateralSelector/index.tsx +++ b/src/components/CollateralSelector/index.tsx @@ -11,8 +11,9 @@ const { Option } = Select; export const CollateralSelector = (props: { reserve: LendingReserve; - mint?: string; - onMintChange: (id: string) => void; + collateralReserve?: string; + disabled?: boolean; + onCollateralReserve?: (id: string) => void; }) => { const { reserveAccounts } = useLendingReserves(); const { tokenMap } = useConnectionConfig(); @@ -20,20 +21,22 @@ export const CollateralSelector = (props: { const market = cache.get(props.reserve.lendingMarket) as ParsedAccount< LendingMarket >; - const onlyQuoteAllowed = !props.reserve.liquidityMint.equals( - market.info.quoteMint + const onlyQuoteAllowed = !props.reserve?.liquidityMint?.equals( + market?.info?.quoteMint ); return (