cake_wallet/cw_core/lib/wallet_info.dart

129 lines
3.2 KiB
Dart
Raw Normal View History

import 'dart:async';
import 'package:cw_core/hive_type_ids.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:hive/hive.dart';
part 'wallet_info.g.dart';
2023-08-15 16:10:55 +00:00
@HiveType(typeId: DERIVATION_TYPE_TYPE_ID)
2023-08-15 16:01:23 +00:00
enum DerivationType {
@HiveField(0)
unknown,
@HiveField(1)
def,// default is a reserved word
@HiveField(2)
nano,
@HiveField(3)
bip39,
2023-08-18 14:17:35 +00:00
@HiveField(4)
StandardBIP44Legacy
2023-08-15 16:01:23 +00:00
}
2023-08-23 12:38:07 +00:00
class DerivationInfo {
DerivationInfo(this.balance, this.address, this.height, this.derivationType, this.derivationPath);
final String balance;
final String address;
final int height;
final DerivationType derivationType;
final String? derivationPath;
}
@HiveType(typeId: WalletInfo.typeId)
class WalletInfo extends HiveObject {
WalletInfo(this.id, this.name, this.type, this.isRecovery, this.restoreHeight,
this.timestamp, this.dirPath, this.path, this.address, this.yatEid,
2023-08-23 12:38:07 +00:00
this.yatLastUsedAddressRaw, this.showIntroCakePayCard, this.derivationType, this.derivationPath)
: _yatLastUsedAddressController = StreamController<String>.broadcast();
factory WalletInfo.external(
2022-10-12 17:09:57 +00:00
{required String id,
required String name,
required WalletType type,
required bool isRecovery,
required int restoreHeight,
required DateTime date,
required String dirPath,
required String path,
required String address,
bool? showIntroCakePayCard,
2023-08-15 16:01:23 +00:00
String yatEid = '',
String yatLastUsedAddressRaw = '',
2023-08-23 12:38:07 +00:00
DerivationType? derivationType,
String? derivationPath,}) {
return WalletInfo(id, name, type, isRecovery, restoreHeight,
2022-10-12 17:09:57 +00:00
date.millisecondsSinceEpoch, dirPath, path, address,
2023-08-23 12:38:07 +00:00
yatEid, yatLastUsedAddressRaw, showIntroCakePayCard, derivationType, derivationPath);
}
static const typeId = WALLET_INFO_TYPE_ID;
static const boxName = 'WalletInfo';
@HiveField(0, defaultValue: '')
String id;
@HiveField(1, defaultValue: '')
String name;
@HiveField(2)
WalletType type;
@HiveField(3, defaultValue: false)
bool isRecovery;
@HiveField(4, defaultValue: 0)
int restoreHeight;
@HiveField(5, defaultValue: 0)
int timestamp;
@HiveField(6, defaultValue: '')
String dirPath;
@HiveField(7, defaultValue: '')
String path;
@HiveField(8, defaultValue: '')
String address;
@HiveField(10)
2022-10-12 17:09:57 +00:00
Map<String, String>? addresses;
@HiveField(11)
String? yatEid;
@HiveField(12)
String? yatLastUsedAddressRaw;
@HiveField(13)
2022-10-12 17:09:57 +00:00
bool? showIntroCakePayCard;
2023-08-15 16:01:23 +00:00
@HiveField(14)
DerivationType? derivationType;
2023-08-23 12:38:07 +00:00
@HiveField(15)
String? derivationPath;
String get yatLastUsedAddress => yatLastUsedAddressRaw ?? '';
set yatLastUsedAddress(String address) {
yatLastUsedAddressRaw = address;
_yatLastUsedAddressController.add(address);
}
String get yatEmojiId => yatEid ?? '';
bool get isShowIntroCakePayCard {
if(showIntroCakePayCard == null) {
return type != WalletType.haven;
}
2022-10-12 17:09:57 +00:00
return showIntroCakePayCard!;
}
DateTime get date => DateTime.fromMillisecondsSinceEpoch(timestamp);
Stream<String> get yatLastUsedAddressStream => _yatLastUsedAddressController.stream;
StreamController<String> _yatLastUsedAddressController;
}