Skip to content

Commit e344040

Browse files
authored
Add useCrossVmTransactionStatus hook (#1336)
1 parent c0da08f commit e344040

File tree

1 file changed

+71
-1
lines changed

1 file changed

+71
-1
lines changed

docs/tools/kit/index.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ sidebar_position: 1
2828
- [`useCrossVmBatchTransaction`](#usecrossvmbatchtransaction) – Execute mutliple EVM transactions in a single atomic Cadence transaction
2929
- [`useCrossVmTokenBalance`](#usecrossvmtokenbalance) – Query fungible token balances across Cadence and Flow EVM
3030
- [`useCrossVmSpendNft`](#usecrossvmspendnft) – Bridge NFTs from Cadence to Flow EVM and execute arbitrary EVM transactions to atomically spend them
31-
- [`useCrossVmSpendToken`](#usecrossvmspendnft) – Bridge fungible tokens from Cadence to Flow EVM and execute arbitrary EVM transactions
31+
- [`useCrossVmSpendToken`](#usecrossvmspendtoken) – Bridge fungible tokens from Cadence to Flow EVM and execute arbitrary EVM transactions
32+
- [`useCrossVmTransactionStatus`](#usecrossvmtransactionstatus) – Track Cross-VM transaction status and EVM call results
3233

3334
## Installation
3435

@@ -853,5 +854,74 @@ function CrossVmSpendTokenExample() {
853854
}
854855
```
855856

857+
---
858+
859+
### `useCrossVmTransactionStatus`
860+
861+
<Callout type="info">
862+
This feature is currently only supported on Testnet & Mainnet networks. Emulator support will be added in a future release.
863+
</Callout>
864+
865+
```tsx
866+
import { useCrossVmTransactionStatus } from "@onflow/kit"
867+
```
868+
869+
Subscribes to status updates for a given Cross-VM Flow transaction ID that executes EVM calls. This hook monitors the transaction status and extracts EVM call results if available.
870+
871+
#### Parameters:
872+
873+
- `id?: string` – Optional Flow transaction ID to monitor
874+
875+
#### Returns: `UseCrossVmTransactionStatusResult`
876+
877+
Where `UseCrossVmTransactionStatusResult` is defined as:
878+
879+
```typescript
880+
interface UseCrossVmTransactionStatusResult {
881+
transactionStatus: TransactionStatus | null // Latest transaction status, or null before any update
882+
evmResults?: CallOutcome[] // EVM transaction results, if available
883+
error: Error | null // Any error encountered during status updates
884+
}
885+
```
886+
887+
Where `CallOutcome` is defined as:
888+
889+
```typescript
890+
interface CallOutcome {
891+
status: "passed" | "failed" | "skipped" // Status of the EVM call
892+
hash?: string // EVM transaction hash if available
893+
errorMessage?: string // Error message if the call failed
894+
}
895+
```
896+
897+
```tsx
898+
function CrossVmTransactionStatusComponent() {
899+
const txId = "your-cross-vm-transaction-id-here"
900+
const { transactionStatus, evmResults, error } = useCrossVmTransactionStatus({ id: txId })
901+
902+
if (error) return <div>Error: {error.message}</div>
903+
904+
return (
905+
<div>
906+
<div>Flow Status: {transactionStatus?.statusString}</div>
907+
{evmResults && evmResults.length > 0 && (
908+
<div>
909+
<h3>EVM Call Results:</h3>
910+
<ul>
911+
{evmResults.map((result, idx) => (
912+
<li key={idx}>
913+
Status: {result.status}
914+
{result.hash && <span> | Hash: {result.hash}</span>}
915+
{result.errorMessage && <span> | Error: {result.errorMessage}</span>}
916+
</li>
917+
))}
918+
</ul>
919+
</div>
920+
)}
921+
</div>
922+
)
923+
}
924+
```
925+
856926
[commit-reveal scheme]: ../../build/advanced-concepts/randomness#commit-reveal-scheme
857927
[Configuration Guide]: ../flow-cli/flow.json/configuration.md

0 commit comments

Comments
 (0)