feat: Add more user related state to hive

This commit is contained in:
Anton Stubenbord
2023-04-23 16:48:11 +02:00
parent 1b9e4fbb81
commit 5c0ef7f853
32 changed files with 408 additions and 272 deletions

View File

@@ -54,7 +54,8 @@ import 'package:receive_sharing_intent/receive_sharing_intent.dart';
String get defaultPreferredLocaleSubtag {
String preferredLocale = Platform.localeName.split("_").first;
if (!S.supportedLocales.any((locale) => locale.languageCode == preferredLocale)) {
if (!S.supportedLocales
.any((locale) => locale.languageCode == preferredLocale)) {
preferredLocale = 'en';
}
return preferredLocale;
@@ -63,16 +64,18 @@ String get defaultPreferredLocaleSubtag {
Future<void> _initHive() async {
await Hive.initFlutter();
//TODO: REMOVE!
// await getApplicationDocumentsDirectory().then((value) => value.delete(recursive: true));
// await getApplicationDocumentsDirectory()
// .then((value) => value.delete(recursive: true));
registerHiveAdapters();
await Hive.openBox<UserAccount>(HiveBoxes.userAccount);
await Hive.openBox<UserSettings>(HiveBoxes.userSettings);
final globalSettingsBox = await Hive.openBox<GlobalSettings>(HiveBoxes.globalSettings);
final globalSettingsBox =
await Hive.openBox<GlobalSettings>(HiveBoxes.globalSettings);
if (!globalSettingsBox.hasValue) {
await globalSettingsBox
.setValue(GlobalSettings(preferredLocaleSubtag: defaultPreferredLocaleSubtag));
await globalSettingsBox.setValue(
GlobalSettings(preferredLocaleSubtag: defaultPreferredLocaleSubtag),
);
}
}
@@ -152,7 +155,8 @@ void main() async {
//Update language header in interceptor on language change.
globalSettingsBox.listenable().addListener(() {
languageHeaderInterceptor.preferredLocaleSubtag = globalSettings.preferredLocaleSubtag;
languageHeaderInterceptor.preferredLocaleSubtag =
globalSettings.preferredLocaleSubtag;
});
runApp(
@@ -176,7 +180,8 @@ void main() async {
Provider<ConnectivityStatusService>.value(
value: connectivityStatusService,
),
Provider<LocalNotificationService>.value(value: localNotificationService),
Provider<LocalNotificationService>.value(
value: localNotificationService),
Provider.value(value: DocumentChangedNotifier()),
],
child: MultiRepositoryProvider(
@@ -206,7 +211,8 @@ class PaperlessMobileEntrypoint extends StatefulWidget {
}) : super(key: key);
@override
State<PaperlessMobileEntrypoint> createState() => _PaperlessMobileEntrypointState();
State<PaperlessMobileEntrypoint> createState() =>
_PaperlessMobileEntrypointState();
}
class _PaperlessMobileEntrypointState extends State<PaperlessMobileEntrypoint> {
@@ -241,7 +247,8 @@ class _PaperlessMobileEntrypointState extends State<PaperlessMobileEntrypoint> {
GlobalWidgetsLocalizations.delegate,
],
routes: {
DocumentDetailsRoute.routeName: (context) => const DocumentDetailsRoute(),
DocumentDetailsRoute.routeName: (context) =>
const DocumentDetailsRoute(),
},
home: const AuthenticationWrapper(),
);
@@ -276,9 +283,11 @@ class _AuthenticationWrapperState extends State<AuthenticationWrapper> {
}
initializeDateFormatting();
// For sharing files coming from outside the app while the app is still opened
ReceiveSharingIntent.getMediaStream().listen(ShareIntentQueue.instance.addAll);
ReceiveSharingIntent.getMediaStream()
.listen(ShareIntentQueue.instance.addAll);
// For sharing files coming from outside the app while the app is closed
ReceiveSharingIntent.getInitialMedia().then(ShareIntentQueue.instance.addAll);
ReceiveSharingIntent.getInitialMedia()
.then(ShareIntentQueue.instance.addAll);
}
Future<void> _setOptimalDisplayMode() async {
@@ -290,7 +299,8 @@ class _AuthenticationWrapperState extends State<AuthenticationWrapper> {
.toList()
..sort((a, b) => b.refreshRate.compareTo(a.refreshRate));
final DisplayMode mostOptimalMode = sameResolution.isNotEmpty ? sameResolution.first : active;
final DisplayMode mostOptimalMode =
sameResolution.isNotEmpty ? sameResolution.first : active;
debugPrint('Setting refresh rate to ${mostOptimalMode.refreshRate}');
await FlutterDisplayMode.setPreferredMode(mostOptimalMode);
@@ -341,12 +351,14 @@ class _AuthenticationWrapperState extends State<AuthenticationWrapper> {
) async {
try {
await context.read<AuthenticationCubit>().login(
credentials: LoginFormCredentials(username: username, password: password),
credentials:
LoginFormCredentials(username: username, password: password),
serverUrl: serverUrl,
clientCertificate: clientCertificate,
);
// Show onboarding after first login!
final globalSettings = GlobalSettings.boxedValue;
final globalSettings =
Hive.box<GlobalSettings>(HiveBoxes.globalSettings).getValue()!;
if (globalSettings.showOnboarding) {
Navigator.push(
context,