Skip to content

Commit

Permalink
Tom/release/interlay/2.9.3 (#1120)
Browse files Browse the repository at this point in the history
* chore: mark the points

* fix(NumberInput): remove react-aria (#934)

* feat: add formik (#863)

* feat(CoinIcon): update INTR and IBTC icon (#941)

* feat: take supply and borrow caps into account

* chore: update lib

* refactor: code review

* hotfix: testnet banner

* feat: added trollbox Discord chat embed via widgetbot <script> tag in index.html

* fix: try to quick-fix test GitHub action

* docs: document how to locally run a GitHub action and relevant set-up issues

* feat: add x-small to CTA and add max to token input (#952)

* fix(Loans): remove unwanted earned label (#959)

* feat(Pools): remove 7 day volume column (#958)

* refactor: update testnet banner

* fix(Loans): withdraw action (#936)

* fix: disable calling the squid endpoint in App when testing

* fix: export testing-library customRender functionality

* feat: add pull_request_target case

* Trigger test run

* feat(CoinIcon): add LP Tokens icons (#951)

* feat(Field): add component and change to BaseInput (#967)

* refactor: fix regression with testnet banner

* feat(Swap): apply formik to swap form (#956)

* chore: bump lib

* feat: apply CoinIcon for LpTokens (#977)

* chore: version bump

* chore: correct version bump

* refactor: revert competition UI changes

* chore: mark the change points

* chore: mark the change points

* chore: try getLendPositionsOfAccount & getBorrowPositionsOfAccount

* chore: change discord link

* chore: change discord link

* chore: clean up

* feat: get loanCollateralInfo

* fix: tooltip error (#980)

* refactor: update useGetLoanAssets

* feat: implement useGetLendPositionsOfAccount

* feat: implement useGetBorrowPositionsOfAccount

* refactor: update useGetAccountPositions

* chore: clean up

* feat: implement useGetLoanCollateralInfo

* chore: clean up

* chore: clean up

* refactor: update useLoanInfo

* chore: clean up

* fix(Modal): restructure, improve accessibility and animations (#986)

* fix: improve swap and pools accessibility (#991)

* refactor(loans): use oracle price for ltv and similar computation

* refactor(loans): rename LoanCollateralInfo -> LendingStats

* chore: update lib & restructure files

* refactor(loans): rename stats hook

* refactor: define return type for hooks

* refactor(loans): do not wrap statistics in object

* chore: bump bridge version

* chore: bump bridge

* chore: bump lib

* chore: specify correct lib version

* chore: comment out breaking changes

* refactor(loans): lib update to 2.0.0

* fix(loans): use ltv in percentage denomination to resolve loan status

* chore: remove warning banner

* chore: remove block time banner

* fix(Loans): loan form ui and repay (#999)

* fix(Modal): focus inside dialog (#1000)

* feat: add use-wallet hook (#992)

* fix: add transaction feedback to pools and lending (#1017)

* chore(Loans): add tests

* fix: tests

* attemp - borrow

* try

* try

* continue

* fix

* fix

* fix

* final

* try fetcj

* refactor

* fix: move to unit test cases

* chore: remove unused dependencies

* chore: remove unused dependencies

* fix: adapt tests

* Trigger Build

* refactor: patch chain icon component

* chore: bump lib

* chore: bump lib

* chore: add amm tests (#969)

* fix: missing Modal props and Overlay styles (#1033)

* feat(Swap): add price impact limit

* feat: final

* fix: TokenInput select (#1036)

* refactor: fix merge conflict regression

* feature: sentry dependencies and init

* fix: token input regression

* fix: add missing dictionary item

* fix(loans): fix max repay amount

* fix(Swap): add check for usd value price impact

* refactor: update condition

* chore: release v2.28.1

* chore: update T&Cs link

* chore: update T&C links

* chore: move sentry dns to env variable

* chore: update lib with hotfix for Vault Dashboard

* Revert "fix(loans): fix max repay amount" (#1051)

* fix(Loans): max loan action

* fix: liquidation alert

* chore: add tests

* chore: add faulty code test

* refactor: revert sentry config

* fix: add shorten address prop to address UI

* chore: release v2.28.2

* fix: console warnings

* fix: versions

* feat: added kint faucet, cond. on kint balance to topbar

* fix(Loans): apy label

* feat: added kint faucet, cond. on kint balance to topbar (#1062)

* fix: allow manual issue execution for confirmed transactions

* fix: allow manual issue execution for confirmed transactions

* feature: add fathom script

* feature: add fathom script

* chore: update env variables

* feature: add notProducingBlocks banners

* fix: render warning banner in correct place

* fix: remove warning banner

* fix: add check for required griefing collateral

* fix: add check for required griefing collateral

* fix: vault on-boarding

* chore: version bump

* chore: bump bridge version

* chore: bump bridge version

* chore: version bump

* chore: add a comment to ReplaceTX

* chore: format some code automatically

* feat: add view-details column to IssueRequestsTable

* feat: add view-details to RedeemRequestsTable

* feat: add view-details columns to VaultIssueRequestsTable & VaultRedeemRequestsTable

* refactor: componentize with ViewRequestDetailsLink

* feat: add owner check to ManualIssueExecutionUI

* chore: bump lib

* chore: version bump

* chore: correct version bump

* hotfix: filter erroring vaults

* chore: add comment

* chore: comment

* chore: change discord link

* chore: bump bridge version

* chore: bump lib

* chore: specify correct lib version

* chore: comment out breaking changes

* chore: remove block time banner

* chore: remove unused dependencies

* Trigger Build

* chore: bump lib

* feat: added kint faucet, cond. on kint balance to topbar

---------

Co-authored-by: tomjeatt <[email protected]>
Co-authored-by: Thomas Jeatt <[email protected]>
Co-authored-by: Dominik Harz <[email protected]>
Co-authored-by: Rui Simão <[email protected]>
Co-authored-by: crypto-engineer <[email protected]>
Co-authored-by: crypto-engineer <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Dominik Harz <[email protected]>

* chore: release v2.28.3

* fix: available balance to use transfarable

* feat: change get prices refetch interval

* chore: release v2.28.4

* feat(Pools): add custom input amounts mode

* chore: release v2.28.5

* feat: add refetch balances and form validation deps

* chore: trigger build

* refactor: remove substrate developer console

* chore: release v2.28.6

* chore: fix test workflow

* fix: code review

* chore: improve pipeline performance (#1075)

* fix: package.json resolutions (#1077)

* fix: show transferable balance for selected currency

* refactor: apply top bar patch

* refactor: validate issue against transferable balance

* chore: bump version

* refactor: update validation message

* refactor: correct translation entry

* refactor: update validation message

* api: add market data api

* api: add market data api

* api: add market data api

* api: add market data api

* api: add market data api

* api: add market data api

* chore: fix issue form snapshot test

* api: add market data api

* api: add market data api

* api: add market data api

* refactor: improve github workflows, remove unused code and clean-up package.json (#1076)

* refactor: prices endpoint can be absolute or relative

* chore: add market data endpoint to config

* chore: add missing env variable

* chore: remove stray comma

* refactor: improve variable name

* chore: release v2.28.8

* chore: add resolutions for various polkadot packages (#1089)

* Fix input field width issue (#1090)

* fix: input field width

* fix: rename max weeks to total weeks

* chore: bump ui version

* chore: bump XCM bridge (#1093)

* feat(Wallet): add page (#1001)

* feat(Wallet): add page

* feat: add WalletIcon

* feat: copy address

* wip

* feat: staking table

* feat: refactor and add lending

* refactor: clean up code

* wip

* feat: add List card

* continue

* fix: continue

* feat: continue

* feat(CTALink): improve

* feat: add responsiveness and swap handling

* feat: final

* feat: add responsive prop

* fix: clean up List and Divider

* feat: add tests

* feat: add final tests

* fix: code review

* feat: add vesting and tests

* fix: code review

* Tom/bug/burn form collateral tokens (#1042)

* refactor: loop collateral to get burnable tokens

* refactor: revert previous change and simplify

* refactor: add function to filter tokens

* refactor: fetch collateral currencies and render token values

* wip: form layout and translation

* wip: set data and selected collateral

* chore: remove console log

* refactor: remove single collateral code

* chore: comment

* fix: incorrect USD value

* chore: remove testing code

* refactor: remove native token import

* refactor: add BurnableCollateral type

* refactor: add fullWidth prop and label to token selector

* refactor: collateral icon

* chore: add dictionary item

* chore: remove unnecessary conditional operators

* refactor: handle callback

* refactor: fix failing test

* chore: remove unused code

* refactor: add success notification to burn form

* Add CORS to market data (#1096)

* chore: add env variables to config

* chore: add cors to market data api

---------

Co-authored-by: ns212 <[email protected]>

* fix: revert to using 0.2.x version of the bridge (#1095)

* chore: improve price impact warning copy

* chore: release v2.29.0

* fix(amm): use correct hooks dependencies (#1105)

* fix: update useGetCurrencies callbacks dependency arrays (#1108)

* chore: release v2.29.1

* [wallet] improve wallet balance (#1109)

* wip: correct wallet balance

* refactor: account for borrow and lend positions when calculating total balance

* refactor: add total liquidity balance

* fix: typo

* chore: add TODO

* refactor: remove unnecessary toString call

* refactor: redirect home route to wallet if enabled, defaulting to bridge if not

* refactor: remove duplicated calculations

* refactor: return liquidity pools calculation from hook

* chore: release v2.29.2

* refactor: use current block when calculating lock time extension (#1118)

* Tom/hotfix/use correct xcm names (#1119)

* refactor: use display value for chain names

* refactor: use correct display value for XCM channels

* chore: release v2.29.3

---------

Co-authored-by: crypto-engineer <[email protected]>
Co-authored-by: Daniel Simão <[email protected]>
Co-authored-by: Peter <[email protected]>
Co-authored-by: Peter Slaný <[email protected]>
Co-authored-by: Dominik Harz <[email protected]>
Co-authored-by: Dominik Harz <[email protected]>
Co-authored-by: alexei <[email protected]>
Co-authored-by: crypto-engineer <[email protected]>
Co-authored-by: Alexei Zamyatin <[email protected]>
Co-authored-by: ns212 <[email protected]>
Co-authored-by: Brendon Votteler <[email protected]>
Co-authored-by: Chanakya888 <[email protected]>
  • Loading branch information
13 people authored Apr 11, 2023
1 parent ad52679 commit cf2f0bf
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 14 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "interbtc-ui",
"version": "2.29.1",
"version": "2.29.3",
"private": true,
"dependencies": {
"@craco/craco": "^6.1.1",
Expand Down
2 changes: 1 addition & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ const App = (): JSX.Element => {
<Route path={PAGES.ACTIONS}>
<Actions />
</Route>
<Redirect exact from={PAGES.HOME} to={PAGES.BRIDGE} />
<Redirect exact from={PAGES.HOME} to={isWalletEnabled ? PAGES.WALLET : PAGES.BRIDGE} />
<Route path='*'>
<NoMatch />
</Route>
Expand Down
5 changes: 3 additions & 2 deletions src/pages/Staking/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -319,10 +319,11 @@ const Staking = (): JSX.Element => {

React.useEffect(() => {
if (!lockTime) return;
if (!currentBlockNumber) return;

const lockTimeValue = Number(lockTime);
setBlockLockTimeExtension(convertWeeksToBlockNumbers(lockTimeValue));
}, [lockTime]);
setBlockLockTimeExtension(currentBlockNumber + convertWeeksToBlockNumbers(lockTimeValue));
}, [currentBlockNumber, lockTime]);

React.useEffect(() => {
reset({
Expand Down
4 changes: 2 additions & 2 deletions src/pages/Transfer/CrossChainTransferForm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const CrossChainTransferForm = (): JSX.Element => {
const availableFromChains: Array<ChainOption> = XCMBridge.adapters.map((adapter: any) => {
return {
type: adapter.chain.id,
name: adapter.chain.id,
name: adapter.chain.display,
icon: <ChainIcon id={adapter.chain.id} size='xl' />
};
});
Expand All @@ -149,7 +149,7 @@ const CrossChainTransferForm = (): JSX.Element => {
const availableToChains = destinationChains.map((chain: any) => {
return {
type: chain.id,
name: chain.id,
name: chain.display,
icon: <ChainIcon id={chain.id} size='xl' />
};
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import { convertMonetaryAmountToValueInUSD, formatUSD } from '@/common/utils/uti
import { Card, Dd, Dl, DlGroup, Dt, theme } from '@/component-library';
import { useMediaQuery } from '@/component-library/utils/use-media-query';
import { getTokenPrice } from '@/utils/helpers/prices';
import { useGetAccountPools } from '@/utils/hooks/api/amm/use-get-account-pools';
import { useGetAccountLendingStatistics } from '@/utils/hooks/api/loans/use-get-account-lending-statistics';
import { BalanceData } from '@/utils/hooks/api/tokens/use-get-balances';
import { useGetPrices } from '@/utils/hooks/api/use-get-prices';

Expand All @@ -18,9 +20,12 @@ const WalletInsights = ({ balances }: WalletInsightsProps): JSX.Element => {
const { t } = useTranslation();

const prices = useGetPrices();
const { data: accountLendingStatistics } = useGetAccountLendingStatistics();
const { data: accountPools } = useGetAccountPools();

const isMobile = useMediaQuery(theme.breakpoints.down('md'));

const totalBalance =
const rawBalance =
balances &&
Object.values(balances).reduce(
(total, balance) =>
Expand All @@ -33,9 +38,14 @@ const WalletInsights = ({ balances }: WalletInsightsProps): JSX.Element => {
new Big(0)
);

const totalBalance = rawBalance
?.add(accountLendingStatistics?.supplyAmountUSD || 0)
.sub(accountLendingStatistics?.borrowAmountUSD || 0)
.add(accountPools?.accountLiquidityUSD || 0);

const totalBalanceLabel = totalBalance ? formatUSD(totalBalance.toNumber(), { compact: true }) : '-';

const transfarableBalance =
const transferableBalance =
balances &&
Object.values(balances).reduce(
(total, balance) =>
Expand All @@ -48,8 +58,8 @@ const WalletInsights = ({ balances }: WalletInsightsProps): JSX.Element => {
new Big(0)
);

const transfarableBalanceLabel = transfarableBalance
? formatUSD(transfarableBalance.toNumber(), { compact: true })
const transferableBalanceLabel = transferableBalance
? formatUSD(transferableBalance.toNumber(), { compact: true })
: '-';

return (
Expand All @@ -73,7 +83,7 @@ const WalletInsights = ({ balances }: WalletInsightsProps): JSX.Element => {
{t('transferable_balance')}
</Dt>
<Dd weight='bold' color='secondary'>
{transfarableBalanceLabel}
{transferableBalanceLabel}
</Dd>
</DlGroup>
</Card>
Expand Down
26 changes: 23 additions & 3 deletions src/utils/hooks/api/amm/use-get-account-pools.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { CurrencyExt, isCurrencyEqual, LiquidityPool, LpCurrency } from '@interlay/interbtc-api';
import { MonetaryAmount } from '@interlay/monetary-js';
import { AccountId } from '@polkadot/types/interfaces';
import Big from 'big.js';
import { useErrorHandler } from 'react-error-boundary';
import { useQuery } from 'react-query';

import { calculateAccountLiquidityUSD, calculateTotalLiquidityUSD } from '@/pages/AMM/shared/utils';
import { BLOCKTIME_REFETCH_INTERVAL } from '@/utils/constants/api';
import { Prices, useGetPrices } from '@/utils/hooks/api/use-get-prices';

import useAccountId from '../../use-account-id';
import { useGetLiquidityPools } from './use-get-liquidity-pools';
Expand All @@ -14,9 +17,14 @@ type AccountLiquidityPool = { data: LiquidityPool; amount: MonetaryAmount<LpCurr
interface AccountPoolsData {
positions: AccountLiquidityPool[];
claimableRewards: Map<LpCurrency, MonetaryAmount<CurrencyExt>[]>;
accountLiquidityUSD: Big;
}

const getAccountLiqudityPools = async (accountId: AccountId, pools: LiquidityPool[]): Promise<AccountPoolsData> => {
const getAccountLiqudityPools = async (
accountId: AccountId,
pools: LiquidityPool[],
prices: Prices
): Promise<AccountPoolsData> => {
const accountLiquidityPools = await window.bridge.amm.getLiquidityProvidedByAccount(accountId);
const claimableRewards = await window.bridge.amm.getClaimableFarmingRewards(accountId, accountLiquidityPools, pools);
const filteredPools = accountLiquidityPools.filter((lpToken) => !lpToken.isZero());
Expand All @@ -31,7 +39,18 @@ const getAccountLiqudityPools = async (accountId: AccountId, pools: LiquidityPoo
return [...acc, data];
}, []);

return { positions, claimableRewards };
const accountLiquidityUSD = positions
.map(({ data, amount: accountLPTokenAmount }) => {
const { pooledCurrencies, totalSupply } = data;
const totalLiquidityUSD = calculateTotalLiquidityUSD(pooledCurrencies, prices);

return accountLPTokenAmount
? calculateAccountLiquidityUSD(accountLPTokenAmount, totalLiquidityUSD, totalSupply)
: 0;
})
.reduce((total, accountLPTokenAmount) => total.add(accountLPTokenAmount), new Big(0));

return { positions, claimableRewards, accountLiquidityUSD };
};

interface UseGetAccountProvidedLiquidity {
Expand All @@ -42,12 +61,13 @@ interface UseGetAccountProvidedLiquidity {
// Mixes current pools with liquidity provided by the account
const useGetAccountPools = (): UseGetAccountProvidedLiquidity => {
const accountId = useAccountId();
const prices = useGetPrices();

const { data: liquidityPools, refetch: refetchLiquidityPools } = useGetLiquidityPools();
const queryKey = ['account-pools', accountId];
const { data, error, refetch: refetchQuery } = useQuery({
queryKey: ['account-pools', accountId],
queryFn: () => accountId && liquidityPools && getAccountLiqudityPools(accountId, liquidityPools),
queryFn: () => accountId && liquidityPools && prices && getAccountLiqudityPools(accountId, liquidityPools, prices),
enabled: !!liquidityPools,
refetchInterval: BLOCKTIME_REFETCH_INTERVAL
});
Expand Down

1 comment on commit cf2f0bf

@vercel
Copy link

@vercel vercel bot commented on cf2f0bf Apr 11, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.