From 37c6cb713557d2a7ed4468c333d55a4eec232762 Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Feb 2025 14:39:25 +0100 Subject: [PATCH 1/3] Allow `null` in assets handlers response --- packages/snaps-controllers/src/snaps/SnapController.ts | 2 +- packages/snaps-sdk/src/types/handlers/assets-conversion.ts | 4 ++-- packages/snaps-sdk/src/types/handlers/assets-lookup.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/snaps-controllers/src/snaps/SnapController.ts b/packages/snaps-controllers/src/snaps/SnapController.ts index 7e9cb29c79..af95aaec06 100644 --- a/packages/snaps-controllers/src/snaps/SnapController.ts +++ b/packages/snaps-controllers/src/snaps/SnapController.ts @@ -3689,7 +3689,7 @@ export class SnapController extends BaseController< const { assets: requestedAssets } = requestedParams; const filteredAssets = Object.keys(assets).reduce< - Record + Record >((accumulator, assetType) => { const castAssetType = assetType as CaipAssetType; const isValid = diff --git a/packages/snaps-sdk/src/types/handlers/assets-conversion.ts b/packages/snaps-sdk/src/types/handlers/assets-conversion.ts index 7d5139057f..16db03f898 100644 --- a/packages/snaps-sdk/src/types/handlers/assets-conversion.ts +++ b/packages/snaps-sdk/src/types/handlers/assets-conversion.ts @@ -40,11 +40,11 @@ export type OnAssetsConversionHandler = ( /** * The response from the conversion query, containing rates about each requested asset pair. * - * @property conversionRates - A nested object with two CAIP-19 keys that contains a conversion rate between the two keys. + * @property conversionRates - A nested object with two CAIP-19 keys that contains a conversion rate or null between the two keys. */ export type OnAssetsConversionResponse = { conversionRates: Record< CaipAssetType, - Record + Record >; }; diff --git a/packages/snaps-sdk/src/types/handlers/assets-lookup.ts b/packages/snaps-sdk/src/types/handlers/assets-lookup.ts index 62aca05f4b..45a531b579 100644 --- a/packages/snaps-sdk/src/types/handlers/assets-lookup.ts +++ b/packages/snaps-sdk/src/types/handlers/assets-lookup.ts @@ -68,8 +68,8 @@ export type OnAssetsLookupHandler = ( /** * The response from the query, containing metadata about each requested asset. * - * @property assets - An object containing a mapping between the CAIP-19 key and a metadata object. + * @property assets - An object containing a mapping between the CAIP-19 key and a metadata object or null. */ export type OnAssetsLookupResponse = { - assets: Record; + assets: Record; }; From 2655fa05af7ac49a3fd8b50d1715eea1ebe32b22 Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Feb 2025 14:46:07 +0100 Subject: [PATCH 2/3] Update the structs --- packages/snaps-sdk/src/types/handlers/assets-conversion.ts | 3 ++- packages/snaps-sdk/src/types/handlers/assets-lookup.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/snaps-sdk/src/types/handlers/assets-conversion.ts b/packages/snaps-sdk/src/types/handlers/assets-conversion.ts index 16db03f898..ca2fda444d 100644 --- a/packages/snaps-sdk/src/types/handlers/assets-conversion.ts +++ b/packages/snaps-sdk/src/types/handlers/assets-conversion.ts @@ -5,6 +5,7 @@ import { string, optional, record, + nullable, } from '@metamask/superstruct'; import { CaipAssetTypeStruct, type CaipAssetType } from '@metamask/utils'; @@ -17,7 +18,7 @@ export const AssetConversionStruct = object({ export const OnAssetsConversionResponseStruct = object({ conversionRates: record( CaipAssetTypeStruct, - record(CaipAssetTypeStruct, AssetConversionStruct), + record(CaipAssetTypeStruct, nullable(AssetConversionStruct)), ), }); diff --git a/packages/snaps-sdk/src/types/handlers/assets-lookup.ts b/packages/snaps-sdk/src/types/handlers/assets-lookup.ts index 45a531b579..e372105c21 100644 --- a/packages/snaps-sdk/src/types/handlers/assets-lookup.ts +++ b/packages/snaps-sdk/src/types/handlers/assets-lookup.ts @@ -8,6 +8,7 @@ import { refine, string, record, + nullable, } from '@metamask/superstruct'; import { assert, @@ -46,7 +47,7 @@ export const FungibleAssetMetadataStruct = object({ }); export const OnAssetsLookupResponseStruct = object({ - assets: record(CaipAssetTypeStruct, FungibleAssetMetadataStruct), + assets: record(CaipAssetTypeStruct, nullable(FungibleAssetMetadataStruct)), }); export type FungibleAssetMetadata = Infer; From c0bc4d935a7bb7e3e232eb9cee836e0bb8284659 Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Feb 2025 15:38:14 +0100 Subject: [PATCH 3/3] Update manifests --- packages/examples/packages/browserify-plugin/snap.manifest.json | 2 +- packages/examples/packages/browserify/snap.manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/examples/packages/browserify-plugin/snap.manifest.json b/packages/examples/packages/browserify-plugin/snap.manifest.json index 9f60f96ea5..bdfc179668 100644 --- a/packages/examples/packages/browserify-plugin/snap.manifest.json +++ b/packages/examples/packages/browserify-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "GI7+exBM57/V+zc9afQYloOJkf31QC4QQ4J/FCjTkp0=", + "shasum": "h2/tYCy6l8S2zP9EdqxHKc0WSftxxnkP60i8d58vbno=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify/snap.manifest.json b/packages/examples/packages/browserify/snap.manifest.json index 90bd768029..a95a3470f3 100644 --- a/packages/examples/packages/browserify/snap.manifest.json +++ b/packages/examples/packages/browserify/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "kVPM+Ft1gxNWF59oCgW0MRN1DuA7kVyXwIdMbGec3aI=", + "shasum": "5mzSECxLy9lFHEwzmvRpjs0xL2TG0kTR2QXIjjavRTo=", "location": { "npm": { "filePath": "dist/bundle.js",