part of 'server_settings_screen.dart'; class _ServerSettings extends StatefulWidget { const _ServerSettings(); @override State<_ServerSettings> createState() => _ServerSettingsState(); } class _ServerSettingsState extends State<_ServerSettings> { bool? allowAutoUpgrade; bool? rebootAfterUpgrade; bool? enableSsh; bool? allowPasswordAuthentication; @override Widget build(final BuildContext context) { final serverDetailsState = context.watch().state; if (serverDetailsState is ServerDetailsNotReady) { return Text('basis.loading'.tr()); } else if (serverDetailsState is! Loaded) { return BrandLoader.horizontal(); } if (allowAutoUpgrade == null || rebootAfterUpgrade == null) { allowAutoUpgrade = serverDetailsState.autoUpgradeSettings.enable; rebootAfterUpgrade = serverDetailsState.autoUpgradeSettings.allowReboot; } if (enableSsh == null || allowPasswordAuthentication == null) { enableSsh = serverDetailsState.sshSettings.enable; allowPasswordAuthentication = serverDetailsState.sshSettings.passwordAuthentication; } return Column( children: [ SwitchListTile.adaptive( value: allowAutoUpgrade ?? false, onChanged: (final switched) { context.read().addJob( ChangeAutoUpgradeSettingsJob( allowReboot: rebootAfterUpgrade ?? false, enable: switched, ), ); setState(() { allowAutoUpgrade = switched; }); }, title: Text( 'server.allow_autoupgrade'.tr(), style: TextStyle( fontStyle: allowAutoUpgrade != serverDetailsState.autoUpgradeSettings.enable ? FontStyle.italic : FontStyle.normal, ), ), subtitle: Text( 'server.allow_autoupgrade_hint'.tr(), style: TextStyle( fontStyle: allowAutoUpgrade != serverDetailsState.autoUpgradeSettings.enable ? FontStyle.italic : FontStyle.normal, ), ), activeColor: Theme.of(context).colorScheme.primary, ), SwitchListTile.adaptive( value: rebootAfterUpgrade ?? false, onChanged: (final switched) { context.read().addJob( ChangeAutoUpgradeSettingsJob( allowReboot: switched, enable: allowAutoUpgrade ?? false, ), ); setState(() { rebootAfterUpgrade = switched; }); }, title: Text( 'server.reboot_after_upgrade'.tr(), style: TextStyle( fontStyle: rebootAfterUpgrade != serverDetailsState.autoUpgradeSettings.allowReboot ? FontStyle.italic : FontStyle.normal, ), ), subtitle: Text( 'server.reboot_after_upgrade_hint'.tr(), style: TextStyle( fontStyle: rebootAfterUpgrade != serverDetailsState.autoUpgradeSettings.allowReboot ? FontStyle.italic : FontStyle.normal, ), ), activeColor: Theme.of(context).colorScheme.primary, ), ListTile( title: Text('server.server_timezone'.tr()), subtitle: Text( serverDetailsState.serverTimezone.toString(), ), onTap: () { Navigator.of(context).push( materialRoute( const SelectTimezone(), ), ); }, ), SwitchListTile.adaptive( value: enableSsh ?? true, onChanged: (final switched) { context.read().addJob( ChangeSshSettingsJob( enable: switched, passwordAuthentication: allowPasswordAuthentication ?? false, ), ); setState(() { enableSsh = switched; }); }, title: Text( 'server.enable_ssh'.tr(), style: TextStyle( fontStyle: enableSsh != serverDetailsState.sshSettings.enable ? FontStyle.italic : FontStyle.normal, ), ), subtitle: Text( 'server.enable_ssh_hint'.tr(), style: TextStyle( fontStyle: enableSsh != serverDetailsState.sshSettings.enable ? FontStyle.italic : FontStyle.normal, ), ), activeColor: Theme.of(context).colorScheme.primary, ), SwitchListTile.adaptive( value: allowPasswordAuthentication ?? false, onChanged: (final switched) { context.read().addJob( ChangeSshSettingsJob( enable: enableSsh ?? true, passwordAuthentication: switched, ), ); setState(() { allowPasswordAuthentication = switched; }); }, title: Text( 'server.allow_password_authentication'.tr(), style: TextStyle( fontStyle: allowPasswordAuthentication != serverDetailsState.sshSettings.passwordAuthentication ? FontStyle.italic : FontStyle.normal, ), ), subtitle: Text( 'server.allow_password_authentication_hint'.tr(), style: TextStyle( fontStyle: allowPasswordAuthentication != serverDetailsState.sshSettings.passwordAuthentication ? FontStyle.italic : FontStyle.normal, ), ), activeColor: Theme.of(context).colorScheme.primary, ), ], ); } }