From e25aeeaa5a8abfcade779b20e89d91fad51bee37 Mon Sep 17 00:00:00 2001 From: Nikolas Rimikis Date: Mon, 12 Jun 2023 22:38:47 +0200 Subject: [PATCH] neon: AccountSettingsPage get bloc via context --- .../neon/lib/src/pages/account_settings.dart | 187 +++++++++--------- packages/neon/neon/lib/src/router.dart | 1 - 2 files changed, 94 insertions(+), 94 deletions(-) diff --git a/packages/neon/neon/lib/src/pages/account_settings.dart b/packages/neon/neon/lib/src/pages/account_settings.dart index ea91a5ef..6d583d4f 100644 --- a/packages/neon/neon/lib/src/pages/account_settings.dart +++ b/packages/neon/neon/lib/src/pages/account_settings.dart @@ -1,114 +1,115 @@ part of '../../neon.dart'; class AccountSettingsPage extends StatelessWidget { - AccountSettingsPage({ - required this.bloc, + const AccountSettingsPage({ required this.account, super.key, }); - final AccountsBloc bloc; final Account account; - late final _options = bloc.getOptionsFor(account); - late final _userDetailsBloc = bloc.getUserDetailsBlocFor(account); - late final _name = account.client.humanReadableID; - @override - Widget build(final BuildContext context) => Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: Text(_name), - actions: [ - IconButton( - onPressed: () async { + Widget build(final BuildContext context) { + final accountsBloc = Provider.of(context, listen: false); + final options = accountsBloc.getOptionsFor(account); + final userDetailsBloc = accountsBloc.getUserDetailsBlocFor(account); + final name = account.client.humanReadableID; + + return Scaffold( + resizeToAvoidBottomInset: false, + appBar: AppBar( + title: Text(name), + actions: [ + IconButton( + onPressed: () async { + // ignore: use_build_context_synchronously + if (await showConfirmationDialog( + context, // ignore: use_build_context_synchronously - if (await showConfirmationDialog( - context, - // ignore: use_build_context_synchronously - AppLocalizations.of(context).accountOptionsRemoveConfirm(account.client.humanReadableID), - )) { - final isActive = bloc.activeAccount.value == account; + AppLocalizations.of(context).accountOptionsRemoveConfirm(account.client.humanReadableID), + )) { + final isActive = accountsBloc.activeAccount.value == account; - bloc.removeAccount(account); + accountsBloc.removeAccount(account); - if (isActive) { - // ignore: use_build_context_synchronously - const HomeRoute().go(context); - } else { - // ignore: use_build_context_synchronously - Navigator.of(context).pop(); - } - } - }, - tooltip: AppLocalizations.of(context).accountOptionsRemove, - icon: const Icon(MdiIcons.delete), - ), - IconButton( - onPressed: () async { - // ignore: use_build_context_synchronously - if (await showConfirmationDialog( - context, + if (isActive) { // ignore: use_build_context_synchronously - AppLocalizations.of(context).settingsResetForConfirmation(_name), - )) { - await _options.reset(); + const HomeRoute().go(context); + } else { + // ignore: use_build_context_synchronously + Navigator.of(context).pop(); } - }, - tooltip: AppLocalizations.of(context).settingsResetFor(_name), - icon: const Icon(MdiIcons.cogRefresh), - ), - ], - ), - body: ResultBuilder( - stream: _userDetailsBloc.userDetails, - builder: (final context, final userDetails) => SettingsList( - categories: [ - SettingsCategory( - title: Text(AppLocalizations.of(context).accountOptionsCategoryStorageInfo), - tiles: [ - CustomSettingsTile( - title: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (userDetails.data != null) ...[ - LinearProgressIndicator( - value: userDetails.data!.quota.relative / 100, - backgroundColor: Theme.of(context).colorScheme.primary.withOpacity(0.3), - ), - const SizedBox( - height: 10, - ), - Text( - AppLocalizations.of(context).accountOptionsQuotaUsedOf( - filesize(userDetails.data!.quota.used, 1), - filesize(userDetails.data!.quota.total, 1), - userDetails.data!.quota.relative.toString(), - ), - ), - ], - NeonException( - userDetails.error, - onRetry: _userDetailsBloc.refresh, + } + }, + tooltip: AppLocalizations.of(context).accountOptionsRemove, + icon: const Icon(MdiIcons.delete), + ), + IconButton( + onPressed: () async { + // ignore: use_build_context_synchronously + if (await showConfirmationDialog( + context, + // ignore: use_build_context_synchronously + AppLocalizations.of(context).settingsResetForConfirmation(name), + )) { + await options.reset(); + } + }, + tooltip: AppLocalizations.of(context).settingsResetFor(name), + icon: const Icon(MdiIcons.cogRefresh), + ), + ], + ), + body: ResultBuilder( + stream: userDetailsBloc.userDetails, + builder: (final context, final userDetails) => SettingsList( + categories: [ + SettingsCategory( + title: Text(AppLocalizations.of(context).accountOptionsCategoryStorageInfo), + tiles: [ + CustomSettingsTile( + title: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (userDetails.data != null) ...[ + LinearProgressIndicator( + value: userDetails.data!.quota.relative / 100, + backgroundColor: Theme.of(context).colorScheme.primary.withOpacity(0.3), + ), + const SizedBox( + height: 10, ), - NeonLinearProgressIndicator( - visible: userDetails.loading, + Text( + AppLocalizations.of(context).accountOptionsQuotaUsedOf( + filesize(userDetails.data!.quota.used, 1), + filesize(userDetails.data!.quota.total, 1), + userDetails.data!.quota.relative.toString(), + ), ), ], - ), + NeonException( + userDetails.error, + onRetry: userDetailsBloc.refresh, + ), + NeonLinearProgressIndicator( + visible: userDetails.loading, + ), + ], ), - ], - ), - SettingsCategory( - title: Text(AppLocalizations.of(context).optionsCategoryGeneral), - tiles: [ - DropdownButtonSettingsTile( - option: _options.initialApp, - ), - ], - ), - ], - ), + ), + ], + ), + SettingsCategory( + title: Text(AppLocalizations.of(context).optionsCategoryGeneral), + tiles: [ + DropdownButtonSettingsTile( + option: options.initialApp, + ), + ], + ), + ], ), - ); + ), + ); + } } diff --git a/packages/neon/neon/lib/src/router.dart b/packages/neon/neon/lib/src/router.dart index a3ca0b3d..d71c1c18 100644 --- a/packages/neon/neon/lib/src/router.dart +++ b/packages/neon/neon/lib/src/router.dart @@ -44,7 +44,6 @@ class AccountSettingsRoute extends GoRouteData { final account = bloc.accounts.value.find(accountid)!; return AccountSettingsPage( - bloc: bloc, account: account, ); }