diff --git a/packages/examples/packages/dialogs/snap.manifest.json b/packages/examples/packages/dialogs/snap.manifest.json
index f8fe7debe8..dfe7198ebe 100644
--- a/packages/examples/packages/dialogs/snap.manifest.json
+++ b/packages/examples/packages/dialogs/snap.manifest.json
@@ -7,7 +7,7 @@
"url": "https://github.com/MetaMask/snaps.git"
},
"source": {
- "shasum": "fCeqfbW1isFwXBPuM3RaAEtcR3J0Lv31fQ57rFNRwfs=",
+ "shasum": "A/1FVAisbJ1AzbmRBHL70p9QrviO9/30AwgUV2xLmgM=",
"location": {
"npm": {
"filePath": "dist/bundle.js",
diff --git a/packages/examples/packages/dialogs/src/components/index.ts b/packages/examples/packages/dialogs/src/components/index.ts
index c7226ae4e2..c939e66b48 100644
--- a/packages/examples/packages/dialogs/src/components/index.ts
+++ b/packages/examples/packages/dialogs/src/components/index.ts
@@ -1 +1,2 @@
export * from './custom';
+export * from './require-scroll-content';
diff --git a/packages/examples/packages/dialogs/src/components/require-scroll-content.tsx b/packages/examples/packages/dialogs/src/components/require-scroll-content.tsx
new file mode 100644
index 0000000000..4164fb6308
--- /dev/null
+++ b/packages/examples/packages/dialogs/src/components/require-scroll-content.tsx
@@ -0,0 +1,38 @@
+import {
+ Box,
+ Button,
+ Container,
+ Footer,
+ Text,
+ type SnapComponent,
+} from '@metamask/snaps-sdk/jsx';
+
+/**
+ * Long content that requires scrolling.
+ *
+ * @returns The long content component.
+ */
+export const RequireScrollContent: SnapComponent = () => (
+
+
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+ Lorem ipsum dolor sit amet.
+
+
+
+);
diff --git a/packages/examples/packages/dialogs/src/index.tsx b/packages/examples/packages/dialogs/src/index.tsx
index a1849576e3..40d3902814 100644
--- a/packages/examples/packages/dialogs/src/index.tsx
+++ b/packages/examples/packages/dialogs/src/index.tsx
@@ -11,17 +11,17 @@ import {
UserInputEventType,
} from '@metamask/snaps-sdk';
-import { CustomDialog } from './components';
+import { CustomDialog, RequireScrollContent } from './components';
/**
* Handle incoming JSON-RPC requests from the dapp, sent through the
- * `wallet_invokeSnap` method. This handler handles three methods, one for each
- * type of dialog:
+ * `wallet_invokeSnap` method. This handler handles four methods:
*
* - `showAlert`: Show an alert dialog.
* - `showConfirmation`: Show a confirmation dialog.
* - `showPrompt`: Show a prompt dialog.
* - `showCustom`: Show a custom dialog with the resolution handled by the snap.
+ * - `showLongContent`: Show a custom dialog with content that requires scrolling.
*
* The dialogs are shown using the [`snap_dialog`](https://docs.metamask.io/snaps/reference/rpc-api/#snap_dialog)
* method.
@@ -90,6 +90,12 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => {
},
});
+ case 'showLongContent':
+ return snap.request({
+ method: 'snap_dialog',
+ params: { content: },
+ });
+
default:
throw new MethodNotFoundError({ method: request.method });
}
@@ -136,6 +142,20 @@ export const onUserInput: OnUserInputHandler = async ({ id, event }) => {
break;
}
+ case 'accept':
+ await snap.request({
+ method: 'snap_resolveInterface',
+ params: { id, value: true },
+ });
+ break;
+
+ case 'reject':
+ await snap.request({
+ method: 'snap_resolveInterface',
+ params: { id, value: false },
+ });
+ break;
+
default:
break;
}
diff --git a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx
index b808772078..ea5d5068b3 100644
--- a/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx
+++ b/packages/test-snaps/src/features/snaps/dialogs/Dialogs.tsx
@@ -43,6 +43,12 @@ export const Dialogs: FunctionComponent = () => {
}).catch(logError);
};
+ const handleSubmitLongContent = () => {
+ invokeSnap({
+ snapId,
+ method: 'showLongContent',
+ }).catch(logError);
+ };
return (
{
>
Custom
+