diff --git a/frontend/proof-of-existence/src/assets/images/copy-icon.svg b/frontend/proof-of-existence/src/assets/images/copy-icon.svg new file mode 100644 index 000000000..764d716e2 --- /dev/null +++ b/frontend/proof-of-existence/src/assets/images/copy-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/proof-of-existence/src/utils/wallet-utils.ts b/frontend/proof-of-existence/src/utils/wallet-utils.ts new file mode 100644 index 000000000..14bbd2c20 --- /dev/null +++ b/frontend/proof-of-existence/src/utils/wallet-utils.ts @@ -0,0 +1,15 @@ +import { Wallet } from "@/types/enums"; +import type { Keplr } from "@keplr-wallet/types"; + +export function getWalletFromType(wallet: string): Keplr { + switch (wallet) { + case Wallet.Keplr: + return window.keplr; + case Wallet.Cosmostation: + return window.cosmostation.providers.keplr; + case Wallet.Leap: + return window.leap; + default: + throw new Error("Wallet not supported"); + } +} diff --git a/frontend/proof-of-existence/src/views/certify/CreateProofView.vue b/frontend/proof-of-existence/src/views/certify/CreateProofView.vue index 1dc8a9e0f..f2189c851 100644 --- a/frontend/proof-of-existence/src/views/certify/CreateProofView.vue +++ b/frontend/proof-of-existence/src/views/certify/CreateProofView.vue @@ -12,6 +12,7 @@ import { CHAIN_ID, RPC_URL } from "@/config/config"; import type { OfflineSigner } from "@cosmjs/proto-signing"; import type { DeliverTxResponse } from "@cosmjs/stargate/build/stargateclient"; import { toast } from "vue3-toastify"; +import { getWalletFromType } from "@/utils/wallet-utils"; const fee = { amount: [{ amount: "100000", denom: "umpwr" }], @@ -28,6 +29,8 @@ const showModal = ref(false); const selectedWallet = ref(""); const errorMessage = ref(); const loading = ref(false); +const address = ref(); +const addressVisible = ref(); //Methods const back = () => { @@ -46,9 +49,21 @@ const closeModal = () => { const handleSelectedWallet = (wallet: Wallet) => { selectedWallet.value = wallet; + showWalletAddress(wallet); closeModal(); }; +const showWalletAddress = async (selectedWallet: Wallet) => { + const wallet = getWalletFromType(selectedWallet); + const account = await wallet.getKey(CHAIN_ID); + const walletAddress = account.bech32Address; + address.value = walletAddress; + addressVisible.value = + walletAddress?.substring(0, 10) + + "..." + + walletAddress?.substring(walletAddress?.length - 4); +}; + const handleTransaction = async () => { loading.value = true; switch (selectedWallet.value) { @@ -125,6 +140,11 @@ const pushToSuccessPage = () => { }, }); }; + +const copyAddress = async () => { + await navigator.clipboard.writeText(address.value); + toast.success("Address copied to clipboard"); +};