mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
restore swaps xyz tx registration (#3205)
This commit is contained in:
@@ -382,7 +382,8 @@ class SwapsXyzExchangeProvider extends ExchangeProvider {
|
||||
final reqAmountRaw = reqAmountStr.replaceAll('n', '');
|
||||
|
||||
final needToRegisterInSwapXyz =
|
||||
vmId == 'alt-vm' || bridgeIds.contains('alt-vm');
|
||||
vmId == 'alt-vm' || bridgeIds.contains('alt-vm')
|
||||
|| chainId == 'solana' || bridgeIds.contains('solana');
|
||||
|
||||
final trade = Trade(
|
||||
id: txId,
|
||||
@@ -417,7 +418,7 @@ class SwapsXyzExchangeProvider extends ExchangeProvider {
|
||||
}
|
||||
|
||||
/// Register a broadcasted tx with Swaps.xyz (required for alt-vm).
|
||||
Future<bool> registerAltVmTx({
|
||||
static Future<bool> registerAltVmTx({
|
||||
required String txId,
|
||||
required String txHash,
|
||||
required int chainId,
|
||||
|
||||
@@ -340,7 +340,6 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
if (bottomSheetContext.mounted && Navigator.canPop(bottomSheetContext)) Navigator.of(bottomSheetContext).pop(true);
|
||||
|
||||
sendVM.commitTransaction(context);
|
||||
widget.exchangeTradeViewModel.registerSwapsXyzTransaction();
|
||||
},
|
||||
amountParsingProxy: sendVM.amountParsingProxy,
|
||||
);
|
||||
|
||||
@@ -406,56 +406,6 @@ abstract class ExchangeTradeViewModelBase with Store {
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<void> registerSwapsXyzTransaction() async {
|
||||
try {
|
||||
if (!(_provider is SwapsXyzExchangeProvider)) return;
|
||||
final swaps = _provider as SwapsXyzExchangeProvider;
|
||||
|
||||
// register only for vmId is alt-vm or bridgeId is alt-vm (trade.needToRegisterInSwapXyz)
|
||||
final needToRegister = trade.needToRegisterInSwapXyz ?? false;
|
||||
if (!needToRegister) return;
|
||||
|
||||
final vmId = (trade.providerId ?? '').toLowerCase();
|
||||
if (vmId.isEmpty) {
|
||||
printV('SwapsXyz: transaction register: skipped (vmId empty)');
|
||||
return;
|
||||
}
|
||||
|
||||
final txHash = sendViewModel.pendingTransaction?.evmTxHashFromRawHex ??
|
||||
sendViewModel.pendingTransaction?.id ??
|
||||
'';
|
||||
|
||||
if (txHash.isEmpty) {
|
||||
printV('SwapsXyz: transaction register: skipped (txHash empty)');
|
||||
return;
|
||||
}
|
||||
|
||||
final chainId = int.tryParse(trade.router ?? '') ?? 0;
|
||||
if (chainId <= 0) {
|
||||
printV('SwapsXyz: transaction register: skipped (invalid chainId)');
|
||||
return;
|
||||
}
|
||||
|
||||
printV(
|
||||
'SwapsXyz: attempting to register transaction: tradeId = ${trade.id}, txHash = $txHash, chainId = $chainId, vmId = $vmId');
|
||||
|
||||
final registered = await swaps.registerAltVmTx(
|
||||
txId: trade.id,
|
||||
txHash: txHash,
|
||||
chainId: chainId,
|
||||
vmId: vmId,
|
||||
);
|
||||
|
||||
if (!registered) {
|
||||
printV('SwapsXyz: transaction register: failed');
|
||||
} else {
|
||||
printV('SwapsXyz: transaction register: success');
|
||||
}
|
||||
} catch (e) {
|
||||
printV('registerSwapsXyzTransaction error: $e');
|
||||
}
|
||||
}
|
||||
|
||||
PaymentURI? get paymentUri {
|
||||
final inputAddress = trade.inputAddress;
|
||||
final amount = trade.amount;
|
||||
|
||||
@@ -22,6 +22,7 @@ import 'package:cake_wallet/entities/template.dart';
|
||||
import 'package:cake_wallet/entities/transaction_description.dart';
|
||||
import 'package:cake_wallet/entities/wallet_contact.dart';
|
||||
import 'package:cake_wallet/evm/evm.dart';
|
||||
import 'package:cake_wallet/exchange/exchange_provider_description.dart';
|
||||
import 'package:cake_wallet/exchange/provider/exchange_provider.dart';
|
||||
import 'package:cake_wallet/exchange/provider/jupiter_exchange_provider.dart';
|
||||
import 'package:cake_wallet/exchange/provider/near_Intents_exchange_provider.dart';
|
||||
@@ -982,6 +983,13 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
|
||||
|
||||
state = TransactionCommitted();
|
||||
|
||||
if (_currentTrade != null) {
|
||||
final provider = _currentTrade!.provider;
|
||||
if (provider == ExchangeProviderDescription.swapsXyz) {
|
||||
registerSwapsXyzTransaction(_currentTrade!);
|
||||
}
|
||||
}
|
||||
|
||||
await _updateSolanaTrade(signature: pendingTransaction!.id, isSuccess: true);
|
||||
|
||||
if (walletType == WalletType.solana) {
|
||||
@@ -1559,6 +1567,54 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
|
||||
return false;
|
||||
}
|
||||
|
||||
Future<void> registerSwapsXyzTransaction(Trade trade) async {
|
||||
try {
|
||||
|
||||
// register only for vmId is alt-vm or bridgeId is alt-vm (trade.needToRegisterInSwapXyz)
|
||||
final needToRegister = trade.needToRegisterInSwapXyz ?? false;
|
||||
if (!needToRegister) return;
|
||||
|
||||
final vmId = (trade.providerId ?? '').toLowerCase();
|
||||
if (vmId.isEmpty) {
|
||||
printV('SwapsXyz: transaction register: skipped (vmId empty)');
|
||||
return;
|
||||
}
|
||||
|
||||
final txHash = pendingTransaction?.evmTxHashFromRawHex
|
||||
?? pendingTransaction?.id
|
||||
?? '';
|
||||
|
||||
if (txHash.isEmpty) {
|
||||
printV('SwapsXyz: transaction register: skipped (txHash empty)');
|
||||
return;
|
||||
}
|
||||
|
||||
final chainId = int.tryParse(trade.router ?? '') ?? 0;
|
||||
if (chainId <= 0) {
|
||||
printV('SwapsXyz: transaction register: skipped (invalid chainId)');
|
||||
return;
|
||||
}
|
||||
|
||||
printV(
|
||||
'SwapsXyz: attempting to register transaction: tradeId = ${trade.id}, txHash = $txHash, chainId = $chainId, vmId = $vmId');
|
||||
|
||||
final registered = await SwapsXyzExchangeProvider.registerAltVmTx(
|
||||
txId: trade.id,
|
||||
txHash: txHash,
|
||||
chainId: chainId,
|
||||
vmId: vmId,
|
||||
);
|
||||
|
||||
if (!registered) {
|
||||
printV('SwapsXyz: transaction register: failed');
|
||||
} else {
|
||||
printV('SwapsXyz: transaction register: success');
|
||||
}
|
||||
} catch (e) {
|
||||
printV('registerSwapsXyzTransaction error: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@computed
|
||||
bool get usePayjoin => _settingsStore.usePayjoin;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user