@@ -76,7 +76,6 @@ export default async function handler(
7676 signature ?: unknown ;
7777 key ?: unknown ;
7878 broadcast ?: unknown ;
79- txHash ?: unknown ;
8079 } ;
8180
8281 const {
@@ -86,7 +85,6 @@ export default async function handler(
8685 signature,
8786 key,
8887 broadcast : rawBroadcast ,
89- txHash : rawTxHash ,
9088 } = ( req . body ?? { } ) as SignTransactionRequestBody ;
9189
9290 if ( typeof walletId !== "string" || walletId . trim ( ) === "" ) {
@@ -289,66 +287,44 @@ export default async function handler(
289287 }
290288 } ) ( ) ;
291289
292- const providedTxHash =
293- typeof rawTxHash === "string" && rawTxHash . trim ( ) !== ""
294- ? rawTxHash . trim ( )
295- : undefined ;
296-
297- let normalizedProvidedTxHash : string | undefined ;
298- if ( providedTxHash ) {
299- try {
300- normalizedProvidedTxHash = normalizeHex ( providedTxHash , "txHash" ) ;
301- } catch ( error : unknown ) {
302- console . error ( "Invalid txHash payload" , toError ( error ) ) ;
303- return res . status ( 400 ) . json ( { error : "Invalid txHash format" } ) ;
304- }
305-
306- if ( normalizedProvidedTxHash . length !== 64 ) {
307- return res . status ( 400 ) . json ( { error : "Invalid txHash length" } ) ;
308- }
309-
310- if ( normalizedProvidedTxHash !== txHashHex ) {
311- return res
312- . status ( 400 )
313- . json ( { error : "Provided txHash does not match transaction body" } ) ;
314- }
315- }
316-
317290 let nextState = transaction . state ;
318- let finalTxHash = normalizedProvidedTxHash ?? transaction . txHash ?? undefined ;
291+ let finalTxHash = transaction . txHash ?? undefined ;
319292 let submissionError : string | undefined ;
320293
321- const resolveNetworkId = async ( ) : Promise < number > => {
322- const primarySignerAddress = wallet . signersAddresses . find (
323- ( candidate ) => typeof candidate === "string" && candidate . trim ( ) !== "" ,
324- ) ;
325- if ( primarySignerAddress ) {
326- return addressToNetwork ( primarySignerAddress ) ;
294+ const resolveNetworkId = ( ) : number => {
295+ const candidateAddresses = Array . isArray ( wallet . signersAddresses )
296+ ? wallet . signersAddresses
297+ : [ ] ;
298+
299+ for ( const candidate of candidateAddresses ) {
300+ if ( typeof candidate !== "string" ) {
301+ continue ;
302+ }
303+ const trimmed = candidate . trim ( ) ;
304+ if ( ! trimmed ) {
305+ continue ;
306+ }
307+ try {
308+ return addressToNetwork ( trimmed ) ;
309+ } catch ( error : unknown ) {
310+ console . warn ( "Unable to resolve network from wallet signer address" , {
311+ walletId,
312+ candidate : trimmed ,
313+ error : toError ( error ) ,
314+ } ) ;
315+ }
327316 }
328317
329- const walletRecord = await db . wallet . findUnique ( {
330- where : { id : walletId } ,
331- select : { signersAddresses : true } ,
332- } ) ;
333-
334- const fallbackAddress = walletRecord ?. signersAddresses ?. find (
335- ( candidate ) => typeof candidate === "string" && candidate . trim ( ) !== "" ,
336- ) ;
337- if ( fallbackAddress ) {
338- return addressToNetwork ( fallbackAddress ) ;
339- }
340-
341- return addressToNetwork ( address ) ;
318+ throw new Error ( "Unable to determine network from wallet data" ) ;
342319 } ;
343320
344321 if (
345322 shouldAttemptBroadcast &&
346323 threshold > 0 &&
347- updatedSignedAddresses . length >= threshold &&
348- ! normalizedProvidedTxHash
324+ updatedSignedAddresses . length >= threshold
349325 ) {
350326 try {
351- const network = await resolveNetworkId ( ) ;
327+ const network = resolveNetworkId ( ) ;
352328 const provider = getProvider ( network ) ;
353329 const submittedHash = await provider . submitTx ( txHexForUpdate ) ;
354330 finalTxHash = submittedHash ;
@@ -363,11 +339,6 @@ export default async function handler(
363339 }
364340 }
365341
366- if ( normalizedProvidedTxHash ) {
367- finalTxHash = txHashHex ;
368- nextState = 1 ;
369- }
370-
371342 if ( transaction . state === 1 ) {
372343 nextState = 1 ;
373344 } else if ( nextState !== 1 ) {
0 commit comments