submit extrinsics

This commit is contained in:
Josep M Sobrepere
2024-11-04 13:39:05 +01:00
parent cdbdfcf250
commit 7537fb5d60
6 changed files with 319 additions and 63 deletions
+243
View File
@@ -22,6 +22,12 @@ importers:
'@headlessui/react':
specifier: ^2.2.0
version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@ledgerhq/hw-transport-webusb':
specifier: ^6.29.4
version: 6.29.4
'@polkadot-api/ledger-signer':
specifier: ^0.1.6
version: 0.1.6(@ledgerhq/hw-transport@6.31.4)
'@polkadot-api/metadata-builders':
specifier: ^0.9.1
version: 0.9.1
@@ -37,9 +43,18 @@ importers:
'@polkadot-api/utils':
specifier: ^0.1.2
version: 0.1.2
'@radix-ui/react-dialog':
specifier: ^1.1.2
version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-label':
specifier: ^2.1.0
version: 2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-popover':
specifier: ^1.1.2
version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-select':
specifier: ^2.1.2
version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-tabs':
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -58,6 +73,15 @@ importers:
'@react-rxjs/utils':
specifier: ^0.9.7
version: 0.9.7(@react-rxjs/core@0.10.7(react@18.3.1)(rxjs@7.8.1))(react@18.3.1)(rxjs@7.8.1)
buffer:
specifier: ^6.0.3
version: 6.0.3
class-variance-authority:
specifier: ^0.7.0
version: 0.7.0
clsx:
specifier: ^2.1.1
version: 2.1.1
lucide-react:
specifier: ^0.454.0
version: 0.454.0(react@18.3.1)
@@ -659,6 +683,21 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@ledgerhq/devices@8.4.4':
resolution: {integrity: sha512-sz/ryhe/R687RHtevIE9RlKaV8kkKykUV4k29e7GAVwzHX1gqG+O75cu1NCJUHLbp3eABV5FdvZejqRUlLis9A==}
'@ledgerhq/errors@6.19.1':
resolution: {integrity: sha512-75yK7Nnit/Gp7gdrJAz0ipp31CCgncRp+evWt6QawQEtQKYEDfGo10QywgrrBBixeRxwnMy1DP6g2oCWRf1bjw==}
'@ledgerhq/hw-transport-webusb@6.29.4':
resolution: {integrity: sha512-HoGF1LlBT9HEGBQy2XeCHrFdv/FEOZU0+J+yfKcgAQIAiASr2MLvdzwoJbUS8h6Gn+vc+/BjzBSO3JNn7Loqbg==}
'@ledgerhq/hw-transport@6.31.4':
resolution: {integrity: sha512-6c1ir/cXWJm5dCWdq55NPgCJ3UuKuuxRvf//Xs36Bq9BwkV2YaRQhZITAkads83l07NAdR16hkTWqqpwFMaI6A==}
'@ledgerhq/logs@6.12.0':
resolution: {integrity: sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==}
'@noble/hashes@1.5.0':
resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==}
engines: {node: ^14.21.3 || >=16}
@@ -698,9 +737,17 @@ packages:
'@polkadot-api/known-chains@0.5.5':
resolution: {integrity: sha512-9VuyLzzIJlU6ydvW59RW1vZxrqXCcttiicPfS2M+0HxpehfrDswoZf7EkLnI/jpcbxHeO7XvyyRdJYnYUiP/rg==}
'@polkadot-api/ledger-signer@0.1.6':
resolution: {integrity: sha512-UTfaqm3kAHTZg3CpXUqvd800nHAtmKq84ZVpeik/oVURNvLJfqRYvDj+zgc2EIaRRy9gDmlvd0TDKwgxYrIBWg==}
peerDependencies:
'@ledgerhq/hw-transport': '6'
'@polkadot-api/logs-provider@0.0.6':
resolution: {integrity: sha512-4WgHlvy+xee1ADaaVf6+MlK/+jGMtsMgAzvbQOJZnP4PfQuagoTqaeayk8HYKxXGphogLlPbD06tANxcb+nvAg==}
'@polkadot-api/merkleize-metadata@1.1.9':
resolution: {integrity: sha512-TwFhbnHcnad/O5S8NnT9OcCX0CRAyJL9PilwV/sd8cEdS9LWNwlBxjTqUWWKhRrtlsSeuvi2ldYC+dgUYUaIOA==}
'@polkadot-api/metadata-builders@0.9.1':
resolution: {integrity: sha512-yZPm9KKn7QydbjMQMzhKHekDuQSdSZXYdCyqGt74HSNz9DdJSdpFNwHv0p+vmp+9QDlVsKK7nbUTjYxLZT4vCA==}
@@ -751,6 +798,9 @@ packages:
'@polkadot-api/ws-provider@0.3.2':
resolution: {integrity: sha512-1eeQMqFZu8WUOREL9KV4D3+qV09d1GGEboTPH3t/2DQ97tPr6VFqeKAkubVoVk/jhOWvlTXTIarGL/wk8Sdgfw==}
'@radix-ui/number@1.1.0':
resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
'@radix-ui/primitive@1.1.0':
resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
@@ -807,6 +857,19 @@ packages:
'@types/react':
optional: true
'@radix-ui/react-dialog@1.1.2':
resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
'@radix-ui/react-direction@1.1.0':
resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
peerDependencies:
@@ -860,6 +923,19 @@ packages:
'@types/react':
optional: true
'@radix-ui/react-label@2.1.0':
resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
'@radix-ui/react-popover@1.1.2':
resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==}
peerDependencies:
@@ -938,6 +1014,19 @@ packages:
'@types/react-dom':
optional: true
'@radix-ui/react-select@2.1.2':
resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
'@radix-ui/react-slot@1.1.0':
resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
peerDependencies:
@@ -1035,6 +1124,15 @@ packages:
'@types/react':
optional: true
'@radix-ui/react-use-previous@1.1.0':
resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@radix-ui/react-use-rect@1.1.0':
resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
peerDependencies:
@@ -1403,6 +1501,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
@@ -1422,6 +1523,9 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
bundle-require@5.0.0:
resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1471,6 +1575,9 @@ packages:
resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
engines: {node: '>= 14.16.0'}
class-variance-authority@0.7.0:
resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
engines: {node: '>=18'}
@@ -1479,6 +1586,10 @@ packages:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
clsx@2.1.1:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
@@ -1653,6 +1764,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
execa@9.5.1:
resolution: {integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==}
engines: {node: ^18.19.0 || >=20.5.0}
@@ -1785,6 +1900,9 @@ packages:
resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
engines: {node: '>=18.18.0'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -3067,6 +3185,31 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@ledgerhq/devices@8.4.4':
dependencies:
'@ledgerhq/errors': 6.19.1
'@ledgerhq/logs': 6.12.0
rxjs: 7.8.1
semver: 7.6.3
'@ledgerhq/errors@6.19.1': {}
'@ledgerhq/hw-transport-webusb@6.29.4':
dependencies:
'@ledgerhq/devices': 8.4.4
'@ledgerhq/errors': 6.19.1
'@ledgerhq/hw-transport': 6.31.4
'@ledgerhq/logs': 6.12.0
'@ledgerhq/hw-transport@6.31.4':
dependencies:
'@ledgerhq/devices': 8.4.4
'@ledgerhq/errors': 6.19.1
'@ledgerhq/logs': 6.12.0
events: 3.3.0
'@ledgerhq/logs@6.12.0': {}
'@noble/hashes@1.5.0': {}
'@nodelib/fs.scandir@2.1.5':
@@ -3145,10 +3288,25 @@ snapshots:
'@polkadot-api/known-chains@0.5.5': {}
'@polkadot-api/ledger-signer@0.1.6(@ledgerhq/hw-transport@6.31.4)':
dependencies:
'@ledgerhq/hw-transport': 6.31.4
'@polkadot-api/merkleize-metadata': 1.1.9
'@polkadot-api/polkadot-signer': 0.1.6
'@polkadot-api/signers-common': 0.1.1
'@polkadot-api/substrate-bindings': 0.9.3
'@polkadot-api/utils': 0.1.2
'@polkadot-api/logs-provider@0.0.6':
dependencies:
'@polkadot-api/json-rpc-provider': 0.0.4
'@polkadot-api/merkleize-metadata@1.1.9':
dependencies:
'@polkadot-api/metadata-builders': 0.9.1
'@polkadot-api/substrate-bindings': 0.9.3
'@polkadot-api/utils': 0.1.2
'@polkadot-api/metadata-builders@0.9.1':
dependencies:
'@polkadot-api/substrate-bindings': 0.9.3
@@ -3235,6 +3393,8 @@ snapshots:
- bufferutil
- utf-8-validate
'@radix-ui/number@1.1.0': {}
'@radix-ui/primitive@1.1.0': {}
'@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -3276,6 +3436,28 @@ snapshots:
optionalDependencies:
'@types/react': 18.3.12
'@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/primitive': 1.1.0
'@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1)
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
'@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)':
dependencies:
react: 18.3.1
@@ -3319,6 +3501,15 @@ snapshots:
optionalDependencies:
'@types/react': 18.3.12
'@radix-ui/react-label@2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
'@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/primitive': 1.1.0
@@ -3406,6 +3597,35 @@ snapshots:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
'@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/number': 1.1.0
'@radix-ui/primitive': 1.1.0
'@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
aria-hidden: 1.2.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
'@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1)
@@ -3501,6 +3721,12 @@ snapshots:
optionalDependencies:
'@types/react': 18.3.12
'@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)':
dependencies:
react: 18.3.1
optionalDependencies:
'@types/react': 18.3.12
'@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)':
dependencies:
'@radix-ui/rect': 1.1.0
@@ -3859,6 +4085,8 @@ snapshots:
balanced-match@1.0.2: {}
base64-js@1.5.1: {}
binary-extensions@2.3.0: {}
brace-expansion@1.1.11:
@@ -3881,6 +4109,11 @@ snapshots:
node-releases: 2.0.18
update-browserslist-db: 1.1.1(browserslist@4.24.2)
buffer@6.0.3:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
bundle-require@5.0.0(esbuild@0.24.0):
dependencies:
esbuild: 0.24.0
@@ -3933,12 +4166,18 @@ snapshots:
dependencies:
readdirp: 4.0.2
class-variance-authority@0.7.0:
dependencies:
clsx: 2.0.0
cli-cursor@5.0.0:
dependencies:
restore-cursor: 5.1.0
cli-spinners@2.9.2: {}
clsx@2.0.0: {}
clsx@2.1.1: {}
color-convert@1.9.3:
@@ -4139,6 +4378,8 @@ snapshots:
esutils@2.0.3: {}
events@3.3.0: {}
execa@9.5.1:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
@@ -4264,6 +4505,8 @@ snapshots:
human-signals@8.0.0: {}
ieee754@1.2.1: {}
ignore@5.3.2: {}
import-fresh@3.3.0:
+1 -1
View File
@@ -6,7 +6,7 @@ import { Header } from "./pages/Header"
import { Metadata } from "./pages/Metadata"
import { RuntimeCalls } from "./pages/RuntimeCalls"
import { Storage } from "./pages/Storage"
import { Transactions } from "./components/Transactions"
import { Transactions } from "./pages/Transactions"
export default function App() {
return (
+2 -14
View File
@@ -96,22 +96,10 @@ const extensionAccounts$ = state((name: string) =>
)
export const extensions$ = combineKeys(availableExtensions$, extension$)
extensions$.subscribe()
// extensions$.subscribe()
export const accountsByExntesion$ = combineKeys(
availableExtensions$,
extensionAccounts$,
)
accountsByExntesion$.subscribe()
/*
const getLedgerSigner = async () => {
const {Buffer} = await import('buffer')
globalThis.Buffer = Buffer
const [transport, LSigner] = await Promise.all([
import('@ledgerhq/hw-transport-webusb').then(x => x.default.create()),
import("@polkadot-api/ledger-signer").then(x => x.LedgerSigner)
])
return new LSigner(transport)
}
*/
// accountsByExntesion$.subscribe()
+12 -40
View File
@@ -1,6 +1,5 @@
import { dynamicBuilder$ } from "@/chain.state"
import { BinaryDisplay } from "@/codec-components/LookupTypeEdit"
import { ActionButton } from "@/components/ActionButton"
import { ButtonGroup } from "@/components/ButtonGroup"
import { LoadingMetadata } from "@/components/Loading"
import { withSubscribe } from "@/components/withSuspense"
@@ -11,6 +10,7 @@ import { useState } from "react"
import { map } from "rxjs"
import { EditMode } from "./EditMode"
import { JsonMode } from "./JsonMode"
import { ExtrinsicModal } from "./SubmitTx/SubmitTx"
const extrinsicProps$ = state(
dynamicBuilder$.pipe(
@@ -46,46 +46,18 @@ export const Extrinsics = withSubscribe(
? null
: componentValue.value.encoded) ?? null
const calllData =
componentValue.type === CodecComponentType.Initial
? componentValue.value
: !componentValue.value.empty
? componentValue.value.encoded
: undefined
const calllData =
componentValue.type === CodecComponentType.Initial
? componentValue.value
: !componentValue.value.empty
? componentValue.value.encoded
: undefined
return (
<div className="flex flex-col overflow-hidden gap-2">
<div>Extrinsics</div>
return (
<div className="flex flex-col overflow-hidden gap-2">
<div>Extrinsics</div>
<BinaryDisplay
{...extrinsicProps}
value={componentValue}
onUpdate={(value) =>
setComponentValue({ type: CodecComponentType.Updated, value })
}
/>
<div className="flex flex-row justify-between px-2">
<ButtonGroup
value={viewMode}
onValueChange={setViewMode as any}
items={[
{
value: "edit",
content: "Edit",
},
{
value: "json",
content: "JSON",
disabled: !binaryValue,
},
]}
/>
<ExtrinsicModal callData={calllData} />
</div>
{viewMode === "edit" ? (
<EditMode
<BinaryDisplay
{...extrinsicProps}
value={componentValue}
onUpdate={(value) =>
@@ -109,7 +81,7 @@ export const Extrinsics = withSubscribe(
},
]}
/>
<ActionButton disabled>Submit extrinsic</ActionButton>
<ExtrinsicModal callData={calllData} />
</div>
{viewMode === "edit" ? (
+10 -5
View File
@@ -6,20 +6,22 @@ import {
DialogTrigger,
} from "@/components/ui/dialog"
import { Binary, HexString } from "polkadot-api"
import React, { createContext, useContext } from "react"
import React, { createContext, useContext, useState } from "react"
import { ExtensionProvider } from "./ExtensionProvider"
import { AccountProvider } from "./AccountProvider"
import { useSelectedAccount } from "./accountCtx"
import { unsafeApi$ } from "@/chain.state"
import { noop } from "rxjs"
import { toHex } from "@polkadot-api/utils"
import { onNexTx } from "@/components/Transactions"
import { onNexTx } from "@/pages/Transactions"
const CallDataCtx = createContext("")
const OnCloseCtx = createContext(noop)
const SignAndSubmit = () => {
const account = useSelectedAccount()
const callData = useContext(CallDataCtx)
const close = useContext(OnCloseCtx)
return (
<ActionButton
onClick={() => {
@@ -27,12 +29,12 @@ const SignAndSubmit = () => {
const subscription = unsafeApi$.subscribe((client) => {
nClients++
if (nClients > 1) return subscription.unsubscribe()
client
.txFromCallData(Binary.fromHex(callData))
.then((x) => {
if (nClients === 1)
return x.sign(account.polkadotSigner).then((s) => {
close()
if (nClients === 1) onNexTx(s)
})
}, noop)
@@ -60,8 +62,9 @@ const SelectAccountFromExtension = () => {
export const ExtrinsicModal: React.FC<{
callData: Uint8Array | HexString | undefined
}> = ({ callData }) => {
const [open, setOpen] = useState(false)
return (
<Dialog>
<Dialog open={open} onOpenChange={setOpen}>
<DialogTrigger asChild>
<ActionButton disabled={callData == null}>
Submit extrinsic
@@ -72,7 +75,9 @@ export const ExtrinsicModal: React.FC<{
<CallDataCtx.Provider
value={callData instanceof Uint8Array ? toHex(callData) : callData!}
>
<SelectAccountFromExtension />
<OnCloseCtx.Provider value={() => setOpen(false)}>
<SelectAccountFromExtension />
</OnCloseCtx.Provider>
</CallDataCtx.Provider>
</DialogContent>
</Dialog>
@@ -16,8 +16,9 @@ import {
tap,
withLatestFrom,
} from "rxjs"
import { CopyText } from "./Copy"
import { shortStr } from "@/utils"
import { CopyText } from "@/components/Copy"
import { Link } from "react-router-dom"
const [signedTx$, onNexTx] = createSignal<HexString>()
export { onNexTx }
@@ -81,7 +82,54 @@ transactionList$.subscribe()
const Transaction: React.FC<
TxBroadcastEvent | { type: "invalid" | "error"; value: any; txHash: string }
> = ({ txHash, type }) => {
> = (event) => {
const getStatus = () => {
const { type } = event
switch (event.type) {
case "error":
return <span>There was an unexpected error.</span>
case "invalid":
return (
<span>
Invalid transaction. {JSON.stringify(event.value, null, 2)}
</span>
)
case "txBestBlocksState": {
return event.found ? (
<span>
Transaction in{" "}
<Link
className="underline font-bold"
to={`/explorer/${event.block.hash}#tx=${event.block.index}`}
>
best block
</Link>
.
</span>
) : (
<span>Transaction no longer in a best block.</span>
)
}
case "signed":
case "broadcasted":
return <span>Transaction {type}.</span>
default:
return (
<span>
Transaction in{" "}
<Link
className="underline font-bold"
to={`/explorer/${event.block.hash}#tx=${event.block.index}`}
>
{" "}
finalized block
</Link>
.
</span>
)
}
}
const { txHash, type } = event
return (
<div className="mb-4 p-3 bg-polkadot-800 rounded-lg">
<p className="font-medium">
@@ -96,7 +144,7 @@ const Transaction: React.FC<
: "text-red-500"
}`}
>
Status: {type}
{getStatus()}
</p>
</div>
)