Skip to content
Snippets Groups Projects
Commit 0e38099f authored by poka's avatar poka
Browse files

refacto and fix certData null checker

parent 42d6fb35
No related branches found
Tags v0.1.9+80
No related merge requests found
Pipeline #38188 failed
...@@ -4,57 +4,39 @@ import 'package:gecko/widgets/certify/certify_button.dart'; ...@@ -4,57 +4,39 @@ import 'package:gecko/widgets/certify/certify_button.dart';
import 'package:gecko/widgets/certify/wait_to_cert.dart'; import 'package:gecko/widgets/certify/wait_to_cert.dart';
class CertStateWidget extends StatelessWidget { class CertStateWidget extends StatelessWidget {
const CertStateWidget( const CertStateWidget({super.key, required this.certState, required this.address});
{super.key, required this.certState, required this.address});
final CertState certState; final CertState certState;
final String address; final String address;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (certState.status) { final duration = certState.duration ?? Duration.zero;
case CertStatus.canCert: return switch (certState.status) {
return CertifyButton(address); CertStatus.canCert => CertifyButton(address),
case CertStatus.mustConfirmIdentity: CertStatus.mustConfirmIdentity => WaitToCertWidget(messageKey: 'mustConfirmHisIdentity', duration: formatDuration(duration)),
return WaitToCertWidget( CertStatus.canRenewIn => WaitToCertWidget(messageKey: 'canRenewCertInX', duration: formatDuration(duration)),
messageKey: 'mustConfirmHisIdentity', CertStatus.mustWaitBeforeCert => WaitToCertWidget(messageKey: 'mustWaitXBeforeCertify', duration: formatDuration(duration)),
duration: formatDuration(certState.duration!)); _ => const SizedBox.shrink(),
case CertStatus.canRenewIn: };
return WaitToCertWidget(
messageKey: 'canRenewCertInX',
duration: formatDuration(certState.duration!));
case CertStatus.mustWaitBeforeCert:
return WaitToCertWidget(
messageKey: 'mustWaitXBeforeCertify',
duration: formatDuration(certState.duration!));
default:
return const SizedBox.shrink();
}
} }
String formatDuration(Duration duration) { String formatDuration(Duration duration) {
final seconds = duration.inSeconds; return switch (duration) {
final minutes = duration.inMinutes; <= Duration.zero => 'seconds'.tr(args: ['0']),
<= const Duration(minutes: 1) => 'seconds'.tr(args: [duration.inSeconds.toString()]),
if (seconds <= 0) { <= const Duration(hours: 1) => 'minutes'.tr(args: [duration.inMinutes.toString()]),
return 'seconds'.tr(args: ['0']); <= const Duration(days: 1) => () {
} else if (seconds <= 60) { final minutesPart = duration - Duration(hours: duration.inHours);
return 'seconds'.tr(args: [seconds.toString()]); final showMinutes = minutesPart.inMinutes > 0 ? 'minutes'.tr(args: [minutesPart.inMinutes.toString()]) : '';
} else if (seconds <= 3600) { return 'hours'.tr(args: [duration.inHours.toString(), showMinutes]);
return 'minutes'.tr(args: [minutes.toString()]); }(),
} else if (seconds <= 86400) { <= const Duration(days: 30) => 'days'.tr(args: [duration.inDays.toString()]),
final hours = duration.inHours; _ => () {
final minutesLeft = minutes - hours * 60; final months = (duration.inDays / 30).round();
String showMinutes = return 'months'.tr(args: [months.toString()]);
minutesLeft < 60 ? '' : 'minutes'.tr(args: [minutesLeft.toString()]); }(),
return 'hours'.tr(args: [hours.toString(), showMinutes]); };
} else if (seconds <= 2592000) {
final days = duration.inDays;
return 'days'.tr(args: [days.toString()]);
} else {
final months = (duration.inDays / 30).round();
return 'months'.tr(args: [months.toString()]);
}
} }
} }
......
...@@ -2,7 +2,7 @@ name: gecko ...@@ -2,7 +2,7 @@ name: gecko
description: Pay with G1. description: Pay with G1.
publish_to: "none" publish_to: "none"
version: 0.1.8+79 version: 0.1.9+80
environment: environment:
sdk: ^3.5.3 sdk: ^3.5.3
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment