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