@@ -885,14 +885,30 @@ export class Account extends AbstractAccount implements WithAddress {
885
885
* @param transactionRequestLike - The transaction request to sign.
886
886
* @returns A promise that resolves to the signature of the transaction.
887
887
*/
888
- async signTransaction ( transactionRequestLike : TransactionRequestLike ) : Promise < string > {
888
+ async signTransaction (
889
+ transactionRequestLike : TransactionRequestLike ,
890
+ connectorOptions : AccountSendTxParams = { }
891
+ ) : Promise < string | TransactionRequest > {
889
892
if ( ! this . _connector ) {
890
893
throw new FuelError (
891
894
ErrorCode . MISSING_CONNECTOR ,
892
895
'A connector is required to sign transactions.'
893
896
) ;
894
897
}
895
- return this . _connector . signTransaction ( this . address . toString ( ) , transactionRequestLike ) ;
898
+
899
+ const transactionRequest = transactionRequestify ( transactionRequestLike ) ;
900
+
901
+ const { transactionRequest : requestToSign , connectorsSendTxParams } =
902
+ await this . setTransactionStateForConnectors ( {
903
+ transactionRequest,
904
+ connectorOptions,
905
+ } ) ;
906
+
907
+ return this . _connector . signTransaction (
908
+ this . address . toString ( ) ,
909
+ requestToSign ,
910
+ connectorsSendTxParams
911
+ ) ;
896
912
}
897
913
898
914
/**
@@ -906,30 +922,20 @@ export class Account extends AbstractAccount implements WithAddress {
906
922
transactionRequestLike : TransactionRequestLike ,
907
923
{ estimateTxDependencies = true , ...connectorOptions } : AccountSendTxParams = { }
908
924
) : Promise < TransactionResponse > {
909
- let transactionRequest = transactionRequestify ( transactionRequestLike ) ;
925
+ const transactionRequest = transactionRequestify ( transactionRequestLike ) ;
910
926
911
927
// Check if the account is using a connector, and therefore we do not have direct access to the
912
928
// private key.
913
929
if ( this . _connector ) {
914
- const { onBeforeSend, skipCustomFee = false } = connectorOptions ;
915
-
916
- transactionRequest = await this . prepareTransactionForSend ( transactionRequest ) ;
917
-
918
- const params : FuelConnectorSendTxParams = {
919
- onBeforeSend,
920
- skipCustomFee,
921
- provider : {
922
- url : this . provider . url ,
923
- cache : await serializeProviderCache ( this . provider ) ,
924
- } ,
925
- transactionState : transactionRequest . flag . state ,
926
- transactionSummary : await this . prepareTransactionSummary ( transactionRequest ) ,
927
- } ;
930
+ const response = await this . setTransactionStateForConnectors ( {
931
+ transactionRequest,
932
+ connectorOptions,
933
+ } ) ;
928
934
929
935
const transaction : string | TransactionResponse = await this . _connector . sendTransaction (
930
936
this . address . toString ( ) ,
931
- transactionRequest ,
932
- params
937
+ response . transactionRequest ,
938
+ response . connectorsSendTxParams
933
939
) ;
934
940
935
941
return typeof transaction === 'string'
@@ -940,6 +946,7 @@ export class Account extends AbstractAccount implements WithAddress {
940
946
if ( estimateTxDependencies ) {
941
947
await this . provider . estimateTxDependencies ( transactionRequest ) ;
942
948
}
949
+
943
950
return this . provider . sendTransaction ( transactionRequest , {
944
951
estimateTxDependencies : false ,
945
952
} ) ;
@@ -1113,4 +1120,32 @@ export class Account extends AbstractAccount implements WithAddress {
1113
1120
) ;
1114
1121
}
1115
1122
}
1123
+
1124
+ /** @hidden * */
1125
+ private async setTransactionStateForConnectors ( params : {
1126
+ transactionRequest : TransactionRequest ;
1127
+ connectorOptions : AccountSendTxParams ;
1128
+ } ) : Promise < {
1129
+ transactionRequest : TransactionRequest ;
1130
+ connectorsSendTxParams : FuelConnectorSendTxParams ;
1131
+ } > {
1132
+ const { transactionRequest : requestToPrepare , connectorOptions } = params ;
1133
+
1134
+ const { onBeforeSend, skipCustomFee = false } = connectorOptions ;
1135
+
1136
+ const transactionRequest = await this . prepareTransactionForSend ( requestToPrepare ) ;
1137
+
1138
+ const connectorsSendTxParams : FuelConnectorSendTxParams = {
1139
+ onBeforeSend,
1140
+ skipCustomFee,
1141
+ provider : {
1142
+ url : this . provider . url ,
1143
+ cache : await serializeProviderCache ( this . provider ) ,
1144
+ } ,
1145
+ transactionState : requestToPrepare . flag . state ,
1146
+ transactionSummary : await this . prepareTransactionSummary ( requestToPrepare ) ,
1147
+ } ;
1148
+
1149
+ return { transactionRequest, connectorsSendTxParams } ;
1150
+ }
1116
1151
}
0 commit comments