Skip to content

Commit

Permalink
[WIP] fix borrowing
Browse files Browse the repository at this point in the history
  • Loading branch information
jordaaash committed Jun 25, 2021
1 parent ce889d9 commit 9d8ad54
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 74 deletions.
86 changes: 16 additions & 70 deletions packages/lending/src/components/BorrowInput/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
useSliderInput,
useUserBalance,
useUserDeposits,
useUserObligationByReserve,
useUserObligationByReserve, useUserObligations
} from '../../hooks';
import { Reserve, ReserveParser } from '../../models';
import CollateralInput from '../CollateralInput';
Expand All @@ -32,37 +32,23 @@ export const BorrowInput = (props: {
}) => {
const connection = useConnection();
const { wallet } = useWallet();
const [collateralValue, setCollateralValue] = useState('');
const [lastTyped, setLastTyped] = useState('collateral');
const { userDeposits } = useUserDeposits();
const { userObligations } = useUserObligations();

const [pendingTx, setPendingTx] = useState(false);
const [showConfirmation, setShowConfirmation] = useState(false);

const borrowReserve = props.reserve;
const depositReserves = [];

const [depositReserveKey, setCollateralReserveKey] = useState<string>();

const depositReserve = useMemo(() => {
const id: string =
cache.byParser(ReserveParser).find(acc => acc === depositReserveKey) ||
'';

return cache.get(id) as ParsedAccount<Reserve>;
}, [depositReserveKey]);
const borrowPrice = usePrice(
borrowReserve.info.liquidity.mintPubkey.toBase58(),
);
const collateralPrice = usePrice(
depositReserve?.info.liquidity.mintPubkey.toBase58(),
);

const include = useMemo(() => new Set([depositReserve?.pubkey.toBase58()]), [
depositReserve,
]);

const exclude = useMemo(() => new Set([]), []);

const { userDeposits: accountBalance } = useUserDeposits(exclude, include);
const tokenBalance = accountBalance[0]?.info.amount || 0;
const tokenBalance = userDeposits[0]?.info.amount || 0;

const convert = useCallback(
(val: string | number) => {
Expand All @@ -79,44 +65,18 @@ export const BorrowInput = (props: {
const { value, setValue, pct } = useSliderInput(convert);

useEffect(() => {
if (depositReserve && lastTyped === 'collateral') {
const ltv = borrowReserve.info.config.loanToValueRatio / 100;

if (collateralValue) {
const nCollateralValue = parseFloat(collateralValue);
const borrowInUSD = nCollateralValue * collateralPrice * ltv;
const borrowAmount = borrowInUSD / borrowPrice;
setValue(borrowAmount.toString());
} else {
setValue('');
}
}
}, [
lastTyped,
depositReserve,
collateralPrice,
borrowPrice,
borrowReserve,
collateralValue,
setValue,
]);

useEffect(() => {
if (depositReserve && lastTyped === 'borrow') {
const ltv = borrowReserve.info.config.loanToValueRatio / 100;

if (value) {
const nValue = parseFloat(value);
const borrowInUSD = nValue * borrowPrice;
const collateralAmount = borrowInUSD / ltv / collateralPrice;
setCollateralValue(collateralAmount.toString());
} else {
setCollateralValue('');
}
const ltv = borrowReserve.info.config.loanToValueRatio / 100;

if (value) {
const nValue = parseFloat(value);
const borrowInUSD = nValue * borrowPrice;
const collateralAmount = borrowInUSD / ltv / collateralPrice;
// @FIXME
setCollateralValue(collateralAmount.toString());
} else {
setCollateralValue('');
}
}, [
lastTyped,
depositReserve,
collateralPrice,
borrowPrice,
borrowReserve,
Expand Down Expand Up @@ -198,19 +158,6 @@ export const BorrowInput = (props: {
alignItems: 'center',
}}
>
<CollateralInput
title="Collateral (estimated)"
reserve={borrowReserve.info}
amount={parseFloat(collateralValue) || 0}
onInputChange={(val: number | null) => {
setCollateralValue(val?.toString() || '');
setLastTyped('collateral');
}}
onCollateralReserve={key => {
setCollateralReserveKey(key);
}}
useFirstReserve={true}
/>
</div>
<RiskSlider value={pct} />
<div
Expand All @@ -228,7 +175,6 @@ export const BorrowInput = (props: {
amount={parseFloat(value) || 0}
onInputChange={(val: number | null) => {
setValue(val?.toString() || '');
setLastTyped('borrow');
}}
disabled={true}
hideBalance={true}
Expand Down
5 changes: 1 addition & 4 deletions packages/lending/src/hooks/useBorrowingPower.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@ export function useBorrowingPower(
const liquidityMint = reserve?.info.liquidity.mintPubkey;
const liquidityMintAddress = liquidityMint?.toBase58();

const exclude = useMemo(() => new Set([key]), [key]);
const inlcude = undefined;

const { totalInQuote } = useUserDeposits(exclude, inlcude);
const { totalInQuote } = useUserDeposits();

const price = usePrice(liquidityMintAddress);

Expand Down

0 comments on commit 9d8ad54

Please sign in to comment.