forked from cerc-io/laconic-wallet
43 lines
1.4 KiB
TypeScript
43 lines
1.4 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, getAccountNumberFromParams } from './Helpers';
|
|
import { signEthMessage } from '../sign-message';
|
|
import { Account } from '../../types';
|
|
|
|
export async function approveEIP155Request(
|
|
requestEvent: SignClientTypes.EventArguments['session_request'],
|
|
currentEthAddresses: string[],
|
|
ethAccounts: Account[],
|
|
) {
|
|
const { params, id } = requestEvent;
|
|
const { request } = params;
|
|
const counterId = await getAccountNumberFromParams(
|
|
currentEthAddresses,
|
|
ethAccounts,
|
|
params,
|
|
);
|
|
|
|
switch (request.method) {
|
|
case EIP155_SIGNING_METHODS.PERSONAL_SIGN:
|
|
const message = getSignParamsMessage(request.params);
|
|
const signedMessage = 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);
|
|
}
|