| 1 | import 'package:cw_core/crypto_currency.dart'; |
| 2 | import 'package:cw_core/hive_type_ids.dart'; |
| 3 | import 'package:cw_core/keyable.dart'; |
| 4 | import 'package:hive/hive.dart'; |
| 5 | |
| 6 | part 'contact.part.dart'; |
| 7 | |
| 8 | // @HiveType(typeId: Contact.typeId) |
| 9 | class Contact extends HiveObject with Keyable { |
| 10 | Contact( |
| 11 | {required this.name, |
| 12 | required this.address, |
| 13 | CryptoCurrency? type, |
| 14 | DateTime? lastChange, |
| 15 | this.displayName = ""}) |
| 16 | : lastChange = lastChange ?? DateTime.now() { |
| 17 | if (type != null) { |
| 18 | raw = type.raw; |
| 19 | } |
| 20 | } |
| 21 | |
| 22 | static const typeId = CONTACT_TYPE_ID; |
| 23 | static const boxName = 'Contacts'; |
| 24 | |
| 25 | // @HiveField(0, defaultValue: '') |
| 26 | String name; |
| 27 | |
| 28 | // @HiveField(1, defaultValue: '') |
| 29 | String address; |
| 30 | |
| 31 | // @HiveField(2, defaultValue: 0) |
| 32 | late int raw; |
| 33 | |
| 34 | // @HiveField(3) |
| 35 | DateTime lastChange; |
| 36 | |
| 37 | // @HiveField(4, defaultValue: "") |
| 38 | String displayName; |
| 39 | |
| 40 | CryptoCurrency get type => CryptoCurrency.deserialize(raw: raw); |
| 41 | |
| 42 | @override |
| 43 | dynamic get keyIndex => key; |
| 44 | |
| 45 | @override |
| 46 | bool operator ==(Object o) => o is Contact && o.key == key; |
| 47 | |
| 48 | @override |
| 49 | int get hashCode => key.hashCode; |
| 50 | |
| 51 | void updateCryptoCurrency({required CryptoCurrency currency}) => raw = currency.raw; |
| 52 | } |