Implements the ability to load and process SMS messages to automatically create transaction records. This includes: - Adding an `SmsMessage` model and Hive adapter. - Creating an `ISmsMessageRepository` and its Hive implementation. - Integrating SMS loading functionality into the `SmsCubit`. - Adding a UI element in settings to trigger SMS loading. - Persisting last SMS sync time in user preferences.
51 lines
1.2 KiB
Dart
51 lines
1.2 KiB
Dart
import 'package:hive_ce/hive.dart';
|
|
import '/data/repositories/interfaces/isms_message_repository.dart';
|
|
import '/models/sms_message.dart';
|
|
|
|
/// Hive-реализация репозитория для работы с SMS сообщениями
|
|
class HiveSmsMessageRepository implements ISmsMessageRepository {
|
|
final Box<SmsMessage> _box;
|
|
|
|
HiveSmsMessageRepository(this._box);
|
|
|
|
@override
|
|
Future<List<SmsMessage>> getAll() async {
|
|
return _box.values.toList();
|
|
}
|
|
|
|
@override
|
|
Future<SmsMessage?> getById(String id) async {
|
|
return _box.get(id);
|
|
}
|
|
|
|
@override
|
|
Future<void> add(SmsMessage message) async {
|
|
await _box.put(message.id, message);
|
|
}
|
|
|
|
@override
|
|
Future<void> update(SmsMessage message) async {
|
|
await add(message);
|
|
}
|
|
|
|
@override
|
|
Future<void> delete(String id) async {
|
|
await _box.delete(id);
|
|
}
|
|
|
|
@override
|
|
Future<void> addAll(List<SmsMessage> messages) async {
|
|
final Map<String, SmsMessage> messageMap = {
|
|
for (var msg in messages) msg.id: msg
|
|
};
|
|
await _box.putAll(messageMap);
|
|
}
|
|
|
|
@override
|
|
Future<List<SmsMessage>> getByTransactionId(String transactionId) async {
|
|
return _box.values
|
|
.where((msg) => msg.transactionId == transactionId)
|
|
.toList();
|
|
}
|
|
}
|