Skip to content
Snippets Groups Projects
Commit 5db0c5f3 authored by poka's avatar poka
Browse files

fix start renewal date

parent 2f0604bb
Branches
Tags v0.1.15+87
No related merge requests found
Pipeline #39062 failed
......@@ -243,7 +243,7 @@
"areYouSureYouWantToRenewMembership": "Are you sure you want to renew your membership ?",
"membershipExpiredOn": "Membership expired on {}",
"membershipExpiresOnSimple": "Membership expires on {}",
"membershipExpiresOn": "Membership expires on {}, (renewable {} days before)",
"membershipExpiresOn": "Membership expires on {} (Renewal possible from {})",
"renewingMembership": "Renewing membership",
"membershipRenewalConfirmed": "Your membership renewal request has been registered and will be effective within a few minutes",
"membershipRenewalPending": "Membership renewal in progress...",
......
......@@ -244,7 +244,7 @@
"areYouSureYouWantToRenewMembership": "¿Estás seguro de que quieres renovar tu adhésion?",
"membershipExpiredOn": "Adhésion expirée el {}",
"membershipExpiresOnSimple": "Adhésion expira el {}",
"membershipExpiresOn": "Adhésion expira el {}, (renovable {} días antes)",
"membershipExpiresOn": "Adhésion expira el {} (Renovación posible a partir de {})",
"renewingMembership": "Renovando adhésion",
"membershipRenewalConfirmed": "Su solicitud de renovación de membresía ha sido registrada y será efectiva en unos minutos",
"membershipRenewalPending": "Renovación de membresía en curso...",
......
......@@ -243,7 +243,7 @@
"areYouSureYouWantToRenewMembership": "Êtes-vous sûr de vouloir renouveler votre adhésion ?",
"membershipExpiredOn": "Adhésion expirée le {}",
"membershipExpiresOnSimple": "Adhésion expire le {}",
"membershipExpiresOn": "Adhésion expire le {} (renouvelable {} jours avant)",
"membershipExpiresOn": "Adhésion expire le {} (Renouvellement possible à partir du {})",
"renewingMembership": "Renouvellement d'adhésion",
"membershipRenewalConfirmed": "Votre demande de renouvellement d'adhésion a bien été prise en compte et sera effective d'ici quelques minutes",
"membershipRenewalPending": "Renouvellement d'adhésion en cours...",
......
......@@ -18,17 +18,17 @@ class MembershipRenewal {
}
final now = DateTime.now();
final renewalPeriodInSeconds = renewalPeriodBlocks * 6;
final renewalDate = status.expireDate!.subtract(Duration(seconds: renewalPeriodInSeconds));
final isExpired = status.expireDate!.isBefore(now);
final canRenew = now.isAfter(renewalDate) && !status.hasPendingRenewal;
// On peut renouveler si on est après la date de début de renouvellement
final canRenew = !status.hasPendingRenewal && (status.renewalStartDate?.isBefore(now) ?? false);
return RenewalInfo(
expireDate: status.expireDate,
renewalDate: renewalDate,
isExpired: isExpired,
canRenew: canRenew,
hasPendingRenewal: status.hasPendingRenewal,
renewalStartDate: status.renewalStartDate,
);
}
......@@ -58,14 +58,18 @@ class MembershipRenewal {
static Widget buildExpirationText(RenewalInfo info, {double? width}) {
if (info.expireDate == null) return const SizedBox.shrink();
final text = info.hasPendingRenewal
? 'membershipRenewalPending'.tr()
: info.isExpired
? 'membershipExpiredOn'.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!)])
: info.canRenew
? 'membershipExpiresOnSimple'.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!)])
: 'membershipExpiresOn'
.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!), ((info.expireDate!.difference(info.renewalDate!)).inDays).toString()]);
final isRenewalStartDateInFuture = info.renewalStartDate != null && info.renewalStartDate!.isAfter(DateTime.now());
String text;
if (info.hasPendingRenewal) {
text = 'membershipRenewalPending'.tr();
} else if (info.isExpired) {
text = 'membershipExpiredOn'.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!)]);
} else if (!isRenewalStartDateInFuture) {
text = 'membershipExpiresOnSimple'.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!)]);
} else {
text = 'membershipExpiresOn'.tr(args: [DateFormat('dd/MM/yyyy').format(info.expireDate!), DateFormat('dd/MM/yyyy').format(info.renewalStartDate!)]);
}
final textWidget = Text(
text,
......@@ -82,16 +86,16 @@ class MembershipRenewal {
class RenewalInfo {
final DateTime? expireDate;
final DateTime? renewalDate;
final bool isExpired;
final bool canRenew;
final bool hasPendingRenewal;
final DateTime? renewalStartDate;
RenewalInfo({
this.expireDate,
this.renewalDate,
this.isExpired = false,
this.canRenew = false,
this.hasPendingRenewal = false,
this.renewalStartDate,
});
}
class MembershipStatus {
final DateTime? expireDate;
final bool hasPendingRenewal;
final DateTime? renewalStartDate;
const MembershipStatus({
MembershipStatus({
required this.expireDate,
required this.hasPendingRenewal,
required this.renewalStartDate,
});
static MembershipStatus empty() => MembershipStatus(expireDate: null, hasPendingRenewal: false, renewalStartDate: null);
}
......@@ -491,6 +491,7 @@ class SubstrateSdk with ChangeNotifier {
'certMaxByIssuer': 'certification.maxByIssuer.words',
'certValidityPeriod': 'certification.validityPeriod.words',
'membershipRenewalPeriod': 'membership.membershipRenewalPeriod.words',
'membershipPeriod': 'membership.membershipPeriod.words',
};
try {
......@@ -1264,7 +1265,7 @@ newKeySig: $newKeySigType""");
Future<MembershipStatus> getMembershipStatus(String address) async {
final idtyIndex = await _getIdentityIndexOf(address);
if (idtyIndex == null) return MembershipStatus(expireDate: null, hasPendingRenewal: false);
if (idtyIndex == null) return MembershipStatus.empty();
// Vérifier si une évaluation est en cours
final hasPendingRenewal = await _getStorage('distance.pendingEvaluationRequest($idtyIndex)') != null;
......@@ -1278,9 +1279,14 @@ newKeySig: $newKeySigType""");
// Returns expiration date by adding (or subtracting if expired) time from now
final expireDate = DateTime.now().add(Duration(seconds: blockDifference * 6));
final membershipPeriod = currencyParameters['membershipPeriod']!;
final membershipRenewalPeriod = currencyParameters['membershipRenewalPeriod']!;
final renewalStartDate = expireDate.subtract(Duration(seconds: (membershipPeriod - membershipRenewalPeriod).round() * 6));
return MembershipStatus(
expireDate: expireDate,
hasPendingRenewal: hasPendingRenewal,
renewalStartDate: renewalStartDate,
);
}
}
......@@ -457,7 +457,10 @@ class WalletOptions extends StatelessWidget {
sub.currencyParameters['membershipRenewalPeriod']!,
);
if (!info.canRenew) return const SizedBox.shrink();
final twoMonthsBeforeExpiration = info.expireDate?.subtract(const Duration(days: 60));
final shouldHideButton = !info.canRenew || !(twoMonthsBeforeExpiration?.isBefore(DateTime.now()) ?? false);
if (shouldHideButton) return const SizedBox.shrink();
return Container(
margin: EdgeInsets.only(bottom: scaleSize(24)),
......
......@@ -2,7 +2,7 @@ name: gecko
description: Pay with G1.
publish_to: "none"
version: 0.1.14+86
version: 0.1.15+87
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