use quote token address directly during LP bond purchase and minor fixes for the price output

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2025-05-07 17:17:54 +03:00
parent bb98a8aea7
commit a52372dbe5
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB
4 changed files with 19 additions and 26 deletions

View File

@ -1,7 +1,7 @@
{
"name": "ghost-dao-interface",
"private": true,
"version": "0.0.24",
"version": "0.0.25",
"type": "module",
"scripts": {
"dev": "vite",

View File

@ -18,7 +18,7 @@ import NotFound from "../NotFound/NotFound";
import { DecimalBigNumber } from "../../helpers/DecimalBigNumber";
import { NetworkId } from "../../constants";
import { formatNumber } from "../../helpers";
import { formatCurrency } from "../../helpers";
import { useLiveBonds } from "../../hooks/bonds";
import { useFtsoPrice } from "../../hooks/prices";
@ -123,17 +123,16 @@ export const BondModal = ({ bond, chainId, address, connect }) => {
label="Market Price"
metric={
<TokenPrice
chainId={chainId}
token={bond.baseToken}
baseSymbol={bond.baseToken.name}
quoteSymbol={bond.quoteToken.name}
symbol={bond.quoteToken.name}
priceInUsd={bond.price.marketPriceInUsd}
/>
}
/>
/>
<Metric
label="Discount"
metric={<BondDiscount discount={bond.discount} textOnly />}
/>
/>
</Box>
<Box width="100%" mt="24px">
@ -155,21 +154,11 @@ export const BondModal = ({ bond, chainId, address, connect }) => {
const TokenPrice = ({
token,
chainId,
quoteSymbol,
baseSymbol,
symbol,
priceInUsd
}) => {
const priceToken = useFtsoPrice(chainId);
const sameToken = quoteSymbol === baseSymbol;
const price = sameToken
? formatNumber(1, 2)
: `${formatNumber(priceToken, 2)}`;
return price ? (
<>
{price} {quoteSymbol}
</>
return priceInUsd ? (
<>{formatCurrency(priceInUsd, 2, symbol)}</>
) : (
<Skeleton width={60} />
);

View File

@ -124,7 +124,7 @@ const BondInputArea = ({
<TokenAllowanceGuard
spendAmount={parsedAmount}
tokenName={bond.quoteToken.name}
tokenName={bond.quoteToken.quoteTokenAddress}
owner={address}
spender={BOND_DEPOSITORY_ADDRESSES[chainId]}
decimals={parsedAmount._decimals}
@ -186,7 +186,7 @@ const BondInputArea = ({
tooltip={`The maximum quantity of payout token offered via bonds at this moment in time`}
balance={
<span>
{bond.baseToken === bond.quoteToken
{bond.baseToken.tokenAddress.toUpperCase() === bond.quoteToken.quoteTokenAddress.toUpperCase()
? `${formatCurrency(baseTokenString, formatDecimals, "FTSO")}`
: `${formatCurrency(baseTokenString, formatDecimals, "FTSO")} (≈${formatCurrency(quoteTokenString, formatDecimals, "GHST")})`}
</span>

View File

@ -9,7 +9,7 @@ import { abi as BondAbi } from "../../abi/GhostBondDepository.json";
import { abi as TreasuryAbi } from "../../abi/GhostTreasury.json";
import { useFtsoPrice } from "../prices";
import { getTokenIcons, getTokenName, getBondNameDisplayName, getTokenPurchaseLink } from "../helpers";
import { getTokenAddress, getTokenIcons, getTokenName, getBondNameDisplayName, getTokenPurchaseLink } from "../helpers";
import { DecimalBigNumber } from "../../helpers/DecimalBigNumber";
import { shorten } from "../../helpers";
@ -100,7 +100,9 @@ export const useLiveBonds = (chainId) => {
const quoteTokenPerBaseToken = new DecimalBigNumber(marketPrice, 9);
const priceInUsd = quoteTokenPerUsd.mul(quoteTokenPerBaseToken);
const discount = baseTokenPerUsd.sub(priceInUsd).div(baseTokenPerUsd);
const discount = quoteTokenPerUsd._value > 0n
? quoteTokenPerUsd.sub(priceInUsd).div(quoteTokenPerUsd)
: quoteTokenPerUsd;
const capacityInBaseToken = capacityInQuote
? new DecimalBigNumber(marketPrice > 0n ? marketCapacity / marketPrice : 0n, 9)
@ -124,7 +126,8 @@ export const useLiveBonds = (chainId) => {
baseToken: {
name: "FTSO",
purchaseUrl: getTokenPurchaseLink(chainId, ""),
icons: ["FTSO"]
icons: ["FTSO"],
tokenAddress: getTokenAddress(chainId, "FTSO")
},
quoteToken: {
name: getTokenName(chainId, quoteTokenAddress),
@ -140,6 +143,7 @@ export const useLiveBonds = (chainId) => {
price: {
inUsd: priceInUsd,
inBaseToken: quoteTokenPerBaseToken,
marketPriceInUsd: quoteTokenPerUsd
},
capacity: {
inBaseToken: capacityInBaseToken,