Files
BudgetApp/lib/data/repositories/hive_sms_handler_repository.dart
T
Sanders 8b75299d41 Refactors data repositories for single-user mode
This commit refactors the data repositories to remove user-specific filtering. It simplifies the data access logic by retrieving all data from the Hive boxes and removing the need to filter by `userId` in the repository methods.

This change makes the app function in single-user mode and removes the need to manage multiple user contexts within the data layer.

Specifically:
- Removes `userId` parameter from repository methods.
- Updates the setting repository to use fixed keys.
- Removes user ID filtering from queries.
- Removes user ID parameters from Cubits and Blocs
- Updates initial data creation
2025-07-12 21:54:00 +03:00

57 lines
2.3 KiB
Dart

import 'package:hive_ce/hive.dart';
import '../../models/sms_handler_settings.dart';
import 'interfaces/isms_handler_repository.dart';
/// Реализация репозитория для настроек обработки СМС с использованием Hive.
class HiveSmsHandlerRepository implements ISmsHandlerRepository {
final Box<SmsHandlerSettings> _smsHandlerBox;
HiveSmsHandlerRepository(this._smsHandlerBox);
@override
Future<SmsHandlerSettings?> getSmsHandlerSettings() async {
// В Hive мы будем использовать ID пользователя как ключ для его настроек.
return _smsHandlerBox.getAt(1);
}
@override
Future<void> saveSmsHandlerSettings(SmsHandlerSettings settings) async {
// Сохраняем объект настроек по ключу, равному ID пользователя.
await _smsHandlerBox.put(settings.id, settings);
}
@override
Future<void> saveRuleForSender(String sender, SmsProcessingRule rule) async {
// 1. Получаем текущие настройки.
SmsHandlerSettings? settings = await getSmsHandlerSettings();
if (settings == null) {
// 2. Если настроек нет, создаем новый объект.
settings = SmsHandlerSettings(
rulesBySender: {sender: rule}, // Создаем карту с первым правилом
);
} else {
// 3. Если настройки есть, обновляем или добавляем правило.
settings.rulesBySender[sender] = rule;
}
// 4. Сохраняем обновленный объект настроек.
await saveSmsHandlerSettings(settings);
}
@override
Future<void> deleteRuleForSender(String sender) async {
// 1. Получаем текущие настройки.
final settings = await getSmsHandlerSettings();
if (settings != null) {
// 2. Если настройки существуют, удаляем правило для отправителя.
settings.rulesBySender.remove(sender);
// 3. Сохраняем измененный объект.
await saveSmsHandlerSettings(settings);
}
// Если настроек нет, ничего не делаем.
}
}