From 7920cb7c06008eef8c8d0ca105cfa682be4a9688 Mon Sep 17 00:00:00 2001 From: Hiddify Date: Sun, 10 Sep 2023 12:46:22 +0200 Subject: [PATCH] handle unlimited --- assets/translations/strings.i18n.json | 2 +- assets/translations/strings_fa.i18n.json | 2 +- lib/domain/profiles/profile.dart | 15 +++++++++++++-- lib/features/common/profile_tile.dart | 12 ++++++++---- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/assets/translations/strings.i18n.json b/assets/translations/strings.i18n.json index 08bd2f69..0aacd383 100644 --- a/assets/translations/strings.i18n.json +++ b/assets/translations/strings.i18n.json @@ -32,7 +32,7 @@ "subscription": { "traffic": "Traffic", "updatedTimeAgo": "Updated ${timeago}", - "remainingDuration": "${duration} days remaining", + "remainingDuration": "📅 ${duration} Days Remaining", "expired": "Expired", "noTraffic": "No more traffic" }, diff --git a/assets/translations/strings_fa.i18n.json b/assets/translations/strings_fa.i18n.json index 00766d6b..5ca75ce1 100644 --- a/assets/translations/strings_fa.i18n.json +++ b/assets/translations/strings_fa.i18n.json @@ -32,7 +32,7 @@ "subscription": { "traffic": "ترافیک", "updatedTimeAgo": "بروزرسانی شده در ${timeago}", - "remainingDuration": "${duration} روز باقی مانده", + "remainingDuration": "📅 ${duration} روز باقی مانده", "expired": "منقضی شده", "noTraffic": "پایان ترافیک" }, diff --git a/lib/domain/profiles/profile.dart b/lib/domain/profiles/profile.dart index 331a43a1..62768888 100644 --- a/lib/domain/profiles/profile.dart +++ b/lib/domain/profiles/profile.dart @@ -128,6 +128,7 @@ class SubscriptionInfo with _$SubscriptionInfo { const factory SubscriptionInfo({ required int upload, required int download, + @JsonKey(fromJson: _fromJsonTotal, defaultValue: 9223372036854775807) required int total, @JsonKey(fromJson: _dateTimeFromSecondsSinceEpoch) required DateTime expire, }) = _SubscriptionInfo; @@ -154,5 +155,15 @@ class SubscriptionInfo with _$SubscriptionInfo { _$SubscriptionInfoFromJson(json); } -DateTime _dateTimeFromSecondsSinceEpoch(dynamic expire) => - DateTime.fromMillisecondsSinceEpoch((expire as int) * 1000); +int _fromJsonTotal(dynamic total) { + if (total == null) { + return 9223372036854775807; + } + return total as int; +} + +DateTime _dateTimeFromSecondsSinceEpoch(dynamic expire) { + return DateTime.fromMillisecondsSinceEpoch( + (expire as int? ?? 92233720368) * 1000, + ); +} diff --git a/lib/features/common/profile_tile.dart b/lib/features/common/profile_tile.dart index aebfd1d2..8f1edef5 100644 --- a/lib/features/common/profile_tile.dart +++ b/lib/features/common/profile_tile.dart @@ -305,13 +305,17 @@ class ProfileSubscriptionInfo extends HookConsumerWidget { final theme = Theme.of(context); final remaining = remainingText(t, theme); - return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - subInfo.consumption.sizeOf(subInfo.total), - style: theme.textTheme.bodySmall, + Directionality( + textDirection: TextDirection.ltr, + child: Text( + subInfo.total > 10 * 1099511627776 //10TB + ? "∞ GiB" + : subInfo.consumption.sizeOf(subInfo.total), + style: theme.textTheme.bodySmall, + ), ), Text( remaining.$1,