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");
+};
{
class="h-20 cursor-pointer mb-3"
v-if="selectedWallet === Wallet.Leap"
/>
+
+
{{ addressVisible }}
+
+