Files
BudgetApp/lib/models/app_settings.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

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