Skip to content

Commit 0cb95a2

Browse files
authored
Add HOLLAR balance to collectives fellowship finance (#7357)
* Add HOLLAR balance to collectives fellowship finance treasury * feat: add HOLLAR to fellowship finance salary
1 parent 5345488 commit 0cb95a2

7 files changed

Lines changed: 110 additions & 33 deletions

File tree

Lines changed: 9 additions & 0 deletions
Loading

‎packages/next-common/components/assethubMigrationAssets/known/polkadot.js‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import dynamic from "next/dynamic";
2+
import HollarSvg from "next-common/assets/icons/assethub/Hollar.svg";
23

34
const AssetIconDed = dynamic(() => import("@osn/icons/subsquare/AssetIconDed"));
45
const AssetIconDota = dynamic(() =>
@@ -40,6 +41,11 @@ const knownPolkadotAssetHubAssets = [
4041
assetId: 23,
4142
icon: AssetIconPink,
4243
},
44+
{
45+
symbol: "HOLLAR",
46+
assetId: 222,
47+
icon: HollarSvg,
48+
},
4349
];
4450

4551
export default knownPolkadotAssetHubAssets;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { useAssetHubApi } from "next-common/hooks/chain/useAssetHubApi";
2+
import { SYMBOL_DECIMALS } from "next-common/utils/consts/asset";
3+
import { useAsync } from "react-use";
4+
5+
export const HOLLAR_FOREIGN_ASSET_KEY = {
6+
parents: 1,
7+
interior: {
8+
X2: [{ Parachain: 2034 }, { GeneralIndex: "222" }],
9+
},
10+
};
11+
12+
export const HOLLAR_DECIMALS = SYMBOL_DECIMALS.HOLLAR;
13+
14+
export function useFetchHollarBalance(address) {
15+
const api = useAssetHubApi();
16+
17+
const { loading, value } = useAsync(async () => {
18+
if (!api) {
19+
return;
20+
}
21+
22+
const result = await api?.query?.foreignAssets?.account(
23+
HOLLAR_FOREIGN_ASSET_KEY,
24+
address,
25+
);
26+
27+
return result?.toJSON()?.balance || "0";
28+
}, [api, address]);
29+
30+
return { balance: value || "0", loading };
31+
}
32+
33+
export function ExternalLink({ href, children }) {
34+
return (
35+
<a
36+
href={href}
37+
className="text12Medium text-textTertiary hover:underline"
38+
target="_blank"
39+
rel="noreferrer"
40+
>
41+
{children}
42+
</a>
43+
);
44+
}

‎packages/next-common/components/overview/fellowship/finance/salary.jsx‎

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import SummaryItem from "next-common/components/summary/layout/item";
2-
import Link from "next-common/components/link";
32
import LoadableContent from "next-common/components/common/loadableContent";
43
import FiatPriceLabel from "next-common/components/summary/polkadotTreasurySummary/common/fiatPriceLabel";
54
import useQueryFellowshipSalaryBalance, {
@@ -8,36 +7,45 @@ import useQueryFellowshipSalaryBalance, {
87
import { toPrecision } from "next-common/utils";
98
import { SYMBOL_DECIMALS } from "next-common/utils/consts/asset";
109
import TokenSymbolAsset from "next-common/components/summary/polkadotTreasurySummary/common/tokenSymbolAsset";
10+
import { HOLLAR_DECIMALS, useFetchHollarBalance, ExternalLink } from "./common";
1111

1212
export default function FellowshipSalary() {
13-
const { balance, isLoading } = useQueryFellowshipSalaryBalance("USDT");
13+
const { balance: usdtBalance, isLoading: usdtLoading } =
14+
useQueryFellowshipSalaryBalance("USDT");
15+
const { balance: hollarBalance, loading: hollarLoading } =
16+
useFetchHollarBalance(StatemintFellowShipSalaryAccount);
1417

1518
const Title = (
16-
<>
17-
<Link
18-
href={`https://assethub-polkadot.statescan.io/#/accounts/${StatemintFellowShipSalaryAccount}`}
19-
className="text12Medium text-textTertiary hover:underline"
20-
target="_blank"
21-
rel="noreferrer"
22-
>
23-
Salary ↗
24-
</Link>
25-
</>
19+
<ExternalLink
20+
href={`https://assethub-polkadot.statescan.io/#/accounts/${StatemintFellowShipSalaryAccount}`}
21+
>
22+
Salary ↗
23+
</ExternalLink>
2624
);
2725

2826
return (
2927
<SummaryItem title={Title}>
30-
<LoadableContent isLoading={isLoading}>
28+
<LoadableContent isLoading={usdtLoading && hollarLoading}>
3129
<div className="flex flex-col gap-[4px]">
3230
<div>
33-
<FiatPriceLabel usdtBalance={balance} />
31+
<FiatPriceLabel
32+
usdtBalance={usdtBalance}
33+
hollarBalance={hollarBalance}
34+
/>
3435
</div>
35-
<div className="flex flex-col gap-y-1 !ml-0">
36+
<div className="flex flex-col gap-y-1">
3637
<TokenSymbolAsset
37-
amount={toPrecision(balance, SYMBOL_DECIMALS.USDT)}
38+
amount={toPrecision(usdtBalance, SYMBOL_DECIMALS.USDT)}
3839
symbol="USDT"
3940
/>
4041
</div>
42+
<div className="flex flex-col gap-y-1">
43+
<TokenSymbolAsset
44+
amount={toPrecision(hollarBalance, HOLLAR_DECIMALS)}
45+
symbol="HOLLAR"
46+
type="foreign"
47+
/>
48+
</div>
4149
</div>
4250
</LoadableContent>
4351
</SummaryItem>

‎packages/next-common/components/overview/fellowship/finance/treasury.jsx‎

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import SummaryItem from "next-common/components/summary/layout/item";
2-
import Link from "next-common/components/link";
32
import LoadableContent from "next-common/components/common/loadableContent";
43
import NativeTokenSymbolAsset from "next-common/components/summary/polkadotTreasurySummary/common/nativeTokenSymbolAsset";
54
import FiatPriceLabel from "next-common/components/summary/polkadotTreasurySummary/common/fiatPriceLabel";
65
import { StatemintFellowShipTreasuryAccount } from "next-common/hooks/treasury/useAssetHubTreasuryBalance";
76
import { useAssetHubApi } from "next-common/hooks/chain/useAssetHubApi";
87
import useSubStorage from "next-common/hooks/common/useSubStorage";
8+
import { toPrecision } from "next-common/utils";
9+
import TokenSymbolAsset from "next-common/components/summary/polkadotTreasurySummary/common/tokenSymbolAsset";
10+
import { HOLLAR_DECIMALS, useFetchHollarBalance, ExternalLink } from "./common";
911

1012
function useFetchFellowshipTreasuryBalance() {
1113
const api = useAssetHubApi();
@@ -22,30 +24,35 @@ function useFetchFellowshipTreasuryBalance() {
2224
}
2325

2426
export default function FellowshipTreasury() {
25-
const { balance, loading } = useFetchFellowshipTreasuryBalance();
27+
const { balance: dotBalance, loading: dotLoading } =
28+
useFetchFellowshipTreasuryBalance();
29+
const { balance: hollarBalance, loading: hollarLoading } =
30+
useFetchHollarBalance(StatemintFellowShipTreasuryAccount);
2631

2732
const Title = (
28-
<>
29-
<Link
30-
href={`https://assethub-polkadot.statescan.io/#/accounts/${StatemintFellowShipTreasuryAccount}`}
31-
className="text12Medium text-textTertiary hover:underline"
32-
target="_blank"
33-
rel="noreferrer"
34-
>
35-
Treasury ↗
36-
</Link>
37-
</>
33+
<ExternalLink
34+
href={`https://assethub-polkadot.statescan.io/#/accounts/${StatemintFellowShipTreasuryAccount}`}
35+
>
36+
Treasury ↗
37+
</ExternalLink>
3838
);
3939

4040
return (
4141
<SummaryItem title={Title}>
42-
<LoadableContent isLoading={loading}>
42+
<LoadableContent isLoading={dotLoading || hollarLoading}>
4343
<div className="flex flex-col gap-[4px]">
4444
<div>
45-
<FiatPriceLabel free={balance} />
45+
<FiatPriceLabel free={dotBalance} hollarBalance={hollarBalance} />
4646
</div>
47-
<div className="flex flex-col gap-y-1 !ml-0">
48-
<NativeTokenSymbolAsset free={balance} />
47+
<div className="flex items-center gap-x-1">
48+
<NativeTokenSymbolAsset free={dotBalance} />
49+
</div>
50+
<div className="flex items-center gap-x-1">
51+
<TokenSymbolAsset
52+
amount={toPrecision(hollarBalance, HOLLAR_DECIMALS)}
53+
symbol="HOLLAR"
54+
type="foreign"
55+
/>
4956
</div>
5057
</div>
5158
</LoadableContent>

‎packages/next-common/components/summary/polkadotTreasurySummary/common/fiatPriceLabel.jsx‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default function FiatPriceLabel({
1010
free = 0,
1111
usdcBalance = 0,
1212
usdtBalance = 0,
13+
hollarBalance = 0,
1314
}) {
1415
const { price: fiatPrice } = useFiatPriceSnapshot();
1516
const { decimals } = useChainSettings();
@@ -18,7 +19,8 @@ export default function FiatPriceLabel({
1819
.dividedBy(Math.pow(10, decimals))
1920
.multipliedBy(fiatPrice)
2021
.plus(toPrecision(usdcBalance, SYMBOL_DECIMALS.USDC))
21-
.plus(toPrecision(usdtBalance, SYMBOL_DECIMALS.USDT));
22+
.plus(toPrecision(usdtBalance, SYMBOL_DECIMALS.USDT))
23+
.plus(toPrecision(hollarBalance, SYMBOL_DECIMALS.HOLLAR));
2224

2325
return (
2426
<div>

‎packages/next-common/utils/consts/asset.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export const SYMBOL_DECIMALS = {
22
DOT: 10,
33
USDT: 6,
44
USDC: 6,
5+
HOLLAR: 18,
56
};
67

78
export const ASSET_DETAIL_LINKS = {

0 commit comments

Comments
 (0)