mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-27 06:18:50 +01:00
* refactor: migrate hardware wallet resources to `new-ui`, add Trezor model support, and streamline hardware wallet handling across services * refactor: migrate hardware wallet resources to `new-ui`, add Trezor model support, and streamline hardware wallet handling across services * fix: correctly check for Ledger hardware wallet type in `isHardwareWallet` logic * refactor: unify `isConnected` method for hardware wallets, add Trezor-specific support, and update Monero sync logic * refactor: add Trezor transaction signing support, streamline hardware wallet handling, and update Monero dependency * refactor: improve Trezor transaction handling, adjust hardware wallet state logic, and update Monero dependency references * fix: non-hww tx commit() in xmr fix: prod monero_c fix: keyImage import workaround for Trezor/Cupcake chore: add kotlin's .salive to .gitignore * fix: universal_ble builds on iOS chore: remove prints fix: proper CI prebuilt for linux * new trezor connection ui * fix page title * typo * fix page title anim * refactor: enhance Trezor pairing flow, update state management, and simplify UI logic in hardware wallet integration * fix: correct widget indentation in Trezor pairing failure state UI * fix: extract Trezor pairing failure state UI to `_errorBox` widget and update Trezor dependency reference * refactor: simplify hardware wallet pairing error UI, optimize `_errorBox` layout, and streamline widget logic * Update cw_monero/lib/pending_monero_transaction.dart Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com> * Update lib/buy/robinhood/robinhood_buy_provider.dart Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com> * feat: add USB intent filters, device filter for hardware wallets, and update Trezor dependency reference * Update cw_monero/pubspec.yaml [skip ci] * Update cw_wownero/pubspec.yaml [skip ci] * Update cw_zano/pubspec.yaml [skip ci] * fix: use CryptoCurrency.title instead of amount-refactor-only .symbol getter new_wallet_type_page used curr.symbol, which only exists on the amount-refactor branch (String get symbol => title). On dev the equivalent is curr.title. Adapts the Trezor feature to dev's API without pulling in amount-refactor. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fix wallet list screen not scrollable minor fixes --------- Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com> Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com> Co-authored-by: Konstantin Ullrich <konstantin@cakewallet.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
1.6 KiB
Dart
54 lines
1.6 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:cw_core/hardware/hardware_wallet_service.dart';
|
|
import 'package:trezor_flutter/trezor_flutter.dart';
|
|
|
|
class MoneroTrezorService extends HardwareWalletService {
|
|
final TrezorClient client;
|
|
|
|
MoneroTrezorService(this.client);
|
|
}
|
|
|
|
class MoneroTrezorWatchCredentials {
|
|
final String watchKey;
|
|
final String address;
|
|
|
|
const MoneroTrezorWatchCredentials(this.watchKey, this.address);
|
|
}
|
|
|
|
class Trezor {
|
|
final MoneroTrezorService service;
|
|
|
|
Trezor(this.service);
|
|
|
|
Future<MoneroTrezorWatchCredentials> getWatchCredentials() async {
|
|
final credentials = await TrezorMonero(service.client).getWatchCredentials();
|
|
|
|
return MoneroTrezorWatchCredentials(credentials.$1, credentials.$2);
|
|
}
|
|
|
|
Future<String> keyImageSync(String tdis) async {
|
|
final tdisMap = jsonDecode(tdis) as Map<String, dynamic>;
|
|
final tdisList = tdisMap["tdis"] as List<dynamic>;
|
|
|
|
final txIds = <MoneroKeyImageTxData>[];
|
|
for (final tdi in tdisList) {
|
|
txIds.add(MoneroKeyImageTxData(
|
|
outKey: tdi["out_key"],
|
|
txPubKey: tdi["tx_pub_key"],
|
|
internalOutputIndex: tdi["internal_output_index"],
|
|
subAddrMajor: tdi["sub_addr_major"],
|
|
subAddrMinor: tdi["sub_addr_minor"],
|
|
additionalTxPubKeys: (tdi["additional_tx_pub_keys"] as List?)?.map((e) => e as String).toList() ?? []
|
|
));
|
|
}
|
|
final keyImages = await TrezorMonero(service.client).syncKeyImages(txIds);
|
|
|
|
return jsonEncode(keyImages.toMap());
|
|
}
|
|
|
|
Future<String> signTransaction(String json) async {
|
|
return TrezorMonero(service.client).signTransaction(jsonDecode(json));
|
|
}
|
|
}
|