mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-10 14:07:59 -06:00
feat: Add more user related state to hive
This commit is contained in:
@@ -14,13 +14,13 @@ class BiometricAuthenticationSetting extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return UserSettingsBuilder(
|
||||
builder: (context, settings) {
|
||||
if (settings == null) {
|
||||
return UserAccountBuilder(
|
||||
builder: (context, account) {
|
||||
if (account == null) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return SwitchListTile(
|
||||
value: settings.isBiometricAuthenticationEnabled,
|
||||
value: account.settings.isBiometricAuthenticationEnabled,
|
||||
title: Text(S.of(context)!.biometricAuthentication),
|
||||
subtitle: Text(S.of(context)!.authenticateOnAppStart),
|
||||
onChanged: (val) async {
|
||||
@@ -33,8 +33,8 @@ class BiometricAuthenticationSetting extends StatelessWidget {
|
||||
.read<LocalAuthenticationService>()
|
||||
.authenticateLocalUser(localizedReason);
|
||||
if (isAuthenticated) {
|
||||
settings.isBiometricAuthenticationEnabled = val;
|
||||
settings.save();
|
||||
account.settings.isBiometricAuthenticationEnabled = val;
|
||||
account.save();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,30 +1,33 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hive_flutter/adapters.dart';
|
||||
import 'package:paperless_mobile/core/config/hive/hive_config.dart';
|
||||
import 'package:paperless_mobile/features/login/model/user_account.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/global_settings.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/user_settings.dart';
|
||||
|
||||
class UserSettingsBuilder extends StatelessWidget {
|
||||
class UserAccountBuilder extends StatelessWidget {
|
||||
final Widget Function(
|
||||
BuildContext context,
|
||||
UserSettings? settings,
|
||||
UserAccount? settings,
|
||||
) builder;
|
||||
|
||||
const UserSettingsBuilder({
|
||||
const UserAccountBuilder({
|
||||
super.key,
|
||||
required this.builder,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<Box<UserSettings>>(
|
||||
valueListenable: Hive.box<UserSettings>(HiveBoxes.userSettings).listenable(),
|
||||
builder: (context, value, _) {
|
||||
final currentUser =
|
||||
Hive.box<GlobalSettings>(HiveBoxes.globalSettings).getValue()!.currentLoggedInUser;
|
||||
return ValueListenableBuilder<Box<UserAccount>>(
|
||||
valueListenable:
|
||||
Hive.box<UserAccount>(HiveBoxes.userAccount).listenable(),
|
||||
builder: (context, accountBox, _) {
|
||||
final currentUser = Hive.box<GlobalSettings>(HiveBoxes.globalSettings)
|
||||
.getValue()!
|
||||
.currentLoggedInUser;
|
||||
if (currentUser != null) {
|
||||
final settings = value.get(currentUser);
|
||||
return builder(context, settings);
|
||||
final account = accountBox.get(currentUser);
|
||||
return builder(context, account);
|
||||
} else {
|
||||
return builder(context, null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user