@@ -9,13 +9,14 @@ import {
99import { TronForm } from '~/containers/BuildUnsignedConsolidation/TronForm' ;
1010import { TronTokenForm } from '~/containers/BuildUnsignedConsolidation/TronTokenForm' ;
1111import { CoinsSelectAutocomplete } from '~/components' ;
12- import { buildUnsignedConsolidationCoins } from '~/helpers/config' ;
12+ import { buildUnsignedConsolidationCoins , tokenParentCoins } from '~/helpers/config' ;
1313import { BackToHomeHelperText } from '~/components/BackToHomeHelperText' ;
1414import { ConsolidationRecoveryBatch } from '@bitgo/sdk-coin-trx' ;
1515import { useAlertBanner } from '~/contexts' ;
1616import { GenericEcdsaForm } from '~/containers/BuildUnsignedConsolidation/GenericEcdsaForm' ;
1717import { SolForm } from '~/containers/BuildUnsignedConsolidation/SolForm' ;
1818import { SolTokenForm } from '~/containers/BuildUnsignedConsolidation/SolTokenForm' ;
19+ import { SuiTokenForm } from '~/containers/BuildUnsignedConsolidation/SuiTokenForm' ;
1920
2021type ConsolidationFormProps = {
2122 coin ?: string ;
@@ -25,10 +26,9 @@ type ConsolidationFormProps = {
2526function isRecoveryConsolidationTransaction (
2627 result : any
2728) : result is ConsolidationRecoveryBatch {
28- const consolidationRecoveryBatch = result as ConsolidationRecoveryBatch ;
2929 return (
30- consolidationRecoveryBatch &&
31- consolidationRecoveryBatch . transactions !== undefined
30+ ( 'txRequests' in result && ! ! result [ 'txRequests' ] ) ||
31+ ( ' transactions' in result && ! ! result [ 'transactions' ] )
3232 ) ;
3333}
3434
@@ -343,6 +343,60 @@ function ConsolidationForm({ coin, environment }: ConsolidationFormProps) {
343343 console . log ( e ) ;
344344 }
345345
346+ setSubmitting ( false ) ;
347+ }
348+ } }
349+ />
350+ ) ;
351+ case 'suiToken' :
352+ case 'tsuiToken' :
353+ return (
354+ < SuiTokenForm
355+ onSubmit = { async ( values , { setSubmitting } ) => {
356+ setSubmitting ( true ) ;
357+ try {
358+ await window . commands . setBitGoEnvironment ( environment ) ;
359+ const parentCoin = tokenParentCoins [ coin ] ;
360+ const chainData = await window . queries . getChain ( parentCoin ) ;
361+ const consolidateData = await window . commands . recoverConsolidations ( parentCoin , {
362+ ...( await updateKeysFromIds ( parentCoin , values ) ) ,
363+ bitgoKey : values . bitgoKey . replace ( / \s + / g, '' ) ,
364+ tokenContractAddress : values . packageId ,
365+ seed : values . seed ,
366+ } ) ;
367+
368+ if ( consolidateData instanceof Error ) {
369+ throw consolidateData ;
370+ }
371+
372+ const showSaveDialogData = await window . commands . showSaveDialog ( {
373+ filters : [
374+ {
375+ name : 'Custom File Type' ,
376+ extensions : [ 'json' ] ,
377+ } ,
378+ ] ,
379+ defaultPath : `~/${ chainData } -unsigned-consolidation-${ Date . now ( ) } .json` ,
380+ } ) ;
381+ if ( ! showSaveDialogData . filePath ) {
382+ throw new Error ( 'No file path selected' ) ;
383+ }
384+
385+ await window . commands . writeFile (
386+ showSaveDialogData . filePath ,
387+ JSON . stringify ( consolidateData , null , 2 ) ,
388+ { encoding : 'utf8' }
389+ ) ;
390+ navigate (
391+ `/${ environment } /build-unsigned-consolidation/${ coin } /success`
392+ ) ;
393+ } catch ( e ) {
394+ if ( e instanceof Error ) {
395+ setAlert ( e . message ) ;
396+ } else {
397+ console . log ( e ) ;
398+ }
399+
346400 setSubmitting ( false ) ;
347401 }
348402 } }
0 commit comments