|
|
|
@ -1,24 +1,24 @@
|
|
|
|
|
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( |
|
|
|
|
Widget build(final BuildContext context) { |
|
|
|
|
final accountsBloc = Provider.of<AccountsBloc>(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), |
|
|
|
|
title: Text(name), |
|
|
|
|
actions: [ |
|
|
|
|
IconButton( |
|
|
|
|
onPressed: () async { |
|
|
|
@ -28,9 +28,9 @@ class AccountSettingsPage extends StatelessWidget {
|
|
|
|
|
// ignore: use_build_context_synchronously |
|
|
|
|
AppLocalizations.of(context).accountOptionsRemoveConfirm(account.client.humanReadableID), |
|
|
|
|
)) { |
|
|
|
|
final isActive = bloc.activeAccount.value == account; |
|
|
|
|
final isActive = accountsBloc.activeAccount.value == account; |
|
|
|
|
|
|
|
|
|
bloc.removeAccount(account); |
|
|
|
|
accountsBloc.removeAccount(account); |
|
|
|
|
|
|
|
|
|
if (isActive) { |
|
|
|
|
// ignore: use_build_context_synchronously |
|
|
|
@ -50,18 +50,18 @@ class AccountSettingsPage extends StatelessWidget {
|
|
|
|
|
if (await showConfirmationDialog( |
|
|
|
|
context, |
|
|
|
|
// ignore: use_build_context_synchronously |
|
|
|
|
AppLocalizations.of(context).settingsResetForConfirmation(_name), |
|
|
|
|
AppLocalizations.of(context).settingsResetForConfirmation(name), |
|
|
|
|
)) { |
|
|
|
|
await _options.reset(); |
|
|
|
|
await options.reset(); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
tooltip: AppLocalizations.of(context).settingsResetFor(_name), |
|
|
|
|
tooltip: AppLocalizations.of(context).settingsResetFor(name), |
|
|
|
|
icon: const Icon(MdiIcons.cogRefresh), |
|
|
|
|
), |
|
|
|
|
], |
|
|
|
|
), |
|
|
|
|
body: ResultBuilder<NextcloudProvisioningApiUserDetails>( |
|
|
|
|
stream: _userDetailsBloc.userDetails, |
|
|
|
|
stream: userDetailsBloc.userDetails, |
|
|
|
|
builder: (final context, final userDetails) => SettingsList( |
|
|
|
|
categories: [ |
|
|
|
|
SettingsCategory( |
|
|
|
@ -89,7 +89,7 @@ class AccountSettingsPage extends StatelessWidget {
|
|
|
|
|
], |
|
|
|
|
NeonException( |
|
|
|
|
userDetails.error, |
|
|
|
|
onRetry: _userDetailsBloc.refresh, |
|
|
|
|
onRetry: userDetailsBloc.refresh, |
|
|
|
|
), |
|
|
|
|
NeonLinearProgressIndicator( |
|
|
|
|
visible: userDetails.loading, |
|
|
|
@ -103,7 +103,7 @@ class AccountSettingsPage extends StatelessWidget {
|
|
|
|
|
title: Text(AppLocalizations.of(context).optionsCategoryGeneral), |
|
|
|
|
tiles: [ |
|
|
|
|
DropdownButtonSettingsTile( |
|
|
|
|
option: _options.initialApp, |
|
|
|
|
option: options.initialApp, |
|
|
|
|
), |
|
|
|
|
], |
|
|
|
|
), |
|
|
|
@ -112,3 +112,4 @@ class AccountSettingsPage extends StatelessWidget {
|
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|