From e3d7f2b3d7b14dceb3242c4a0982e73198e83876 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Fri, 16 Sep 2022 11:06:27 +0300 Subject: [PATCH] Fix ServerDetailsCubit exception --- lib/config/bloc_config.dart | 4 +++ .../server_detailed_info_cubit.dart | 34 ++++++++++++++++--- .../server_detailed_info_state.dart | 2 +- .../server_details/server_details_screen.dart | 2 +- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/lib/config/bloc_config.dart b/lib/config/bloc_config.dart index fd00db2b..1e9d5c12 100644 --- a/lib/config/bloc_config.dart +++ b/lib/config/bloc_config.dart @@ -32,6 +32,7 @@ class BlocAndProviderConfig extends StatelessWidget { final apiVolumesCubit = ApiProviderVolumeCubit(serverInstallationCubit); final apiServerVolumesCubit = ApiServerVolumeCubit(serverInstallationCubit); final serverJobsCubit = ServerJobsCubit(serverInstallationCubit); + final serverDetailsCubit = ServerDetailsCubit(serverInstallationCubit); return MultiProvider( providers: [ @@ -78,6 +79,9 @@ class BlocAndProviderConfig extends StatelessWidget { BlocProvider( create: (final _) => serverJobsCubit..load(), ), + BlocProvider( + create: (final _) => serverDetailsCubit..load(), + ), BlocProvider( create: (final _) => JobsCubit( usersCubit: usersCubit, diff --git a/lib/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart b/lib/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart index 5f75497b..537524c7 100644 --- a/lib/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart +++ b/lib/logic/cubit/server_detailed_info/server_detailed_info_cubit.dart @@ -1,6 +1,5 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:equatable/equatable.dart'; import 'package:selfprivacy/config/get_it_config.dart'; +import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_detailed_info/server_detailed_info_repository.dart'; import 'package:selfprivacy/logic/models/auto_upgrade_settings.dart'; import 'package:selfprivacy/logic/models/json/hetzner_server_info.dart'; @@ -8,8 +7,10 @@ import 'package:selfprivacy/logic/models/timezone_settings.dart'; part 'server_detailed_info_state.dart'; -class ServerDetailsCubit extends Cubit { - ServerDetailsCubit() : super(ServerDetailsInitial()); +class ServerDetailsCubit + extends ServerInstallationDependendCubit { + ServerDetailsCubit(final ServerInstallationCubit serverInstallationCubit) + : super(serverInstallationCubit, ServerDetailsInitial()); ServerDetailsRepository repository = ServerDetailsRepository(); @@ -34,4 +35,29 @@ class ServerDetailsCubit extends Cubit { print('Tried to emit server info state when cubit is closed'); } } + + Future setTimezone( + final String timezone, + ) async { + final ServerDetailsRepositoryDto data = await repository.load(); + await repository.setTimezone(timezone); + emit( + Loaded( + serverInfo: data.hetznerServerInfo, + autoUpgradeSettings: data.autoUpgradeSettings, + serverTimezone: TimeZoneSettings.fromString(timezone), + checkTime: DateTime.now(), + ), + ); + } + + @override + void clear() { + emit(ServerDetailsNotReady()); + } + + @override + void load() async { + check(); + } } diff --git a/lib/logic/cubit/server_detailed_info/server_detailed_info_state.dart b/lib/logic/cubit/server_detailed_info/server_detailed_info_state.dart index ef226c1e..ea5f4864 100644 --- a/lib/logic/cubit/server_detailed_info/server_detailed_info_state.dart +++ b/lib/logic/cubit/server_detailed_info/server_detailed_info_state.dart @@ -1,6 +1,6 @@ part of 'server_detailed_info_cubit.dart'; -abstract class ServerDetailsState extends Equatable { +abstract class ServerDetailsState extends ServerInstallationDependendState { const ServerDetailsState(); @override diff --git a/lib/ui/pages/server_details/server_details_screen.dart b/lib/ui/pages/server_details/server_details_screen.dart index 0457c80f..16f87be8 100644 --- a/lib/ui/pages/server_details/server_details_screen.dart +++ b/lib/ui/pages/server_details/server_details_screen.dart @@ -76,7 +76,7 @@ class _ServerDetailsScreenState extends State } return BlocProvider( - create: (final context) => ServerDetailsCubit()..check(), + create: (final context) => context.read()..check(), child: BrandHeroScreen( heroIcon: BrandIcons.server, heroTitle: 'providers.server.card_title'.tr(),