refactor(ui): Move server settings to a separate screen

pull/477/head
Inex Code 2024-03-05 18:10:15 +03:00
parent 50ba929519
commit ff2b6b8f03
7 changed files with 67 additions and 13 deletions

View File

@ -123,6 +123,7 @@
"description": "All your services live here",
"general_information": "General information",
"resource_usage": "Resource usage",
"settings": "Server settings",
"allow_autoupgrade": "Allow auto-upgrade",
"allow_autoupgrade_hint": "Allow automatic packages upgrades on server",
"reboot_after_upgrade": "Reboot after upgrade",

View File

@ -1,16 +1,13 @@
import 'package:auto_route/auto_route.dart';
import 'package:cubit_form/cubit_form.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:selfprivacy/logic/bloc/volumes/volumes_bloc.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
import 'package:selfprivacy/logic/cubit/metrics/metrics_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/models/job.dart';
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
import 'package:selfprivacy/ui/components/brand_loader/brand_loader.dart';
import 'package:selfprivacy/ui/components/buttons/segmented_buttons.dart';
import 'package:selfprivacy/ui/components/cards/filled_card.dart';
import 'package:selfprivacy/ui/components/list_tiles/list_tile_on_surface_variant.dart';
@ -18,15 +15,10 @@ import 'package:selfprivacy/ui/layouts/brand_hero_screen.dart';
import 'package:selfprivacy/ui/pages/server_details/charts/cpu_chart.dart';
import 'package:selfprivacy/ui/pages/server_details/charts/network_charts.dart';
import 'package:selfprivacy/ui/pages/server_storage/storage_card.dart';
import 'package:selfprivacy/utils/breakpoints.dart';
import 'package:selfprivacy/utils/extensions/duration.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:timezone/timezone.dart';
import 'package:selfprivacy/ui/router/router.dart';
part 'charts/chart.dart';
part 'server_settings.dart';
part 'text_details.dart';
part 'time_zone/time_zone.dart';
var navigatorKey = GlobalKey<NavigatorState>();
@ -83,7 +75,11 @@ class _ServerDetailsScreenState extends State<ServerDetailsScreen>
diskStatus: context.watch<VolumesBloc>().state.diskStatus,
),
const SizedBox(height: 16),
const _ServerSettings(),
ListTile(
title: Text('server.settings'.tr()),
leading: const Icon(BrandIcons.settings),
onTap: () => context.pushRoute(const ServerSettingsRoute()),
),
const Divider(height: 32),
Text(
'server.resource_usage'.tr(),

View File

@ -1,4 +1,4 @@
part of 'server_details_screen.dart';
part of 'server_settings_screen.dart';
class _ServerSettings extends StatefulWidget {
const _ServerSettings();

View File

@ -0,0 +1,35 @@
import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart';
import 'package:selfprivacy/logic/models/job.dart';
import 'package:selfprivacy/ui/components/brand_loader/brand_loader.dart';
import 'package:selfprivacy/ui/layouts/brand_hero_screen.dart';
import 'package:selfprivacy/utils/breakpoints.dart';
import 'package:selfprivacy/utils/extensions/duration.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:timezone/timezone.dart';
part 'server_settings.dart';
part 'time_zone/time_zone.dart';
@RoutePage()
class ServerSettingsScreen extends StatefulWidget {
const ServerSettingsScreen({super.key});
@override
State<ServerSettingsScreen> createState() => _ServerSettingsScreenState();
}
class _ServerSettingsScreenState extends State<ServerSettingsScreen> {
@override
Widget build(final BuildContext context) => BrandHeroScreen(
hasFlashButton: true,
heroIcon: Icons.settings_outlined,
heroTitle: 'server.settings'.tr(),
children: const [
_ServerSettings(),
],
);
}

View File

@ -1,4 +1,4 @@
part of '../server_details_screen.dart';
part of '../server_settings_screen.dart';
final List<Location> locations = timeZoneDatabase.locations.values.toList()
..sort(

View File

@ -17,6 +17,7 @@ import 'package:selfprivacy/ui/pages/providers/providers.dart';
import 'package:selfprivacy/ui/pages/recovery_key/recovery_key.dart';
import 'package:selfprivacy/ui/pages/root_route.dart';
import 'package:selfprivacy/ui/pages/server_details/server_details_screen.dart';
import 'package:selfprivacy/ui/pages/server_details/server_settings_screen.dart';
import 'package:selfprivacy/ui/pages/server_storage/binds_migration/services_migration.dart';
import 'package:selfprivacy/ui/pages/server_storage/extending_volume.dart';
import 'package:selfprivacy/ui/pages/server_storage/server_storage.dart';
@ -100,6 +101,7 @@ class RootRouter extends _$RootRouter {
AutoRoute(page: BackupsListRoute.page),
AutoRoute(page: ServerStorageRoute.page),
AutoRoute(page: ExtendingVolumeRoute.page),
AutoRoute(page: ServerSettingsRoute.page),
],
),
AutoRoute(page: ServicesMigrationRoute.page),

View File

@ -132,6 +132,12 @@ abstract class _$RootRouter extends RootStackRouter {
child: const ServerDetailsScreen(),
);
},
ServerSettingsRoute.name: (routeData) {
return AutoRoutePage<dynamic>(
routeData: routeData,
child: const ServerSettingsScreen(),
);
},
ServerStorageRoute.name: (routeData) {
final args = routeData.argsAs<ServerStorageRouteArgs>();
return AutoRoutePage<dynamic>(
@ -494,6 +500,20 @@ class ServerDetailsRoute extends PageRouteInfo<void> {
static const PageInfo<void> page = PageInfo<void>(name);
}
/// generated route for
/// [ServerSettingsScreen]
class ServerSettingsRoute extends PageRouteInfo<void> {
const ServerSettingsRoute({List<PageRouteInfo>? children})
: super(
ServerSettingsRoute.name,
initialChildren: children,
);
static const String name = 'ServerSettingsRoute';
static const PageInfo<void> page = PageInfo<void>(name);
}
/// generated route for
/// [ServerStoragePage]
class ServerStorageRoute extends PageRouteInfo<ServerStorageRouteArgs> {