mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-03-14 02:34:07 +00:00
refactor(ui): Move server settings to a separate screen
This commit is contained in:
parent
50ba929519
commit
ff2b6b8f03
7 changed files with 67 additions and 13 deletions
|
@ -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",
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
part of 'server_details_screen.dart';
|
||||
part of 'server_settings_screen.dart';
|
||||
|
||||
class _ServerSettings extends StatefulWidget {
|
||||
const _ServerSettings();
|
||||
|
|
35
lib/ui/pages/server_details/server_settings_screen.dart
Normal file
35
lib/ui/pages/server_details/server_settings_screen.dart
Normal 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(),
|
||||
],
|
||||
);
|
||||
}
|
|
@ -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(
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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> {
|
||||
|
|
Loading…
Add table
Reference in a new issue