From ff2b6b8f036d35465ec87bb17348407476378489 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Tue, 5 Mar 2024 18:10:15 +0300 Subject: [PATCH] refactor(ui): Move server settings to a separate screen --- assets/translations/en.json | 1 + .../server_details/server_details_screen.dart | 18 ++++------ .../pages/server_details/server_settings.dart | 2 +- .../server_settings_screen.dart | 35 +++++++++++++++++++ .../server_details/time_zone/time_zone.dart | 2 +- lib/ui/router/router.dart | 2 ++ lib/ui/router/router.gr.dart | 20 +++++++++++ 7 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 lib/ui/pages/server_details/server_settings_screen.dart diff --git a/assets/translations/en.json b/assets/translations/en.json index 2e75f9cd..2c0c50a7 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -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", diff --git a/lib/ui/pages/server_details/server_details_screen.dart b/lib/ui/pages/server_details/server_details_screen.dart index ab1f64d3..6a57e318 100644 --- a/lib/ui/pages/server_details/server_details_screen.dart +++ b/lib/ui/pages/server_details/server_details_screen.dart @@ -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(); @@ -83,7 +75,11 @@ class _ServerDetailsScreenState extends State diskStatus: context.watch().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(), diff --git a/lib/ui/pages/server_details/server_settings.dart b/lib/ui/pages/server_details/server_settings.dart index c6381a3e..df343ca1 100644 --- a/lib/ui/pages/server_details/server_settings.dart +++ b/lib/ui/pages/server_details/server_settings.dart @@ -1,4 +1,4 @@ -part of 'server_details_screen.dart'; +part of 'server_settings_screen.dart'; class _ServerSettings extends StatefulWidget { const _ServerSettings(); diff --git a/lib/ui/pages/server_details/server_settings_screen.dart b/lib/ui/pages/server_details/server_settings_screen.dart new file mode 100644 index 00000000..ea98e100 --- /dev/null +++ b/lib/ui/pages/server_details/server_settings_screen.dart @@ -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 createState() => _ServerSettingsScreenState(); +} + +class _ServerSettingsScreenState extends State { + @override + Widget build(final BuildContext context) => BrandHeroScreen( + hasFlashButton: true, + heroIcon: Icons.settings_outlined, + heroTitle: 'server.settings'.tr(), + children: const [ + _ServerSettings(), + ], + ); +} diff --git a/lib/ui/pages/server_details/time_zone/time_zone.dart b/lib/ui/pages/server_details/time_zone/time_zone.dart index 2bb2608f..d574d5e4 100644 --- a/lib/ui/pages/server_details/time_zone/time_zone.dart +++ b/lib/ui/pages/server_details/time_zone/time_zone.dart @@ -1,4 +1,4 @@ -part of '../server_details_screen.dart'; +part of '../server_settings_screen.dart'; final List locations = timeZoneDatabase.locations.values.toList() ..sort( diff --git a/lib/ui/router/router.dart b/lib/ui/router/router.dart index 48eb2d5a..89c43618 100644 --- a/lib/ui/router/router.dart +++ b/lib/ui/router/router.dart @@ -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), diff --git a/lib/ui/router/router.gr.dart b/lib/ui/router/router.gr.dart index 98f4453a..2428f7df 100644 --- a/lib/ui/router/router.gr.dart +++ b/lib/ui/router/router.gr.dart @@ -132,6 +132,12 @@ abstract class _$RootRouter extends RootStackRouter { child: const ServerDetailsScreen(), ); }, + ServerSettingsRoute.name: (routeData) { + return AutoRoutePage( + routeData: routeData, + child: const ServerSettingsScreen(), + ); + }, ServerStorageRoute.name: (routeData) { final args = routeData.argsAs(); return AutoRoutePage( @@ -494,6 +500,20 @@ class ServerDetailsRoute extends PageRouteInfo { static const PageInfo page = PageInfo(name); } +/// generated route for +/// [ServerSettingsScreen] +class ServerSettingsRoute extends PageRouteInfo { + const ServerSettingsRoute({List? children}) + : super( + ServerSettingsRoute.name, + initialChildren: children, + ); + + static const String name = 'ServerSettingsRoute'; + + static const PageInfo page = PageInfo(name); +} + /// generated route for /// [ServerStoragePage] class ServerStorageRoute extends PageRouteInfo {