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
76 lines
2.2 KiB
Dart
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);
|
|
}
|
|
} |