|
6 | 6 | <title>withdraw POC</title>
|
7 | 7 | </head>
|
8 | 8 | <body>
|
9 |
| - <label for="runtimeUrl">URL to a Marlowe Runtime instance:</label> |
10 |
| - <input |
11 |
| - id="runtimeUrl" |
12 |
| - type="text" |
13 |
| - autocomplete="on" |
14 |
| - placeholder="http://localhost:32952" |
15 |
| - /> |
16 |
| - <br /> |
17 | 9 | <label for="wallet">Select wallet:</label>
|
18 |
| - <select id="wallet" name="wallet"> |
19 |
| - <option value="nami">Nami</option> |
20 |
| - <option value="eternl">Eternl</option> |
21 |
| - </select> |
| 10 | + <select id="wallet" name="wallet"></select> |
22 | 11 | <br />
|
23 | 12 | <input id="start-flow" type="button" value="Start flow" />
|
24 | 13 | <hr />
|
25 | 14 | <div id="console"></div>
|
26 | 15 |
|
27 | 16 | <script type="module">
|
28 |
| - import { Browser } from "/dist/runtime/esm/index.js"; |
| 17 | + import { |
| 18 | + getExtensionInstance, |
| 19 | + getAvailableWallets, |
| 20 | + } from "/dist/wallet/esm/index.js"; |
29 | 21 | const consoleDiv = document.getElementById("console");
|
| 22 | + const walletInput = document.getElementById("wallet"); |
| 23 | + const availableWallets = getAvailableWallets(); |
| 24 | + if (availableWallets.length === 0) { |
| 25 | + const option = document.createElement("option"); |
| 26 | + option.value = "invalid"; |
| 27 | + option.text = "No wallet available"; |
| 28 | + walletInput.add(option); |
| 29 | + walletInput.disabled = true; |
| 30 | + } else { |
| 31 | + availableWallets.forEach((walletName) => { |
| 32 | + const option = document.createElement("option"); |
| 33 | + option.value = walletName; |
| 34 | + option.text = |
| 35 | + walletName.charAt(0).toUpperCase() + walletName.slice(1); |
| 36 | + walletInput.add(option); |
| 37 | + }); |
| 38 | + } |
30 | 39 |
|
31 | 40 | const log = (message) => {
|
32 | 41 | var currentContent = consoleDiv.innerHTML;
|
33 | 42 | consoleDiv.innerHTML = currentContent + "<\BR>" + message;
|
34 | 43 | };
|
35 | 44 |
|
36 |
| - console.log("Browser", Browser); |
37 |
| - |
38 | 45 | async function cip30Flow() {
|
39 | 46 | // Clear console
|
40 | 47 | consoleDiv.innerHTML = "";
|
41 | 48 |
|
42 |
| - const runtimeUrlInput = document.getElementById("runtimeUrl"); |
43 |
| - const runtimeUrl = runtimeUrlInput.value || "http://localhost:32952"; |
44 |
| - const walletInput = document.getElementById("wallet"); |
45 |
| - const wallet = walletInput.value; |
| 49 | + const walletName = walletInput.value; |
46 | 50 |
|
47 |
| - log(`<h2>Accessing ${wallet} Wallet Extension</h2>`); |
48 |
| - const runtime = await Browser.mkRuntimeLifecycle(runtimeUrl)(wallet)(); |
| 51 | + log(`<h2>Accessing ${walletName} Wallet Extension</h2>`); |
| 52 | + const wallet = await getExtensionInstance(walletName)(); |
49 | 53 | log("");
|
50 | 54 | log("Reading Wallet information...");
|
51 | 55 | log("");
|
52 | 56 |
|
53 |
| - const cip30Network = await runtime.wallet.getCIP30Network(); |
| 57 | + const cip30Network = await wallet.getCIP30Network(); |
54 | 58 | log(`* <b>Network</b>: ${cip30Network}`);
|
55 | 59 | log(
|
56 | 60 | " NOTE: The CIP30 standard can't distinguish between testnet networks (preprod/preview/etc)"
|
57 | 61 | );
|
58 |
| - log("") |
| 62 | + log(""); |
59 | 63 |
|
60 |
| - const lovelaces = await runtime.wallet.getLovelaces(); |
| 64 | + const lovelaces = await wallet.getLovelaces(); |
61 | 65 | log("- <b>Lovelaces</b>: " + lovelaces.right);
|
62 |
| - const tokensResult = await runtime.wallet.getTokens(); |
63 |
| - log("") |
| 66 | + const tokensResult = await wallet.getTokens(); |
| 67 | + log(""); |
64 | 68 |
|
65 | 69 | log(`- <b>Tokens</b>: (${tokensResult.right.length} tokens)`);
|
66 | 70 | tokensResult.right.map((token) => {
|
67 | 71 | const tokenName =
|
68 | 72 | token.assetId.assetName == ""
|
69 | 73 | ? "lovelaces"
|
70 | 74 | : token.assetId.assetName;
|
71 |
| - log( |
72 |
| - ` <i>${tokenName}</i> - ${token.quantity}` |
73 |
| - ); |
| 75 | + log(` <i>${tokenName}</i> - ${token.quantity}`); |
74 | 76 | });
|
75 |
| - log("") |
| 77 | + log(""); |
76 | 78 |
|
77 |
| - const changeAddress = await runtime.wallet.getChangeAddress(); |
| 79 | + const changeAddress = await wallet.getChangeAddress(); |
78 | 80 | log("- <b>Change Address</b>: " + changeAddress);
|
79 |
| - log("") |
| 81 | + log(""); |
80 | 82 |
|
81 |
| - const usedAddresses = await runtime.wallet.getUsedAddresses(); |
| 83 | + const usedAddresses = await wallet.getUsedAddresses(); |
82 | 84 | log(`- <b>Used Addresses</b>: (${usedAddresses.length} addresses)`);
|
83 | 85 | usedAddresses.map((usedAddress) =>
|
84 | 86 | log(" - " + usedAddress)
|
85 | 87 | );
|
86 |
| - log("") |
| 88 | + log(""); |
87 | 89 |
|
88 |
| - const collaterals = await runtime.wallet.getCollaterals() |
89 |
| - log(`- <b>Collaterals</b>: (${collaterals.length} collaterals)`) |
90 |
| - collaterals.map(collateral=> log( ' - '+ collateral )) |
91 |
| - log("") |
| 90 | + const collaterals = await wallet.getCollaterals(); |
| 91 | + log(`- <b>Collaterals</b>: (${collaterals.length} collaterals)`); |
| 92 | + collaterals.map((collateral) => |
| 93 | + log(" - " + collateral) |
| 94 | + ); |
| 95 | + log(""); |
92 | 96 |
|
93 |
| - const utxos = await runtime.wallet.getUTxOs() |
94 |
| - log(`- <b>UTxOs</b>: (${utxos.length} utxos)`) |
95 |
| - utxos.map(utxo=> log( ' - '+ utxo )) |
| 97 | + const utxos = await wallet.getUTxOs(); |
| 98 | + log(`- <b>UTxOs</b>: (${utxos.length} utxos)`); |
| 99 | + utxos.map((utxo) => log(" - " + utxo)); |
| 100 | + log(""); |
| 101 | + log("Wallet flow done 🎉"); |
96 | 102 | }
|
97 | 103 |
|
98 |
| - |
99 | 104 | const startFlowButton = document.getElementById("start-flow");
|
100 | 105 | startFlowButton.addEventListener("click", cip30Flow);
|
101 | 106 | </script>
|
|
0 commit comments