@@ -9,21 +9,23 @@ import { FullNodeEvent, FullNodeEventTypes } from './types';
99
1010/**
1111 * Extracts the transaction hash from a fullnode event.
12+ * Now handles ALL event types, not just predefined ones.
1213 *
1314 * @param event - The fullnode event to extract the hash from
1415 * @returns The transaction hash if the event contains one, null otherwise
1516 */
1617export function extractTxHash ( event : FullNodeEvent ) : string | null {
1718 const eventType = event . event . type ;
19+ const eventData = event . event . data as any ;
1820
1921 switch ( eventType ) {
2022 case FullNodeEventTypes . NEW_VERTEX_ACCEPTED :
2123 case FullNodeEventTypes . VERTEX_METADATA_CHANGED :
2224 case FullNodeEventTypes . VERTEX_REMOVED :
23- return event . event . data . hash ;
25+ return eventData ?. hash ?? null ;
2426
2527 case FullNodeEventTypes . NC_EVENT :
26- return event . event . data . vertex_id ;
28+ return eventData ?. vertex_id ?? null ;
2729
2830 case FullNodeEventTypes . LOAD_STARTED :
2931 case FullNodeEventTypes . LOAD_FINISHED :
@@ -33,6 +35,30 @@ export function extractTxHash(event: FullNodeEvent): string | null {
3335 return null ;
3436
3537 default :
38+ // Handle unknown event types by trying common patterns
39+ // TOKEN_CREATED and other events might have different structures
40+
41+ // Try standard hash field
42+ if ( eventData ?. hash ) {
43+ return eventData . hash ;
44+ }
45+
46+ // Try vertex_id (for vertex-related events)
47+ if ( eventData ?. vertex_id ) {
48+ return eventData . vertex_id ;
49+ }
50+
51+ // Try token_uid (for TOKEN_CREATED events)
52+ if ( eventData ?. token_uid ) {
53+ return eventData . token_uid ;
54+ }
55+
56+ // Try nc_exec_info.nc_tx (for nano contract events)
57+ if ( eventData ?. nc_exec_info ?. nc_tx ) {
58+ return eventData . nc_exec_info . nc_tx ;
59+ }
60+
61+ // No recognizable hash found
3662 return null ;
3763 }
3864}
0 commit comments