From d51bda065ab0b1467044482540876588a5d98fa3 Mon Sep 17 00:00:00 2001 From: Norman Meier Date: Mon, 25 Sep 2023 14:48:16 +0200 Subject: [PATCH] feat: add ui to burn toris Signed-off-by: Norman Meier --- packages/screens/CoreDAO/CoreDAOScreen.tsx | 104 ++++++++++++++------- 1 file changed, 68 insertions(+), 36 deletions(-) diff --git a/packages/screens/CoreDAO/CoreDAOScreen.tsx b/packages/screens/CoreDAO/CoreDAOScreen.tsx index cb9b10b0f9..79d1b72b0b 100644 --- a/packages/screens/CoreDAO/CoreDAOScreen.tsx +++ b/packages/screens/CoreDAO/CoreDAOScreen.tsx @@ -1,5 +1,6 @@ +import { Decimal } from "@cosmjs/math"; import { useQuery } from "@tanstack/react-query"; -import React from "react"; +import React, { useState } from "react"; import { View } from "react-native"; import { Coin } from "../../api/teritori/coin"; @@ -7,6 +8,7 @@ import { MsgBurnTokens } from "../../api/teritori/mint"; import { BrandText } from "../../components/BrandText"; import { ScreenContainer } from "../../components/ScreenContainer"; import { PrimaryButton } from "../../components/buttons/PrimaryButton"; +import { TextInputCustom } from "../../components/inputs/TextInputCustom"; import { SpacerColumn } from "../../components/spacer"; import { useFeedbacks } from "../../context/FeedbacksProvider"; import { TeritoriNameServiceQueryClient } from "../../contracts-clients/teritori-name-service/TeritoriNameService.client"; @@ -20,7 +22,9 @@ import { useVaultConfig } from "../../hooks/vault/useVaultConfig"; import { getCosmosNetwork, getKeplrSigningStargateClient, + getStakingCurrency, getUserId, + keplrCurrencyFromNativeCurrencyInfo, mustGetNonSigningCosmWasmClient, } from "../../networks"; import { prettyPrice } from "../../utils/coins"; @@ -47,16 +51,21 @@ export const CoreDAOScreen: ScreenFC<"CoreDAO"> = () => { const DAOManager: React.FC = () => { const networkId = useSelectedNetworkId(); - const network = getCosmosNetwork(networkId); - const balances = useBalances(networkId, network?.coreDAOAddress); const selectedWallet = useSelectedWallet(); + const network = getCosmosNetwork(networkId); + const daoBalances = useBalances(networkId, network?.coreDAOAddress); + const userBalances = useBalances(networkId, selectedWallet?.address); const makeProposal = useDAOMakeProposal( getUserId(networkId, network?.coreDAOAddress) ); + const [burnAmount, setBurnAmount] = useState("0"); + const { wrapWithFeedback } = useFeedbacks(); + const currency = getStakingCurrency(networkId); return ( - Funds - {balances.map((balance) => { + Core DAO Funds + + {daoBalances.map((balance) => { return ( {prettyPrice(networkId, balance.amount, balance.denom)} - $ @@ -64,36 +73,7 @@ const DAOManager: React.FC = () => { ); })} - { - if (!selectedWallet?.address) { - return; - } - const client = await getKeplrSigningStargateClient( - selectedWallet.networkId - ); - const burnMsg: MsgBurnTokens = { - sender: selectedWallet?.address, - amount: [ - Buffer.from( - Coin.encode({ amount: "1000000", denom: "utori" }).finish() - ).toString(), - ], - }; - await client.signAndBroadcast( - selectedWallet?.address, - [ - { - typeUrl: "/teritori.mint.v1beta1.MsgBurnTokens", - value: burnMsg, - }, - ], - "auto" - ); - }} - /> + { }; await makeProposal(selectedWallet?.address, { - title: "Burn a TORI", + title: "Propose to burn a TORI", description: "", msgs: [ { @@ -131,6 +111,58 @@ const DAOManager: React.FC = () => { }); }} /> + + Your Funds + {userBalances.map((balance) => { + return ( + + {prettyPrice(networkId, balance.amount, balance.denom)} - $ + {balance.usdAmount} + + ); + })} + + + + { + if (!selectedWallet?.address || !currency) { + throw new Error("no wallet or currency"); + } + const client = await getKeplrSigningStargateClient( + selectedWallet.networkId + ); + const burnMsg: MsgBurnTokens = { + sender: selectedWallet?.address, + amount: [ + Buffer.from( + Coin.encode({ + amount: Decimal.fromUserInput(burnAmount, currency.decimals) + .atomics, + denom: currency.denom, + }).finish() + ).toString(), + ], + }; + await client.signAndBroadcast( + selectedWallet?.address, + [ + { + typeUrl: "/teritori.mint.v1beta1.MsgBurnTokens", + value: burnMsg, + }, + ], + "auto" + ); + })} + /> ); };