cake_wallet/lib/entities/contact_record.dart

50 lines
1.2 KiB
Dart
Raw Permalink Normal View History

2020-09-26 19:17:31 +00:00
import 'package:hive/hive.dart';
import 'package:mobx/mobx.dart';
import 'package:cake_wallet/entities/contact.dart';
2021-12-24 12:37:24 +00:00
import 'package:cw_core/crypto_currency.dart';
2020-09-26 19:17:31 +00:00
import 'package:cake_wallet/entities/record.dart';
import 'package:cake_wallet/entities/contact_base.dart';
2020-09-26 19:17:31 +00:00
part 'contact_record.g.dart';
class ContactRecord = ContactRecordBase with _$ContactRecord;
abstract class ContactRecordBase extends Record<Contact>
with Store
implements ContactBase {
2020-09-26 19:17:31 +00:00
ContactRecordBase(Box<Contact> source, Contact original)
2022-10-12 17:09:57 +00:00
: name = original.name,
address = original.address,
type = original.type,
super(source, original);
2020-09-26 19:17:31 +00:00
@override
2020-09-26 19:17:31 +00:00
@observable
String name;
@override
2020-09-26 19:17:31 +00:00
@observable
String address;
@override
2020-09-26 19:17:31 +00:00
@observable
CryptoCurrency type;
@override
void toBind(Contact original) {
reaction((_) => name, (String name) => original.name = name);
reaction((_) => address, (String address) => original.address = address);
reaction(
(_) => type,
(CryptoCurrency currency) =>
original.updateCryptoCurrency(currency: currency));
}
@override
void fromBind(Contact original) {
name = original.name;
address = original.address;
type = original.type;
}
}