Files
BudgetApp/lib/logic/settings/settings_cubit.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

76 lines
2.2 KiB
Dart

import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';
import '../../data/repositories/interfaces/isettings_repository.dart';
import '../../models/app_settings.dart';
part 'settings_state.dart';
class SettingsCubit extends Cubit<SettingsState> {
final ISettingsRepository _settingsRepository;
SettingsCubit(this._settingsRepository) : super(SettingsInitial());
Future<void> loadSettings() async {
emit(SettingsLoading());
try {
final settings = await _settingsRepository.getSettings();
emit(SettingsLoaded(
isDarkMode: settings.isDarkMode,
languageCode: settings.languageCode,
defaultCurrency: settings.defaultCurrency,
));
} catch (e) {
emit(SettingsError(e.toString()));
}
}
Future<void> toggleDarkMode(bool value) async {
if (state is SettingsLoaded) {
try {
final currentState = state as SettingsLoaded;
final newState = currentState.copyWith(isDarkMode: value);
emit(newState);
await _saveSettings(newState);
} catch (e) {
emit(SettingsError(e.toString()));
}
}
}
Future<void> changeLanguage(String languageCode) async {
if (state is SettingsLoaded) {
try {
final currentState = state as SettingsLoaded;
final newState = currentState.copyWith(languageCode: languageCode);
emit(newState);
await _saveSettings(newState);
} catch (e) {
emit(SettingsError(e.toString()));
}
}
}
Future<void> changeCurrency(String currency) async {
if (state is SettingsLoaded) {
try {
final currentState = state as SettingsLoaded;
final newState = currentState.copyWith(defaultCurrency: currency);
emit(newState);
await _saveSettings(newState);
} catch (e) {
emit(SettingsError(e.toString()));
}
}
}
Future<void> _saveSettings(SettingsLoaded settings) async {
final appSettings = AppSettings(
isDarkMode: settings.isDarkMode,
languageCode: settings.languageCode,
defaultCurrency: settings.defaultCurrency,
);
await _settingsRepository.saveSettings(appSettings);
}
}