diff --git a/src/pages/Extrinsics/SubmitTx/SelectAccountFromExtension.tsx b/src/pages/Extrinsics/SubmitTx/SelectAccountFromExtension.tsx
new file mode 100644
index 0000000..f53552a
--- /dev/null
+++ b/src/pages/Extrinsics/SubmitTx/SelectAccountFromExtension.tsx
@@ -0,0 +1,57 @@
+import { unsafeApi$ } from "@/chain.state"
+import { ActionButton } from "@/components/ActionButton"
+import { onNexTx } from "@/pages/Transactions"
+import { useStateObservable } from "@react-rxjs/core"
+import { Binary } from "polkadot-api"
+import { FC } from "react"
+import { noop } from "rxjs"
+import { AccountProvider, selectedAccount$ } from "./AccountProvider"
+import { ExtensionProvider } from "./ExtensionProvider"
+
+const SignAndSubmit: FC<{ callData: string; onClose: () => void }> = ({
+ callData,
+ onClose,
+}) => {
+ const account = useStateObservable(selectedAccount$)
+
+ if (!account) return null
+
+ return (
+ {
+ let nClients = 0
+ 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) => {
+ onClose()
+ if (nClients === 1) onNexTx(s)
+ })
+ }, noop)
+ .finally(() => {
+ subscription.unsubscribe()
+ })
+ })
+ }}
+ >
+ Sign and Submit
+
+ )
+}
+
+export default function SelectAccountFromExtension(props: {
+ callData: string
+ onClose: () => void
+}) {
+ return (
+ <>
+
+
+
+ >
+ )
+}
diff --git a/src/pages/Extrinsics/SubmitTx/SubmitTx.tsx b/src/pages/Extrinsics/SubmitTx/SubmitTx.tsx
index 7df30cb..22e8118 100644
--- a/src/pages/Extrinsics/SubmitTx/SubmitTx.tsx
+++ b/src/pages/Extrinsics/SubmitTx/SubmitTx.tsx
@@ -1,4 +1,3 @@
-import { unsafeApi$ } from "@/chain.state"
import { ActionButton } from "@/components/ActionButton"
import {
Dialog,
@@ -6,61 +5,13 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog"
-import { onNexTx } from "@/pages/Transactions"
import { toHex } from "@polkadot-api/utils"
-import { useStateObservable } from "@react-rxjs/core"
-import { Binary, HexString } from "polkadot-api"
-import React, { createContext, useContext, useState } from "react"
-import { noop } from "rxjs"
-import { AccountProvider, selectedAccount$ } from "./AccountProvider"
-import { ExtensionProvider } from "./ExtensionProvider"
+import { HexString } from "polkadot-api"
+import React, { lazy, Suspense, useState } from "react"
-const CallDataCtx = createContext("")
-const OnCloseCtx = createContext(noop)
-
-const SignAndSubmit = () => {
- const account = useStateObservable(selectedAccount$)
- const callData = useContext(CallDataCtx)
- const close = useContext(OnCloseCtx)
-
- if (!account) return null
-
- return (
- {
- let nClients = 0
- 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)
- .finally(() => {
- subscription.unsubscribe()
- })
- })
- }}
- >
- Sign and Submit
-
- )
-}
-
-const SelectAccountFromExtension = () => {
- return (
- <>
-
-
-
- >
- )
-}
+const SelectAccountFromExtension = lazy(
+ () => import("./SelectAccountFromExtension"),
+)
export const ExtrinsicModal: React.FC<{
callData: Uint8Array | HexString | undefined
@@ -84,13 +35,14 @@ export const ExtrinsicModal: React.FC<{
className="flex flex-col overflow-hidden"
>
Create TX
-
- setOpen(false)}>
-
-
-
+
+ setOpen(false)}
+ />
+
)