diff --git a/lib/logic/cubit/app_config/app_config_cubit.dart b/lib/logic/cubit/app_config/app_config_cubit.dart index 44533817..2d65ca45 100644 --- a/lib/logic/cubit/app_config/app_config_cubit.dart +++ b/lib/logic/cubit/app_config/app_config_cubit.dart @@ -63,6 +63,8 @@ class AppConfigCubit extends Cubit { oneMoreReset(state: state, isImmediate: true); } else if (state.progress == 9) { finishCheckIfServerIsOkay(state: state, isImmediate: true); + } else { + emit(state); } } else { throw 'wrong state'; diff --git a/lib/logic/cubit/app_config/app_config_repository.dart b/lib/logic/cubit/app_config/app_config_repository.dart index 312ae7d4..4a58d766 100644 --- a/lib/logic/cubit/app_config/app_config_repository.dart +++ b/lib/logic/cubit/app_config/app_config_repository.dart @@ -211,6 +211,7 @@ class AppConfigRepository { } Future saveHetznerKey(String key) async { + print('saved'); await getIt().storeHetznerKey(key); } @@ -254,6 +255,13 @@ class AppConfigRepository { domainName: cloudFlareDomain.domainName, ); + await box.put(BNames.hasFinalChecked, false); + await box.put(BNames.isServerStarted, false); + await box.put(BNames.isServerResetedFirstTime, false); + await box.put(BNames.isServerResetedSecondTime, false); + await box.put(BNames.isLoading, false); + await box.put(BNames.hetznerServer, null); + await cloudFlare.removeSimilarRecords(cloudFlareDomain: cloudFlareDomain); } diff --git a/lib/logic/cubit/app_config/app_config_state.dart b/lib/logic/cubit/app_config/app_config_state.dart index 1bcf5a04..a2892b05 100644 --- a/lib/logic/cubit/app_config/app_config_state.dart +++ b/lib/logic/cubit/app_config/app_config_state.dart @@ -42,7 +42,7 @@ abstract class AppConfigState extends Equatable { bool get isUserFilled => rootUser != null; bool get isServerCreated => hetznerServer != null; - // bool get isFullyInitilized => _fulfilementList.every((el) => el!); + bool get isFullyInitilized => _fulfilementList.every((el) => el!); int get progress => _fulfilementList.where((el) => el!).length; int get porgressBar { diff --git a/lib/logic/cubit/forms/user/user_form_cubit.dart b/lib/logic/cubit/forms/user/user_form_cubit.dart index dd4d2bcf..32a170e5 100644 --- a/lib/logic/cubit/forms/user/user_form_cubit.dart +++ b/lib/logic/cubit/forms/user/user_form_cubit.dart @@ -21,6 +21,8 @@ class UserFormCubit extends FormCubit { login = FieldCubit( initalValue: isEdit ? user!.login : '', validations: [ + ValidationModel( + (s) => s.toLowerCase() == 'root', 'validations.root_name'.tr()), ValidationModel( (login) => users.any((user) => user.login == login), 'validations.user_alredy_exist'.tr(), diff --git a/lib/logic/get_it/api_config.dart b/lib/logic/get_it/api_config.dart index 6c5636d1..53759e2e 100644 --- a/lib/logic/get_it/api_config.dart +++ b/lib/logic/get_it/api_config.dart @@ -55,6 +55,7 @@ class ApiConfigModel { void init() { _hetznerKey = _box.get(BNames.hetznerKey); + _cloudFlareKey = _box.get(BNames.cloudFlareKey); _backblazeCredential = _box.get(BNames.backblazeKey); _cloudFlareDomain = _box.get(BNames.cloudFlareDomain); diff --git a/lib/ui/pages/initializing/initializing.dart b/lib/ui/pages/initializing/initializing.dart index baee55af..4ab27eec 100644 --- a/lib/ui/pages/initializing/initializing.dart +++ b/lib/ui/pages/initializing/initializing.dart @@ -35,7 +35,6 @@ class InitializingPage extends StatelessWidget { () => _stepCheck(cubit), () => _stepCheck(cubit), () => _stepCheck(cubit), - () => _stepCheck(cubit), () => Container(child: Center(child: Text('initializing.finish'.tr()))) ][cubit.state.progress](); return BlocListener( @@ -48,21 +47,26 @@ class InitializingPage extends StatelessWidget { child: Scaffold( body: SingleChildScrollView( child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: paddingH15V0.copyWith(top: 10, bottom: 10), - child: ProgressBar( - steps: [ - 'Hetzner', - 'CloudFlare', - 'Backblaze', - 'Domain', - 'User', - 'Server', - '✅ Check', - ], - activeIndex: cubit.state.porgressBar, - ), + child: cubit.state.isFullyInitilized + ? SizedBox( + height: 80, + ) + : ProgressBar( + steps: [ + 'Hetzner', + 'CloudFlare', + 'Backblaze', + 'Domain', + 'User', + 'Server', + '✅ Check', + ], + activeIndex: cubit.state.porgressBar, + ), ), _addCard( AnimatedSwitcher( diff --git a/lib/ui/pages/server_details/chart.dart b/lib/ui/pages/server_details/chart.dart index a53f1e09..6ccd86fc 100644 --- a/lib/ui/pages/server_details/chart.dart +++ b/lib/ui/pages/server_details/chart.dart @@ -5,7 +5,6 @@ class _Chart extends StatelessWidget { @override Widget build(BuildContext context) { - var cubit = context.watch(); var period = cubit.state.period; var state = cubit.state; @@ -21,8 +20,8 @@ class _Chart extends StatelessWidget { } else if (state is HetznerMetricsLoaded) { charts = [ Legend(color: Colors.red, text: 'CPU %'), - getCpuChart(state), SizedBox(height: 20), + getCpuChart(state), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -33,8 +32,9 @@ class _Chart extends StatelessWidget { Legend(color: Colors.green, text: 'OUT'), ], ), - getPpsChart(state), SizedBox(height: 20), + getPpsChart(state), + SizedBox(height: 1), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -45,6 +45,7 @@ class _Chart extends StatelessWidget { Legend(color: Colors.green, text: 'OUT'), ], ), + SizedBox(height: 20), getBandwidthChart(state), ]; } else { diff --git a/lib/ui/pages/server_details/cpu_chart.dart b/lib/ui/pages/server_details/cpu_chart.dart index 96ee94ce..a42f38f3 100644 --- a/lib/ui/pages/server_details/cpu_chart.dart +++ b/lib/ui/pages/server_details/cpu_chart.dart @@ -47,6 +47,7 @@ class CpuChart extends StatelessWidget { maxY: 100, minX: data.length - 200, titlesData: FlTitlesData( + topTitles: SideTitles(showTitles: false), bottomTitles: SideTitles( interval: 20, rotateAngle: 90.0, diff --git a/lib/ui/pages/server_details/network_charts.dart b/lib/ui/pages/server_details/network_charts.dart index 44d1c0ba..60f54663 100644 --- a/lib/ui/pages/server_details/network_charts.dart +++ b/lib/ui/pages/server_details/network_charts.dart @@ -35,7 +35,7 @@ class NetworkChart extends StatelessWidget { Widget build(BuildContext context) { return SizedBox( height: 150, - width: MediaQuery.of(context).size.width * 0.90, + width: MediaQuery.of(context).size.width, child: LineChart( LineChartData( lineTouchData: LineTouchData(enabled: false), @@ -67,6 +67,7 @@ class NetworkChart extends StatelessWidget { 1.2, minX: listData[0].length - 200, titlesData: FlTitlesData( + topTitles: SideTitles(showTitles: false), bottomTitles: SideTitles( interval: 20, rotateAngle: 90.0, @@ -80,12 +81,13 @@ class NetworkChart extends StatelessWidget { return bottomTitle(value.toInt()); }), leftTitles: SideTitles( - margin: 15, + reservedSize: 50, + margin: 5, interval: [ ...listData[0].map((e) => e.value), ...listData[1].map((e) => e.value) ].reduce(max) * - 1.2 / + 2 / 10, getTextStyles: (_, __) => progressTextStyleLight.copyWith( color: Theme.of(context).brightness == Brightness.dark diff --git a/lib/ui/pages/server_details/server_details.dart b/lib/ui/pages/server_details/server_details.dart index 6e3a895f..06d6d376 100644 --- a/lib/ui/pages/server_details/server_details.dart +++ b/lib/ui/pages/server_details/server_details.dart @@ -53,7 +53,7 @@ class _ServerDetailsState extends State @override Widget build(BuildContext context) { - var isReady = context.watch().state is AppConfigFinished; + var isReady = context.watch().state is AppConfigFinished; var providerState = isReady ? StateType.stable : StateType.uninitialized; return Scaffold( @@ -89,19 +89,19 @@ class _ServerDetailsState extends State providerState: providerState, tabController: tabController), BrandText.body1('providers.server.bottom_sheet.1'.tr()), - SizedBox(height: 10), - BlocProvider( - create: (context) => HetznerMetricsCubit()..restart(), - child: _Chart(), - ), - SizedBox(height: 20), - BlocProvider( - create: (context) => ServerDetailsCubit()..check(), - child: _TextDetails(), - ), ], ), ), + SizedBox(height: 10), + BlocProvider( + create: (context) => HetznerMetricsCubit()..restart(), + child: _Chart(), + ), + SizedBox(height: 20), + BlocProvider( + create: (context) => ServerDetailsCubit()..check(), + child: _TextDetails(), + ), ], ), ), diff --git a/lib/ui/pages/users/users.dart b/lib/ui/pages/users/users.dart index c68e56e7..306b7479 100644 --- a/lib/ui/pages/users/users.dart +++ b/lib/ui/pages/users/users.dart @@ -43,7 +43,7 @@ class UsersPage extends StatelessWidget { if (user != null) { users.insert(0, user); } - final isEmpty = usersCubitState.isEmpty; + final isEmpty = users.isEmpty; Widget child; if (!isReady) {