laconic-wallet/utils/wallet-connect/EIP155Requests.ts
Adwait Gharpure d44d8a3092
UI changes for wallet-connect integration (#43)
* Change button position

* Add check for counterId

* Display complete uri

* Update readme

---------

Co-authored-by: Adw8 <adwait@deepstacksoft.com>
2024-03-07 15:28:12 +05:30

36 lines
1.2 KiB
TypeScript

// Taken from https://medium.com/walletconnect/how-to-build-a-wallet-in-react-native-with-the-web3wallet-sdk-b6f57bf02f9a
import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils';
import { SignClientTypes } from '@walletconnect/types';
import { getSdkError } from '@walletconnect/utils';
import { EIP155_SIGNING_METHODS } from './EIP155Lib';
import { getSignParamsMessage } from './Helpers';
import { signEthMessage } from '../sign-message';
export async function approveEIP155Request(
requestEvent: SignClientTypes.EventArguments['session_request'],
counterId: number | undefined,
) {
const { params, id } = requestEvent;
const { request } = params;
switch (request.method) {
case EIP155_SIGNING_METHODS.PERSONAL_SIGN:
const message = getSignParamsMessage(request.params);
const signedMessage =
counterId !== undefined && (await signEthMessage(message, counterId));
return formatJsonRpcResult(id, signedMessage);
default:
throw new Error(getSdkError('INVALID_METHOD').message);
}
}
export function rejectEIP155Request(
request: SignClientTypes.EventArguments['session_request'],
) {
const { id } = request;
return formatJsonRpcError(id, getSdkError('USER_REJECTED_METHODS').message);
}