From 4942f67f37d043aef155547344997965659a1b99 Mon Sep 17 00:00:00 2001 From: Kherel Date: Wed, 15 Sep 2021 16:37:22 +0200 Subject: [PATCH] update --- lib/config/get_it_config.dart | 2 +- .../cubit/app_config/app_config_cubit.dart | 3 + .../hetzner_metrics_repository.dart | 1 - lib/logic/cubit/jobs/jobs_cubit.dart | 19 +-- lib/logic/get_it/navigation.dart | 12 +- .../get_it/{ssh_helper.dart => ssh.dart} | 4 +- lib/ui/components/brand_text/brand_text.dart | 1 - .../pages/more/app_settings/app_setting.dart | 2 +- lib/ui/pages/more/more.dart | 147 ++++++++++-------- 9 files changed, 101 insertions(+), 90 deletions(-) rename lib/logic/get_it/{ssh_helper.dart => ssh.dart} (95%) diff --git a/lib/config/get_it_config.dart b/lib/config/get_it_config.dart index 99b61cc887..eb5c090208 100644 --- a/lib/config/get_it_config.dart +++ b/lib/config/get_it_config.dart @@ -2,7 +2,7 @@ import 'package:get_it/get_it.dart'; import 'package:selfprivacy/logic/get_it/api_config.dart'; import 'package:selfprivacy/logic/get_it/console.dart'; import 'package:selfprivacy/logic/get_it/navigation.dart'; -import 'package:selfprivacy/logic/get_it/ssh_helper.dart'; +import 'package:selfprivacy/logic/get_it/ssh.dart'; import 'package:selfprivacy/logic/get_it/timer.dart'; export 'package:selfprivacy/logic/get_it/api_config.dart'; diff --git a/lib/logic/cubit/app_config/app_config_cubit.dart b/lib/logic/cubit/app_config/app_config_cubit.dart index e86cead1c5..d73eb8b34d 100644 --- a/lib/logic/cubit/app_config/app_config_cubit.dart +++ b/lib/logic/cubit/app_config/app_config_cubit.dart @@ -2,7 +2,9 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; +import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/logic/cubit/services/services_cubit.dart'; +import 'package:selfprivacy/logic/get_it/ssh.dart'; import 'package:selfprivacy/logic/models/backblaze_credential.dart'; import 'package:selfprivacy/logic/models/cloudflare_domain.dart'; @@ -274,6 +276,7 @@ class AppConfigCubit extends Cubit { if (state.hetznerServer != null) { await repository.deleteServer(state.cloudFlareDomain!); + await getIt().clear(); } await repository.deleteRecords(); emit(AppConfigState( diff --git a/lib/logic/cubit/hetzner_metrics/hetzner_metrics_repository.dart b/lib/logic/cubit/hetzner_metrics/hetzner_metrics_repository.dart index 5291e2c8ef..6e62b3f10a 100644 --- a/lib/logic/cubit/hetzner_metrics/hetzner_metrics_repository.dart +++ b/lib/logic/cubit/hetzner_metrics/hetzner_metrics_repository.dart @@ -6,7 +6,6 @@ import 'hetzner_metrics_cubit.dart'; class HetznerMetricsRepository { Future getMetrics(Period period) async { - print(period); var end = DateTime.now(); DateTime start; diff --git a/lib/logic/cubit/jobs/jobs_cubit.dart b/lib/logic/cubit/jobs/jobs_cubit.dart index d9d902a95d..09be466c78 100644 --- a/lib/logic/cubit/jobs/jobs_cubit.dart +++ b/lib/logic/cubit/jobs/jobs_cubit.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:selfprivacy/config/brand_colors.dart'; import 'package:selfprivacy/config/get_it_config.dart'; +import 'package:selfprivacy/config/text_themes.dart'; import 'package:selfprivacy/logic/api_maps/server.dart'; import 'package:selfprivacy/logic/cubit/services/services_cubit.dart'; import 'package:selfprivacy/logic/cubit/users/users_cubit.dart'; -import 'package:selfprivacy/logic/get_it/ssh_helper.dart'; +import 'package:selfprivacy/logic/get_it/ssh.dart'; import 'package:selfprivacy/logic/models/job.dart'; import 'package:equatable/equatable.dart'; import 'package:selfprivacy/logic/models/user.dart'; @@ -29,10 +31,7 @@ class JobsCubit extends Cubit { newJobsList.addAll((state as JobsStateWithJobs).jobList); } newJobsList.add(job); - getIt().showSnackBar(SnackBar( - content: Text('jobs.jobAdded'.tr()), - duration: const Duration(seconds: 2), - )); + getIt().showSnackBar('jobs.jobAdded'.tr()); emit(JobsStateWithJobs(newJobsList)); } @@ -54,10 +53,7 @@ class JobsCubit extends Cubit { removeJob(removingJob.id); } else { newJobsList.add(job); - getIt().showSnackBar(SnackBar( - content: Text('jobs.jobAdded'.tr()), - duration: const Duration(seconds: 2), - )); + getIt().showSnackBar('jobs.jobAdded'.tr()); emit(JobsStateWithJobs(newJobsList)); } } @@ -70,10 +66,7 @@ class JobsCubit extends Cubit { var isExistInJobList = newJobsList.any((el) => el is CreateSSHKeyJob); if (!isExistInJobList) { newJobsList.add(job); - getIt().showSnackBar(SnackBar( - content: Text('jobs.jobAdded'.tr()), - duration: const Duration(seconds: 2), - )); + getIt().showSnackBar('jobs.jobAdded'.tr()); emit(JobsStateWithJobs(newJobsList)); } } diff --git a/lib/logic/get_it/navigation.dart b/lib/logic/get_it/navigation.dart index 6d179fa792..4f06c843bd 100644 --- a/lib/logic/get_it/navigation.dart +++ b/lib/logic/get_it/navigation.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; +import 'package:selfprivacy/config/brand_colors.dart'; +import 'package:selfprivacy/config/text_themes.dart'; class NavigationService { final GlobalKey scaffoldMessengerKey = @@ -17,9 +19,13 @@ class NavigationService { ); } - void showSnackBar(SnackBar snackBar) { + void showSnackBar(String text) { final state = scaffoldMessengerKey.currentState!; - - state.showSnackBar(snackBar); + final snack = SnackBar( + backgroundColor: BrandColors.black.withOpacity(0.8), + content: Text(text, style: buttonTitleText), + duration: const Duration(seconds: 2), + ); + state.showSnackBar(snack); } } diff --git a/lib/logic/get_it/ssh_helper.dart b/lib/logic/get_it/ssh.dart similarity index 95% rename from lib/logic/get_it/ssh_helper.dart rename to lib/logic/get_it/ssh.dart index 1d9ce416c9..0e833c7eb8 100644 --- a/lib/logic/get_it/ssh_helper.dart +++ b/lib/logic/get_it/ssh.dart @@ -24,14 +24,14 @@ class SSHModel { await _box.put(BNames.sshPublicKey, savedPubKey); } - void init() { + void init() async { savedPrivateKey = _box.get(BNames.sshPrivateKey); savedPubKey = _box.get(BNames.sshPublicKey); } bool get isSSHKeyGenerated => savedPrivateKey != null && savedPubKey != null; - clear() async { + Future clear() async { savedPrivateKey = null; savedPubKey = null; await _box.clear(); diff --git a/lib/ui/components/brand_text/brand_text.dart b/lib/ui/components/brand_text/brand_text.dart index beaf293701..bd3119dc16 100644 --- a/lib/ui/components/brand_text/brand_text.dart +++ b/lib/ui/components/brand_text/brand_text.dart @@ -127,7 +127,6 @@ class BrandText extends StatelessWidget { Text build(BuildContext context) { TextStyle style; var isDark = Theme.of(context).brightness == Brightness.dark; - switch (type) { case TextType.h1: style = isDark diff --git a/lib/ui/pages/more/app_settings/app_setting.dart b/lib/ui/pages/more/app_settings/app_setting.dart index a5c5010868..a9a15c9961 100644 --- a/lib/ui/pages/more/app_settings/app_setting.dart +++ b/lib/ui/pages/more/app_settings/app_setting.dart @@ -119,7 +119,7 @@ class _AppSettingsPageState extends State { ], ), ), - deleteServer(context) + // deleteServer(context) ], ), ); diff --git a/lib/ui/pages/more/more.dart b/lib/ui/pages/more/more.dart index 93473b7c5c..2c008b8841 100644 --- a/lib/ui/pages/more/more.dart +++ b/lib/ui/pages/more/more.dart @@ -5,8 +5,9 @@ import 'package:selfprivacy/config/brand_colors.dart'; import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/config/text_themes.dart'; +import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart'; import 'package:selfprivacy/logic/cubit/jobs/jobs_cubit.dart'; -import 'package:selfprivacy/logic/get_it/ssh_helper.dart'; +import 'package:selfprivacy/logic/get_it/ssh.dart'; import 'package:selfprivacy/logic/models/job.dart'; import 'package:selfprivacy/logic/models/state_types.dart'; import 'package:selfprivacy/ui/components/action_button/action_button.dart'; @@ -35,6 +36,7 @@ class MorePage extends StatelessWidget { @override Widget build(BuildContext context) { var jobsCubit = context.watch(); + var isReady = context.watch().state.isFullyInitilized; return Scaffold( appBar: PreferredSize( @@ -84,68 +86,69 @@ class MorePage extends StatelessWidget { _MoreMenuTapItem( title: 'more.create_ssh_key'.tr(), iconData: Ionicons.key_outline, - onTap: () { - if (getIt().isSSHKeyGenerated) { - showDialog( - context: context, - builder: (BuildContext context) { - return _SSHExitsDetails( - onShareTap: () { - Share.share(getIt().savedPrivateKey!); - }, - onDeleteTap: () { - showDialog( - context: context, - builder: (_) { - return BrandAlert( - title: 'modals.3'.tr(), - contentText: 'more.delete_ssh_text'.tr(), - acitons: [ - ActionButton( - text: 'more.yes_delete'.tr(), - isRed: true, - onPressed: () { - getIt().clear(); - Navigator.of(context).pop(); - }), - ActionButton( - text: 'basis.cancel'.tr(), - ), - ], - ); - }, - ); - }, - onCopyTap: () { - Clipboard.setData(ClipboardData( - text: getIt().savedPrivateKey!)); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('more.copied_ssh'.tr()), - duration: const Duration(seconds: 2), - ), - ); - }, - ); - }, - ); - } else { - showDialog( - context: context, - builder: (BuildContext context) { - return _MoreDetails( - title: 'more.create_ssh_key'.tr(), - icon: Ionicons.key_outline, - onTap: () { - jobsCubit - .createShhJobIfNotExist(CreateSSHKeyJob()); - }, - text: 'more.generate_key_text'.tr(), - ); - }, - ); - } - }, + onTap: isReady + ? () { + if (getIt().isSSHKeyGenerated) { + showDialog( + context: context, + builder: (BuildContext context) { + return _SSHExitsDetails( + onShareTap: () { + Share.share( + getIt().savedPrivateKey!); + }, + onDeleteTap: () { + showDialog( + context: context, + builder: (_) { + return BrandAlert( + title: 'modals.3'.tr(), + contentText: + 'more.delete_ssh_text'.tr(), + acitons: [ + ActionButton( + text: 'more.yes_delete'.tr(), + isRed: true, + onPressed: () { + getIt().clear(); + Navigator.of(context).pop(); + }), + ActionButton( + text: 'basis.cancel'.tr(), + ), + ], + ); + }, + ); + }, + onCopyTap: () { + Clipboard.setData(ClipboardData( + text: getIt() + .savedPrivateKey!)); + getIt() + .showSnackBar('more.copied_ssh'.tr()); + }, + ); + }, + ); + } else { + showDialog( + context: context, + builder: (BuildContext context) { + return _MoreDetails( + title: 'more.create_ssh_key'.tr(), + icon: Ionicons.key_outline, + onTap: () { + jobsCubit.createShhJobIfNotExist( + CreateSSHKeyJob()); + }, + text: 'more.generate_key_text'.tr(), + ); + }, + ); + } + } + : null, ), ], ), @@ -319,6 +322,7 @@ class _NavItem extends StatelessWidget { child: _MoreMenuItem( iconData: iconData, title: title, + isActive: true, ), ); } @@ -333,15 +337,14 @@ class _MoreMenuTapItem extends StatelessWidget { }) : super(key: key); final IconData iconData; - final Function onTap; + final VoidCallback? onTap; final String title; @override Widget build(BuildContext context) { return GestureDetector( - onTap: () { - onTap(); - }, + onTap: onTap, child: _MoreMenuItem( + isActive: onTap != null, iconData: iconData, title: title, ), @@ -354,10 +357,12 @@ class _MoreMenuItem extends StatelessWidget { Key? key, required this.iconData, required this.title, + required this.isActive, }) : super(key: key); final IconData iconData; final String title; + final bool isActive; @override Widget build(BuildContext context) { @@ -373,13 +378,19 @@ class _MoreMenuItem extends StatelessWidget { ), child: Row( children: [ - BrandText.body1(title), + BrandText.body1( + title, + style: TextStyle( + color: isActive ? null : Colors.grey, + ), + ), Spacer(), SizedBox( width: 56, child: Icon( iconData, size: 20, + color: isActive ? null : Colors.grey, ), ), ],