From 9248d826256226f3ed686b226c4596eefe571cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Freitas?= Date: Tue, 7 May 2024 18:39:50 +0100 Subject: [PATCH] up --- packages/wallet/src/mintbase-wallet.ts | 34 ++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/packages/wallet/src/mintbase-wallet.ts b/packages/wallet/src/mintbase-wallet.ts index c32dcc60..5874c1cd 100644 --- a/packages/wallet/src/mintbase-wallet.ts +++ b/packages/wallet/src/mintbase-wallet.ts @@ -212,10 +212,39 @@ export const MintbaseWallet: WalletBehaviourFactory< throw new Error(`The verifyOwner method is not supported by ${metadata.name}`); }; - const signMessage = async (): Promise => { - throw new Error(`The signMessage method is not supported by ${metadata.name}`); + const signMessage = async ({ message, nonce, recipient, callbackUrl }): Promise => { + const { cbUrl } = getCallbackUrl(callbackUrl ?? ''); + + const newUrl = new URL(`${metadata.walletUrl}/sign-message`); + newUrl.searchParams.set('message', message); + newUrl.searchParams.set('nonce', nonce); + newUrl.searchParams.set('recipient', recipient); + newUrl.searchParams.set('callbackUrl', cbUrl); + window.location.assign(newUrl.toString()); }; + const verifyMessage = async ({ accountId, publicKey, signature, message, nonce, recipient, callbackUrl }): Promise => { + + const newUrl = new URL(`${metadata.walletUrl}/api/verify-message`); + newUrl.searchParams.set('message', message); + newUrl.searchParams.set('accountId', accountId); + newUrl.searchParams.set('publicKey', publicKey); + newUrl.searchParams.set('signature', signature); + newUrl.searchParams.set('nonce', nonce); + newUrl.searchParams.set('recipient', recipient); + newUrl.searchParams.set('callbackUrl', callbackUrl); + + try { + const response = await fetch(newUrl.toString()) + const data = await response.json(); + + const { isValid } = data + return isValid + } catch (e) { + return false + } + } + const getAvailableBalance = async (): Promise => { // const accountId = state.wallet.getAccountId(); // return await getBalance(accountId); @@ -307,5 +336,6 @@ export const MintbaseWallet: WalletBehaviourFactory< getAccounts, switchAccount, signAndSendTransactions, + verifyMessage }; };