// Copyright 2017-2026 @pezkuwi/react-signer authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { SubmittableExtrinsic } from '@pezkuwi/api/types'; import type { QueueTx, QueueTxMessageSetStatus } from '@pezkuwi/react-components/Status/types'; import React, { useCallback } from 'react'; import { Button, ErrorBoundary, Modal } from '@pezkuwi/react-components'; import { useQueue, useToggle } from '@pezkuwi/react-hooks'; import Transaction from './Transaction.js'; import { useTranslation } from './translate.js'; import { handleTxResults } from './util.js'; interface Props { className?: string; currentItem: QueueTx; } async function send (queueSetTxStatus: QueueTxMessageSetStatus, currentItem: QueueTx, tx: SubmittableExtrinsic<'promise'>): Promise { currentItem.txStartCb && currentItem.txStartCb(); try { const unsubscribe = await tx.send(handleTxResults('send', queueSetTxStatus, currentItem, (): void => { unsubscribe(); })); } catch (error) { console.error('send: error:', error); queueSetTxStatus(currentItem.id, 'error', {}, error as Error); currentItem.txFailedCb && currentItem.txFailedCb(null); } } function TxUnsigned ({ className, currentItem }: Props): React.ReactElement | null { const { t } = useTranslation(); const { queueSetTxStatus } = useQueue(); const [isRenderError, toggleRenderError] = useToggle(); const _onSend = useCallback( async (): Promise => { if (currentItem.extrinsic) { await send(queueSetTxStatus, currentItem, currentItem.extrinsic); } }, [currentItem, queueSetTxStatus] ); return ( <>