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
57 lines
2.3 KiB
Dart
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);
|
|
}
|
|
// Если настроек нет, ничего не делаем.
|
|
}
|
|
}
|