Files
BudgetApp/lib/data/repositories/hive_sms_message_repository.dart
T
Sanders a89ab1c910 Adds SMS message loading and processing
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.
2025-07-03 16:21:19 +03:00

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();
}
}