diff --git a/README.md b/README.md index d013d0c7..b0934565 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Filecoin metamask snap and related packages to enable developers to add Filecoin ## Examples -- [`demo`](./packages/demo) - Preact demo dapp using [filsnap-adapter](./packages/filsnap-adapter) to interact with [filsnap](./packages/filsnap) -- [`fil-forwarder-viem`](./packages/fil-forwarder-viem) - [Viem](https://viem.sh/) example to send FIL using FilForwarder contract. +- [`demo`](./examples/demo) - Preact demo dapp using [filsnap-adapter](./packages/filsnap-adapter) to interact with [filsnap](./packages/filsnap) +- [`fil-forwarder-viem`](./examples/fil-forwarder-viem) - [Viem](https://viem.sh/) example to send FIL using FilForwarder contract. ### Checkout examples diff --git a/packages/snap/snap.manifest.json b/packages/snap/snap.manifest.json index 63db4fd2..64fe3fce 100644 --- a/packages/snap/snap.manifest.json +++ b/packages/snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/filecoin-project/filsnap.git" }, "source": { - "shasum": "A3iZwXzHmYbIDCPkBJ4OfiEMabYvimV54XNeqtrstNU=", + "shasum": "PrxFxKiusGgxcttw9R6UenDIU4vxcM2CFCfrX70fMWM=", "location": { "npm": { "filePath": "dist/snap.js", diff --git a/packages/snap/src/rpc/configure.ts b/packages/snap/src/rpc/configure.ts index abae2932..01398523 100644 --- a/packages/snap/src/rpc/configure.ts +++ b/packages/snap/src/rpc/configure.ts @@ -75,5 +75,5 @@ export async function configure( method: 'snap_manageState', params: { newState: state, operation: 'update' }, }) - return { result: _params.data, error: undefined } + return { result: _params.data, error: null } } diff --git a/packages/snap/src/rpc/export-private-key.ts b/packages/snap/src/rpc/export-private-key.ts index 7acd4ee7..0fe3691c 100644 --- a/packages/snap/src/rpc/export-private-key.ts +++ b/packages/snap/src/rpc/export-private-key.ts @@ -27,7 +27,7 @@ export async function exportPrivateKey( if (conf) { return { result: base64pad.encode(ctx.account.privateKey), - error: undefined, + error: null, } } return serializeError('User denied private key export') diff --git a/packages/snap/src/rpc/gas-for-message.ts b/packages/snap/src/rpc/gas-for-message.ts index c047c9be..68047a7c 100644 --- a/packages/snap/src/rpc/gas-for-message.ts +++ b/packages/snap/src/rpc/gas-for-message.ts @@ -78,7 +78,7 @@ export async function getGasForMessage( } return { - error: undefined, + error: null, result: { gasFeeCap: result.GasFeeCap, gasLimit: result.GasLimit, diff --git a/packages/snap/src/rpc/get-account.ts b/packages/snap/src/rpc/get-account.ts index a52b37bc..69072d3b 100644 --- a/packages/snap/src/rpc/get-account.ts +++ b/packages/snap/src/rpc/get-account.ts @@ -18,7 +18,7 @@ export async function getAccountInfo( return serializeError('RPC call to "WalletBalance" failed', balance.error) } return { - error: undefined, + error: null, result: { address: ctx.account.address.toString(), pubKey: ctx.account.pubKey.toString(), diff --git a/packages/snap/src/rpc/get-balance.ts b/packages/snap/src/rpc/get-balance.ts index 291b4493..ab077384 100644 --- a/packages/snap/src/rpc/get-balance.ts +++ b/packages/snap/src/rpc/get-balance.ts @@ -21,5 +21,5 @@ export async function getBalance( if (balance.error != null) { return serializeError('RPC call to "WalletBalance" failed', balance.error) } - return balance + return { result: balance.result, error: null } } diff --git a/packages/snap/src/rpc/get-messages.ts b/packages/snap/src/rpc/get-messages.ts index 902e7b49..17ed0601 100644 --- a/packages/snap/src/rpc/get-messages.ts +++ b/packages/snap/src/rpc/get-messages.ts @@ -28,5 +28,5 @@ export async function getMessages( return serializeError(`Invalid messages in snap state`, state.error) } - return { result: state.data.filecoin.messages, error: undefined } + return { result: state.data.filecoin.messages, error: null } } diff --git a/packages/snap/src/rpc/send-message.ts b/packages/snap/src/rpc/send-message.ts index 5bb8ec50..3e36dc9b 100644 --- a/packages/snap/src/rpc/send-message.ts +++ b/packages/snap/src/rpc/send-message.ts @@ -37,5 +37,5 @@ export async function sendMessage( message: params.message, } await updateMessageInState(snap, messageStatus) - return { result: messageStatus, error: undefined } + return { result: messageStatus, error: null } } diff --git a/packages/snap/src/rpc/sign-message.ts b/packages/snap/src/rpc/sign-message.ts index 9348ec8b..06013f1e 100644 --- a/packages/snap/src/rpc/sign-message.ts +++ b/packages/snap/src/rpc/sign-message.ts @@ -90,7 +90,7 @@ export async function signMessage( if (conf) { const sig = filSignMessage(ctx.account.privateKey, 'SECP256K1', message) return { - error: undefined, + error: null, result: { message, signature: { @@ -135,7 +135,7 @@ export async function signMessageRaw( if (conf) { const sig = sign(ctx.account.privateKey, 'SECP256K1', message) return { - error: undefined, + error: null, result: base64pad.encode(sig), } } diff --git a/packages/snap/src/types.ts b/packages/snap/src/types.ts index b734cba8..f1115c6f 100644 --- a/packages/snap/src/types.ts +++ b/packages/snap/src/types.ts @@ -62,7 +62,7 @@ export interface SnapError { export interface SnapResponseError { error: SnapError - result: undefined + result: null } /** @@ -70,7 +70,7 @@ export interface SnapResponseError { */ export type SnapResponse = | { - error: undefined + error: null result: R } | SnapResponseError diff --git a/packages/snap/src/utils.ts b/packages/snap/src/utils.ts index b3a293a6..c12c44cd 100644 --- a/packages/snap/src/utils.ts +++ b/packages/snap/src/utils.ts @@ -110,7 +110,7 @@ export function serializeError(msg: string, data?: unknown): SnapResponseError { // @ts-expect-error - no types const _msg = (hasMessage ? _data.message : '') as string return { - result: undefined, + result: null, error: { message: msg + (hasMessage ? ` - ${_msg}` : ''), data: _data, diff --git a/packages/snap/test/unit/rpc/export-seed.test.ts b/packages/snap/test/unit/rpc/export-seed.test.ts index b069bb15..dfb7e60f 100644 --- a/packages/snap/test/unit/rpc/export-seed.test.ts +++ b/packages/snap/test/unit/rpc/export-seed.test.ts @@ -33,6 +33,6 @@ describe('Test rpc handler function: exportSeed', function () { const result = await exportPrivateKey({ snap: walletStub, account }) expect(walletStub.rpcStubs.snap_dialog).to.have.been.calledOnce() - expect(result.result).to.be.undefined() + expect(result.result).to.be.null() }) }) diff --git a/packages/snap/test/unit/rpc/get-balance.test.ts b/packages/snap/test/unit/rpc/get-balance.test.ts index 4093a8cb..ff8a523d 100644 --- a/packages/snap/test/unit/rpc/get-balance.test.ts +++ b/packages/snap/test/unit/rpc/get-balance.test.ts @@ -17,13 +17,17 @@ describe('Test rpc handler function: getBalance', function () { // prepare stubs walletStub.prepareFoKeyPair() const account = await getKeyPair(walletStub) - rpcStub.balance.returns('30000000') + rpcStub.balance.returns({ result: '30000000' }) // call getBalance - // @ts-expect-error - test code - const result = await getBalance({ snap: walletStub, rpc: rpcStub, account }) + const balance = await getBalance({ + snap: walletStub, + // @ts-expect-error - test code + rpc: rpcStub, + account, + }) // assertions expect(walletStub.rpcStubs.snap_manageState).to.have.been.calledOnce() expect(walletStub.rpcStubs.snap_getBip44Entropy).to.have.been.calledOnce() - expect(result).to.be.eq('30000000') + expect(balance.result).to.be.eq('30000000') }) }) diff --git a/packages/snap/test/unit/rpc/sign-message.test.ts b/packages/snap/test/unit/rpc/sign-message.test.ts index 3f56c0c2..f5894d50 100644 --- a/packages/snap/test/unit/rpc/sign-message.test.ts +++ b/packages/snap/test/unit/rpc/sign-message.test.ts @@ -76,7 +76,7 @@ describe('Test rpc handler function: signMessage', function () { expect(apiStub.gasEstimate).to.have.been.calledOnce() expect(response).to.containSubset({ - error: undefined, + error: null, result: { message: fullMessage, signature: { @@ -127,7 +127,7 @@ describe('Test rpc handler function: signMessage', function () { expect(apiStub.nonce).to.have.not.been.called() expect(response).to.containSubset({ - error: undefined, + error: null, result: { message: { ...fullMessage, @@ -178,7 +178,7 @@ describe('Test rpc handler function: signMessage', function () { expect(apiStub.gasEstimate).to.have.been.calledOnce() expect(response).to.containSubset({ - error: undefined, + error: null, result: { message: paramsMessage, signature: { @@ -223,7 +223,7 @@ describe('Test rpc handler function: signMessage', function () { error: { message: 'User denied message signing', }, - result: undefined, + result: null, }) }) @@ -243,7 +243,7 @@ describe('Test rpc handler function: signMessage', function () { invalidMessage ) - expect(result).to.be.undefined() + expect(result).to.be.null() expect(error).to.not.be.null() }) })