Skip to content

Commit 32c9ed0

Browse files
authored
Add JSX example to test-snaps (#2378)
This adds a section for the JSX example Snap to `test-snaps`. It just has one button, which triggers the UI with JSX.
1 parent 6f4d4ff commit 32c9ed0

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

packages/test-snaps/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"@metamask/insights-example-snap": "workspace:^",
4444
"@metamask/interactive-ui-example-snap": "workspace:^",
4545
"@metamask/json-rpc-example-snap": "workspace:^",
46+
"@metamask/jsx-example-snap": "workspace:^",
4647
"@metamask/lifecycle-hooks-example-snap": "workspace:^",
4748
"@metamask/localization-example-snap": "workspace:^",
4849
"@metamask/manage-state-example-snap": "workspace:^",

packages/test-snaps/src/features/snaps/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export * from './localization';
1313
export * from './home-page';
1414
export * from './images';
1515
export * from './json-rpc';
16+
export * from './jsx';
1617
export * from './lifecycle-hooks';
1718
export * from './manage-state';
1819
export * from './multi-install';
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { logError } from '@metamask/snaps-utils';
2+
import type { FunctionComponent } from 'react';
3+
import { Button } from 'react-bootstrap';
4+
5+
import { useInvokeMutation } from '../../../api';
6+
import { Result, Snap } from '../../../components';
7+
import { getSnapId } from '../../../utils';
8+
import { JSX_SNAP_ID, JSX_SNAP_PORT, JSX_VERSION } from './constants';
9+
10+
export const Jsx: FunctionComponent = () => {
11+
const [invokeSnap, { isLoading, data, error }] = useInvokeMutation();
12+
13+
const handleSubmit = () => {
14+
invokeSnap({
15+
snapId: getSnapId(JSX_SNAP_ID, JSX_SNAP_PORT),
16+
method: 'display',
17+
}).catch(logError);
18+
};
19+
20+
return (
21+
<Snap
22+
name="JSX Snap"
23+
snapId={JSX_SNAP_ID}
24+
port={JSX_SNAP_PORT}
25+
version={JSX_VERSION}
26+
testId="jsx"
27+
>
28+
<Button
29+
variant="primary"
30+
id="displayJsx"
31+
className="mb-3"
32+
disabled={isLoading}
33+
onClick={handleSubmit}
34+
>
35+
Show JSX dialog
36+
</Button>
37+
<Result>
38+
<span id="rpcResult">
39+
{JSON.stringify(data, null, 2)}
40+
{JSON.stringify(error, null, 2)}
41+
</span>
42+
</Result>
43+
</Snap>
44+
);
45+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import packageJson from '@metamask/jsx-example-snap/package.json';
2+
3+
export const JSX_SNAP_ID = 'npm:@metamask/jsx-example-snap';
4+
export const JSX_SNAP_PORT = 8029;
5+
export const JSX_VERSION = packageJson.version;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './Jsx';

yarn.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4910,7 +4910,7 @@ __metadata:
49104910
languageName: node
49114911
linkType: hard
49124912

4913-
"@metamask/jsx-example-snap@workspace:packages/examples/packages/jsx":
4913+
"@metamask/jsx-example-snap@workspace:^, @metamask/jsx-example-snap@workspace:packages/examples/packages/jsx":
49144914
version: 0.0.0-use.local
49154915
resolution: "@metamask/jsx-example-snap@workspace:packages/examples/packages/jsx"
49164916
dependencies:
@@ -6144,6 +6144,7 @@ __metadata:
61446144
"@metamask/insights-example-snap": "workspace:^"
61456145
"@metamask/interactive-ui-example-snap": "workspace:^"
61466146
"@metamask/json-rpc-example-snap": "workspace:^"
6147+
"@metamask/jsx-example-snap": "workspace:^"
61476148
"@metamask/lifecycle-hooks-example-snap": "workspace:^"
61486149
"@metamask/localization-example-snap": "workspace:^"
61496150
"@metamask/manage-state-example-snap": "workspace:^"

0 commit comments

Comments
 (0)