Add storage usage to service screen, formatting

Inex Code 2022-09-16 16:36:51 +03:00
parent 6f6df30767
commit ae0295d959
7 changed files with 33 additions and 12 deletions

View File

@ -210,10 +210,12 @@
"_comment": "Services", "_comment": "Services",
"title": "Your personal, private and independent services.", "title": "Your personal, private and independent services.",
"service_page": { "service_page": {
"open_in_browser": "Open in browser",
"restart": "Restart service", "restart": "Restart service",
"disable": "Disable service", "disable": "Disable service",
"enable": "Enable service", "enable": "Enable service",
"move": "Move to another volume" "move": "Move to another volume",
"uses": "Uses {usage} on {volume}"
}, },
"mail": { "mail": {
"title": "E-Mail", "title": "E-Mail",

View File

@ -209,10 +209,12 @@
"_comment": "Вкладка сервисы", "_comment": "Вкладка сервисы",
"title": "Ваши личные, приватные и независимые сервисы:", "title": "Ваши личные, приватные и независимые сервисы:",
"service_page": { "service_page": {
"open_in_browser": "Открыть в браузере",
"restart": "Перезапустить сервис", "restart": "Перезапустить сервис",
"disable": "Выключить сервис", "disable": "Выключить сервис",
"enable": "Включить сервис", "enable": "Включить сервис",
"move": "Переместить на другой диск" "move": "Переместить на другой диск",
"uses": "Использует {usage} на {volume}"
}, },
"mail": { "mail": {
"title": "Почта", "title": "Почта",

View File

@ -31,7 +31,8 @@ class BlocAndProviderConfig extends StatelessWidget {
final recoveryKeyCubit = RecoveryKeyCubit(serverInstallationCubit); final recoveryKeyCubit = RecoveryKeyCubit(serverInstallationCubit);
final apiDevicesCubit = ApiDevicesCubit(serverInstallationCubit); final apiDevicesCubit = ApiDevicesCubit(serverInstallationCubit);
final apiVolumesCubit = ApiProviderVolumeCubit(serverInstallationCubit); final apiVolumesCubit = ApiProviderVolumeCubit(serverInstallationCubit);
final apiServerVolumesCubit = ApiServerVolumeCubit(serverInstallationCubit, apiVolumesCubit); final apiServerVolumesCubit =
ApiServerVolumeCubit(serverInstallationCubit, apiVolumesCubit);
final serverJobsCubit = ServerJobsCubit(serverInstallationCubit); final serverJobsCubit = ServerJobsCubit(serverInstallationCubit);
final serverDetailsCubit = ServerDetailsCubit(serverInstallationCubit); final serverDetailsCubit = ServerDetailsCubit(serverInstallationCubit);

View File

@ -12,7 +12,8 @@ part 'server_volume_state.dart';
class ApiServerVolumeCubit class ApiServerVolumeCubit
extends ServerInstallationDependendCubit<ApiServerVolumeState> { extends ServerInstallationDependendCubit<ApiServerVolumeState> {
ApiServerVolumeCubit( ApiServerVolumeCubit(
final ServerInstallationCubit serverInstallationCubit, this.providerVolumeCubit, final ServerInstallationCubit serverInstallationCubit,
this.providerVolumeCubit,
) : super(serverInstallationCubit, ApiServerVolumeState.initial()) { ) : super(serverInstallationCubit, ApiServerVolumeState.initial()) {
_providerVolumeSubscription = _providerVolumeSubscription =
providerVolumeCubit.stream.listen(checkProviderVolumes); providerVolumeCubit.stream.listen(checkProviderVolumes);

View File

@ -5,7 +5,7 @@ class ApiServerVolumeState extends ServerInstallationDependendState {
this._volumes, this._volumes,
this.status, this.status,
this.usesBinds, this.usesBinds,
this._diskStatus, this._diskStatus,
); );
ApiServerVolumeState.initial() ApiServerVolumeState.initial()
@ -19,7 +19,9 @@ class ApiServerVolumeState extends ServerInstallationDependendState {
List<DiskVolume> get volumes => _diskStatus.diskVolumes; List<DiskVolume> get volumes => _diskStatus.diskVolumes;
DiskStatus get diskStatus => _diskStatus; DiskStatus get diskStatus => _diskStatus;
DiskVolume getVolume(final String volumeName) => volumes.firstWhere((final volume) => volume.name == volumeName, orElse: () => DiskVolume()); DiskVolume getVolume(final String volumeName) =>
volumes.firstWhere((final volume) => volume.name == volumeName,
orElse: () => DiskVolume());
ApiServerVolumeState copyWith({ ApiServerVolumeState copyWith({
final List<ServerDiskVolume>? volumes, final List<ServerDiskVolume>? volumes,

View File

@ -51,7 +51,10 @@ class MorePage extends StatelessWidget {
title: 'providers.storage.start_migration_button'.tr(), title: 'providers.storage.start_migration_button'.tr(),
iconData: Icons.drive_file_move_outline, iconData: Icons.drive_file_move_outline,
goTo: DataMigrationPage( goTo: DataMigrationPage(
diskStatus: context.watch<ApiServerVolumeCubit>().state.diskStatus, diskStatus: context
.watch<ApiServerVolumeCubit>()
.state
.diskStatus,
services: context services: context
.read<ServicesCubit>() .read<ServicesCubit>()
.state .state

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.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/client_jobs/client_jobs_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_volumes/server_volume_cubit.dart';
import 'package:selfprivacy/logic/cubit/services/services_cubit.dart'; import 'package:selfprivacy/logic/cubit/services/services_cubit.dart';
import 'package:selfprivacy/logic/models/job.dart'; import 'package:selfprivacy/logic/models/job.dart';
import 'package:selfprivacy/logic/models/service.dart'; import 'package:selfprivacy/logic/models/service.dart';
@ -68,7 +69,7 @@ class _ServicePageState extends State<ServicePage> {
onTap: () => _launchURL(service.url), onTap: () => _launchURL(service.url),
leading: const Icon(Icons.open_in_browser), leading: const Icon(Icons.open_in_browser),
title: Text( title: Text(
'Open in browser', 'services.service_page.open_in_browser'.tr(),
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
subtitle: Text( subtitle: Text(
@ -117,10 +118,19 @@ class _ServicePageState extends State<ServicePage> {
'services.service_page.move'.tr(), 'services.service_page.move'.tr(),
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
// subtitle: Text( subtitle: Text(
// 'Uses ${service.storageUsage.used} on ${context.read<ApiServerVolumeCubit>().state.totalStorage}', 'services.service_page.uses'.tr(
// style: Theme.of(context).textTheme.bodyMedium, namedArgs: {
// ), 'usage': service.storageUsage.used.toString(),
'volume': context
.read<ApiServerVolumeCubit>()
.state
.getVolume(service.storageUsage.volume ?? '')
.displayName
},
),
style: Theme.of(context).textTheme.bodyMedium,
),
), ),
], ],
); );