mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-18 05:51:34 +02:00
* chore: update `ledger_flutter_plus` dependency to new repository URL and commit hash in `pubspec_base.yaml` * feat: add support for Ledger Nano Gen 5 hardware wallet and include new SVG asset * chore: update `ledger_flutter_plus` dependency reference and remove redundant method call in `LedgerViewModel`
94 lines
2.5 KiB
Dart
94 lines
2.5 KiB
Dart
import 'package:bitbox_flutter/usb/bitbox_device.dart' as bitbox;
|
|
import 'package:ledger_flutter_plus/ledger_flutter_plus.dart' as ledger;
|
|
|
|
abstract class HardwareWalletDevice {
|
|
String get name;
|
|
|
|
HardwareWalletDeviceType get type;
|
|
|
|
HardwareWalletConnectionType get connectionType;
|
|
}
|
|
|
|
class LedgerHardwareWalletDevice extends HardwareWalletDevice {
|
|
final ledger.LedgerDevice device;
|
|
|
|
LedgerHardwareWalletDevice(this.device);
|
|
|
|
@override
|
|
String get name => device.name;
|
|
|
|
@override
|
|
HardwareWalletDeviceType get type => device.deviceInfo.toGeneric();
|
|
|
|
@override
|
|
HardwareWalletConnectionType get connectionType => device.connectionType.toGeneric();
|
|
}
|
|
|
|
class BitboxHardwareWalletDevice extends HardwareWalletDevice {
|
|
final bitbox.BitboxDevice device;
|
|
|
|
BitboxHardwareWalletDevice(this.device);
|
|
|
|
@override
|
|
String get name => device.productName;
|
|
|
|
@override
|
|
HardwareWalletDeviceType get type => name.contains("BitBox02 Nova")
|
|
? HardwareWalletDeviceType.BitBox02Nova
|
|
: HardwareWalletDeviceType.BitBox02;
|
|
|
|
@override
|
|
HardwareWalletConnectionType get connectionType => HardwareWalletConnectionType.usb;
|
|
}
|
|
|
|
enum HardwareWalletDeviceType {
|
|
ledgerBlue,
|
|
ledgerNanoS,
|
|
ledgerNanoX,
|
|
ledgerNanoSPlus,
|
|
ledgerNanoGen5,
|
|
ledgerStax,
|
|
ledgerFlex,
|
|
BitBox02,
|
|
BitBox02Nova;
|
|
}
|
|
|
|
enum HardwareWalletConnectionType {
|
|
usb,
|
|
ble,
|
|
nfc,
|
|
qr;
|
|
}
|
|
|
|
extension ToGenericHardwareWalletDeviceType on ledger.LedgerDeviceType {
|
|
HardwareWalletDeviceType toGeneric() {
|
|
switch (this) {
|
|
case ledger.LedgerDeviceType.blue:
|
|
return HardwareWalletDeviceType.ledgerBlue;
|
|
case ledger.LedgerDeviceType.nanoS:
|
|
return HardwareWalletDeviceType.ledgerNanoS;
|
|
case ledger.LedgerDeviceType.nanoSP:
|
|
return HardwareWalletDeviceType.ledgerNanoSPlus;
|
|
case ledger.LedgerDeviceType.nanoX:
|
|
return HardwareWalletDeviceType.ledgerNanoX;
|
|
case ledger.LedgerDeviceType.nanoGen5:
|
|
return HardwareWalletDeviceType.ledgerNanoGen5;
|
|
case ledger.LedgerDeviceType.stax:
|
|
return HardwareWalletDeviceType.ledgerStax;
|
|
case ledger.LedgerDeviceType.flex:
|
|
return HardwareWalletDeviceType.ledgerFlex;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ToGenericHardwareWalletConnectionType on ledger.ConnectionType {
|
|
HardwareWalletConnectionType toGeneric() {
|
|
switch (this) {
|
|
case ledger.ConnectionType.usb:
|
|
return HardwareWalletConnectionType.usb;
|
|
case ledger.ConnectionType.ble:
|
|
return HardwareWalletConnectionType.ble;
|
|
}
|
|
}
|
|
}
|