add auto renewal

This commit is contained in:
otsmr 2025-05-12 15:24:11 +02:00
parent de916bd1e8
commit 41dd5679e2
10 changed files with 32 additions and 4 deletions

View file

@ -207,6 +207,7 @@
"transactionCash": "Bargeldtransaktion",
"transactionPlanUpgrade": "Planupgrade",
"transactionRefund": "Rückerstattung",
"transactionAutoRenewal": "Automatische Verlängerung",
"refund": "Rückerstattung",
"transactionThanksForTesting": "Danke fürs Testen",
"transactionUnknown": "Unbekannte Transaktion",

View file

@ -369,6 +369,7 @@
"transactionUnknown": "Unknown transaction",
"transactionVoucherCreated": "Voucher created",
"transactionVoucherRedeemed": "Voucher redeemed",
"transactionAutoRenewal": "Automatic renewal",
"checkoutOptions": "Options",
"refund": "Refund",
"checkoutPayYearly": "Pay yearly",

View file

@ -1277,6 +1277,12 @@ abstract class AppLocalizations {
/// **'Voucher redeemed'**
String get transactionVoucherRedeemed;
/// No description provided for @transactionAutoRenewal.
///
/// In en, this message translates to:
/// **'Automatic renewal'**
String get transactionAutoRenewal;
/// No description provided for @checkoutOptions.
///
/// In en, this message translates to:

View file

@ -613,6 +613,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get transactionVoucherRedeemed => 'Gutschein eingelöst';
@override
String get transactionAutoRenewal => 'Automatische Verlängerung';
@override
String get checkoutOptions => 'Optionen';
@ -644,7 +647,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get autoRenewalDesc => 'Du kannst dies jederzeit ändern.';
@override
String get autoRenewalLongDesc => 'Wenn dein Abonnement ausläuft, wirst du automatisch auf den Vorschau-Plan zurückgestuft. Wenn du die automatische Verlängerung aktivierst, vergewissere dich bitte, dass du über genügend Guthaben für die automatische Erneuerung verfügst. Wir werden dich rechtzeitig vor der automatischen Erneuerung benachrichtigen.';
String get autoRenewalLongDesc => 'Wenn dein Abonnement ausläuft, wirst du automatisch auf den Preview-Plan zurückgestuft. Wenn du die automatische Verlängerung aktivierst, vergewissere dich bitte, dass du über genügend Guthaben für die automatische Erneuerung verfügst. Wir werden dich rechtzeitig vor der automatischen Erneuerung benachrichtigen.';
@override
String get planSuccessUpgraded => 'Dein Plan wurde erfolgreich aktualisiert.';

View file

@ -613,6 +613,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get transactionVoucherRedeemed => 'Voucher redeemed';
@override
String get transactionAutoRenewal => 'Automatic renewal';
@override
String get checkoutOptions => 'Options';

View file

@ -21,6 +21,7 @@ class Response_TransactionTypes extends $pb.ProtobufEnum {
static const Response_TransactionTypes PlanUpgrade = Response_TransactionTypes._(4, _omitEnumNames ? '' : 'PlanUpgrade');
static const Response_TransactionTypes Unknown = Response_TransactionTypes._(5, _omitEnumNames ? '' : 'Unknown');
static const Response_TransactionTypes ThanksForTesting = Response_TransactionTypes._(6, _omitEnumNames ? '' : 'ThanksForTesting');
static const Response_TransactionTypes AutoRenewal = Response_TransactionTypes._(7, _omitEnumNames ? '' : 'AutoRenewal');
static const $core.List<Response_TransactionTypes> values = <Response_TransactionTypes> [
Refund,
@ -30,6 +31,7 @@ class Response_TransactionTypes extends $pb.ProtobufEnum {
PlanUpgrade,
Unknown,
ThanksForTesting,
AutoRenewal,
];
static final $core.Map<$core.int, Response_TransactionTypes> _byValue = $pb.ProtobufEnum.initByValue(values);

View file

@ -289,6 +289,7 @@ const Response_TransactionTypes$json = {
{'1': 'PlanUpgrade', '2': 4},
{'1': 'Unknown', '2': 5},
{'1': 'ThanksForTesting', '2': 6},
{'1': 'AutoRenewal', '2': 7},
],
};
@ -355,8 +356,8 @@ final $typed_data.Uint8List responseDescriptor = $convert.base64Decode(
'YWxsYW5jZUgAUgxwbGFuYmFsbGFuY2USQQoIdm91Y2hlcnMYCyABKAsyIy5zZXJ2ZXJfdG9fY2'
'xpZW50LlJlc3BvbnNlLlZvdWNoZXJzSABSCHZvdWNoZXJzEl8KEmFkZGFjY291bnRzaW52aXRl'
'cxgMIAEoCzItLnNlcnZlcl90b19jbGllbnQuUmVzcG9uc2UuQWRkQWNjb3VudHNJbnZpdGVzSA'
'BSEmFkZGFjY291bnRzaW52aXRlc0IECgJPayKFAQoQVHJhbnNhY3Rpb25UeXBlcxIKCgZSZWZ1'
'BSEmFkZGFjY291bnRzaW52aXRlc0IECgJPayKWAQoQVHJhbnNhY3Rpb25UeXBlcxIKCgZSZWZ1'
'bmQQABITCg9Wb3VjaGVyUmVkZWVtZWQQARISCg5Wb3VjaGVyQ3JlYXRlZBACEggKBENhc2gQAx'
'IPCgtQbGFuVXBncmFkZRAEEgsKB1Vua25vd24QBRIUChBUaGFua3NGb3JUZXN0aW5nEAZCCgoI'
'UmVzcG9uc2U=');
'IPCgtQbGFuVXBncmFkZRAEEgsKB1Vua25vd24QBRIUChBUaGFua3NGb3JUZXN0aW5nEAYSDwoL'
'QXV0b1JlbmV3YWwQB0IKCghSZXNwb25zZQ==');

View file

@ -106,6 +106,7 @@ class ApiProvider {
log.info("Closing the websocket connection!");
if (_channel != null) {
await _channel!.sink.close();
onClosed();
callback();
return;
}

View file

@ -78,6 +78,14 @@ int calculateRefund(Response_PlanBallance current) {
.ceil() *
100;
}
} else {
final elapsedDays = DateTime.now()
.difference(DateTime.fromMillisecondsSinceEpoch(
current.lastPaymentDoneUnixTimestamp.toInt() * 1000))
.inDays;
if (elapsedDays > 14) {
refund = 0;
}
}
return refund;
}

View file

@ -76,6 +76,8 @@ class _TransactionCardState extends State<TransactionCard> {
return context.lang.transactionVoucherCreated;
case Response_TransactionTypes.VoucherRedeemed:
return context.lang.transactionVoucherRedeemed;
case Response_TransactionTypes.AutoRenewal:
return context.lang.transactionAutoRenewal;
}
return type.toString();
}