import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:paperless_mobile/core/store/local_vault.dart'; import 'package:paperless_mobile/features/settings/model/application_settings_state.dart'; import 'package:injectable/injectable.dart'; import 'package:paperless_mobile/features/settings/model/view_type.dart'; @singleton class ApplicationSettingsCubit extends Cubit { final LocalVault localVault; ApplicationSettingsCubit(this.localVault) : super(ApplicationSettingsState.defaultSettings); Future initialize() async { final settings = (await localVault.loadApplicationSettings()) ?? ApplicationSettingsState.defaultSettings; emit(settings); } Future setLocale(String? localeSubtag) async { final updatedSettings = state.copyWith(preferredLocaleSubtag: localeSubtag); _updateSettings(updatedSettings); } Future setIsBiometricAuthenticationEnabled(bool isEnabled) async { final updatedSettings = state.copyWith(isLocalAuthenticationEnabled: isEnabled); _updateSettings(updatedSettings); } Future setThemeMode(ThemeMode? selectedMode) async { final updatedSettings = state.copyWith(preferredThemeMode: selectedMode); _updateSettings(updatedSettings); } Future setViewType(ViewType viewType) async { final updatedSettings = state.copyWith(preferredViewType: viewType); _updateSettings(updatedSettings); } Future _updateSettings(ApplicationSettingsState settings) async { await localVault.storeApplicationSettings(settings); emit(settings); } }