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
81 lines
2.1 KiB
Dart
81 lines
2.1 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
import 'package:hive_ce/hive.dart';
|
|
import '../utils/id_generator.dart';
|
|
|
|
part 'app_settings.g.dart';
|
|
|
|
@HiveType(typeId: 1005)
|
|
class AppSettings extends Equatable {
|
|
@HiveField(0)
|
|
final String id;
|
|
|
|
/// Код языка интерфейса (например, 'ru', 'en')
|
|
@HiveField(1)
|
|
final String languageCode;
|
|
|
|
/// Режим темной темы
|
|
@HiveField(2)
|
|
final bool isDarkMode;
|
|
|
|
/// Валюта по умолчанию
|
|
@HiveField(3)
|
|
final String defaultCurrency;
|
|
|
|
/// Дата последнего обновления настроек
|
|
@HiveField(4)
|
|
final DateTime updatedAt;
|
|
|
|
AppSettings({
|
|
String? id,
|
|
this.languageCode = 'ru',
|
|
this.isDarkMode = false,
|
|
this.defaultCurrency = 'RUB',
|
|
DateTime? updatedAt,
|
|
}) : id = id ?? IdGenerator.generateId(),
|
|
updatedAt = updatedAt ?? DateTime.now();
|
|
|
|
/// Преобразование в Map для сохранения
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'languageCode': languageCode,
|
|
'isDarkMode': isDarkMode,
|
|
'defaultCurrency': defaultCurrency,
|
|
'updatedAt': updatedAt.toIso8601String(),
|
|
};
|
|
}
|
|
|
|
/// Создание из Map
|
|
factory AppSettings.fromMap(Map<String, dynamic> map) {
|
|
return AppSettings(
|
|
languageCode: map['languageCode'] ?? 'ru',
|
|
isDarkMode: map['isDarkMode'] ?? false,
|
|
defaultCurrency: map['defaultCurrency'] ?? 'RUB',
|
|
updatedAt: DateTime.parse(map['updatedAt']),
|
|
);
|
|
}
|
|
|
|
/// Создание копии с обновленными значениями
|
|
AppSettings copyWith({
|
|
String? userId,
|
|
String? languageCode,
|
|
bool? isDarkMode,
|
|
String? defaultCurrency,
|
|
}) {
|
|
return AppSettings(
|
|
languageCode: languageCode ?? this.languageCode,
|
|
isDarkMode: isDarkMode ?? this.isDarkMode,
|
|
defaultCurrency: defaultCurrency ?? this.defaultCurrency,
|
|
updatedAt: DateTime.now(),
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object> get props => [id];
|
|
|
|
@override
|
|
String toString() {
|
|
return 'AppSettings(languageCode: $languageCode, '
|
|
'isDarkMode: $isDarkMode, defaultCurrency: $defaultCurrency)';
|
|
}
|
|
}
|