diff --git a/app/lib/controller/pref_controller.dart b/app/lib/controller/pref_controller.dart index 585e4fca..38be434c 100644 --- a/app/lib/controller/pref_controller.dart +++ b/app/lib/controller/pref_controller.dart @@ -27,9 +27,10 @@ part 'pref_controller/util.dart'; class PrefController { PrefController(this.pref); - Future setAccounts(List value) => _set>( + Future setAccounts(List? value) => _setOrRemove>( controller: _accountsController, setter: (pref, value) => pref.setAccounts3(value), + remover: (pref) => pref.setAccounts3(null), value: value, ); diff --git a/app/lib/controller/pref_controller/util.dart b/app/lib/controller/pref_controller/util.dart index 3034abdc..a8ae21d0 100644 --- a/app/lib/controller/pref_controller/util.dart +++ b/app/lib/controller/pref_controller/util.dart @@ -1,6 +1,15 @@ part of '../pref_controller.dart'; extension on Pref { + Future setAccounts3(List? value) { + if (value == null) { + return provider.remove(PrefKey.accounts3); + } else { + final jsons = value.map((e) => jsonEncode(e.toJson())).toList(); + return provider.setStringList(PrefKey.accounts3, jsons); + } + } + int? getHomeAlbumsSort() => provider.getInt(PrefKey.homeAlbumsSort); int getHomeAlbumsSortOr(int def) => getHomeAlbumsSort() ?? def; Future setHomeAlbumsSort(int value) => diff --git a/app/lib/entity/pref.dart b/app/lib/entity/pref.dart index 43360785..57e8b603 100644 --- a/app/lib/entity/pref.dart +++ b/app/lib/entity/pref.dart @@ -29,8 +29,6 @@ class Pref { Future Function(PrefKey key, T value) setFn) => setFn(key, value); - Future _remove(PrefKey key) => provider.remove(key); - final PrefProvider provider; static Pref? _inst; diff --git a/app/lib/entity/pref/extension.dart b/app/lib/entity/pref/extension.dart index 043d81da..42ad9fe7 100644 --- a/app/lib/entity/pref/extension.dart +++ b/app/lib/entity/pref/extension.dart @@ -19,14 +19,6 @@ extension PrefExtension on Pref { } List getAccounts3Or(List def) => getAccounts3() ?? def; - Future setAccounts3(List? value) { - if (value == null) { - return _remove(PrefKey.accounts3); - } else { - final jsons = value.map((e) => jsonEncode(e.toJson())).toList(); - return provider.setStringList(PrefKey.accounts3, jsons); - } - } int? getHomePhotosZoomLevel() => provider.getInt(PrefKey.homePhotosZoomLevel); int getHomePhotosZoomLevelOr(int def) => getHomePhotosZoomLevel() ?? def; diff --git a/app/lib/widget/settings/account/bloc.dart b/app/lib/widget/settings/account/bloc.dart index f615da42..76370dc4 100644 --- a/app/lib/widget/settings/account/bloc.dart +++ b/app/lib/widget/settings/account/bloc.dart @@ -3,12 +3,11 @@ part of '../account_settings.dart'; @npLog class _Bloc extends Bloc<_Event, _State> with BlocLogger { _Bloc({ - required DiContainer container, required Account account, + required this.prefController, required this.accountPrefController, this.highlight, - }) : _c = container, - super(_State.init( + }) : super(_State.init( account: account, label: accountPrefController.accountLabelValue, shareFolder: accountPrefController.shareFolderValue, @@ -95,7 +94,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger { )); final revert = state.account; try { - final accounts = _c.pref.getAccounts3()!; + final accounts = prefController.accountsValue; if (accounts.contains(ev.account)) { // conflict with another account. This normally won't happen because // the app passwords are unique to each entry, but just in case @@ -109,7 +108,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger { } accounts[index] = ev.account; - if (!await _c.pref.setAccounts3(accounts)) { + if (!await prefController.setAccounts(accounts)) { _log.severe("[_onSetAccount] Failed while setAccounts3: ${ev.account}"); throw const _WritePrefError(); } @@ -153,7 +152,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger { emit(state.copyWith(error: ExceptionEvent(ev.error, ev.stackTrace))); } - final DiContainer _c; + final PrefController prefController; final AccountPrefController accountPrefController; final AccountSettingsOption? highlight; diff --git a/app/lib/widget/settings/account_settings.dart b/app/lib/widget/settings/account_settings.dart index 2e3c8d60..6e82b5ca 100644 --- a/app/lib/widget/settings/account_settings.dart +++ b/app/lib/widget/settings/account_settings.dart @@ -3,16 +3,14 @@ import 'dart:async'; import 'package:copy_with/copy_with.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:kiwi/kiwi.dart'; import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/bloc_util.dart'; import 'package:nc_photos/controller/account_controller.dart'; import 'package:nc_photos/controller/account_pref_controller.dart'; -import 'package:nc_photos/di_container.dart'; +import 'package:nc_photos/controller/pref_controller.dart'; import 'package:nc_photos/entity/person.dart'; -import 'package:nc_photos/entity/pref.dart'; import 'package:nc_photos/exception_event.dart'; import 'package:nc_photos/help_utils.dart' as help_util; import 'package:nc_photos/k.dart' as k; @@ -71,8 +69,8 @@ class AccountSettings extends StatelessWidget { final accountController = context.read(); return BlocProvider( create: (_) => _Bloc( - container: KiwiContainer().resolve(), account: accountController.account, + prefController: context.read(), accountPrefController: accountController.accountPrefController, highlight: highlight, ), diff --git a/app/lib/widget/settings/expert/bloc.dart b/app/lib/widget/settings/expert/bloc.dart index 36be69a2..c94e02ef 100644 --- a/app/lib/widget/settings/expert/bloc.dart +++ b/app/lib/widget/settings/expert/bloc.dart @@ -11,12 +11,10 @@ class _Error { @npLog class _Bloc extends Bloc<_Event, _State> with BlocLogger, BlocForEachMixin<_Event, _State> { - _Bloc( - DiContainer c, { + _Bloc({ required this.db, required this.prefController, - }) : _c = c, - super(_State.init( + }) : super(_State.init( isNewHttpEngine: prefController.isNewHttpEngineValue, )) { on<_Init>(_onInit); @@ -42,7 +40,7 @@ class _Bloc extends Bloc<_Event, _State> _ClearCacheDatabase ev, Emitter<_State> emit) async { _log.info(ev); try { - final accounts = _c.pref.getAccounts3Or([]); + final accounts = prefController.accountsValue; await db.clearAndInitWithAccounts(accounts.toDb()); emit(state.copyWith(lastSuccessful: ev)); } catch (e, stackTrace) { @@ -56,7 +54,6 @@ class _Bloc extends Bloc<_Event, _State> prefController.setNewHttpEngine(ev.value); } - final DiContainer _c; final NpDb db; final PrefController prefController; diff --git a/app/lib/widget/settings/expert_settings.dart b/app/lib/widget/settings/expert_settings.dart index 025d36e3..29255f12 100644 --- a/app/lib/widget/settings/expert_settings.dart +++ b/app/lib/widget/settings/expert_settings.dart @@ -3,14 +3,11 @@ import 'dart:async'; import 'package:copy_with/copy_with.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:kiwi/kiwi.dart'; import 'package:logging/logging.dart'; import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/bloc_util.dart'; import 'package:nc_photos/controller/pref_controller.dart'; import 'package:nc_photos/db/entity_converter.dart'; -import 'package:nc_photos/di_container.dart'; -import 'package:nc_photos/entity/pref.dart'; import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/widget/trusted_cert_manager.dart'; import 'package:np_codegen/np_codegen.dart'; @@ -28,7 +25,6 @@ class ExpertSettings extends StatelessWidget { Widget build(BuildContext context) { return BlocProvider( create: (_) => _Bloc( - KiwiContainer().resolve(), db: context.read(), prefController: context.read(), )..add(const _Init()), diff --git a/app/lib/widget/splash.dart b/app/lib/widget/splash.dart index 6f6dd25f..0a698219 100644 --- a/app/lib/widget/splash.dart +++ b/app/lib/widget/splash.dart @@ -9,7 +9,6 @@ import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/bloc_util.dart'; import 'package:nc_photos/controller/pref_controller.dart'; import 'package:nc_photos/db/entity_converter.dart'; -import 'package:nc_photos/entity/pref.dart'; import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/mobile/android/activity.dart'; import 'package:nc_photos/mobile/android/permission_util.dart'; diff --git a/app/lib/widget/splash/bloc.dart b/app/lib/widget/splash/bloc.dart index d72fa1e8..071f69e9 100644 --- a/app/lib/widget/splash/bloc.dart +++ b/app/lib/widget/splash/bloc.dart @@ -116,7 +116,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger { await CompatV46.insertDbAccounts(prefController, npDb); } catch (e, stackTrace) { _log.shout("[_upgrade46] Failed while clearDefaultCache", e, stackTrace); - unawaited(Pref().setAccounts3(null)); + unawaited(prefController.setAccounts(null)); unawaited(prefController.setCurrentAccountIndex(null)); } }