From 4005ab6bc73780f9c8b2bee1275d162fe4635609 Mon Sep 17 00:00:00 2001 From: otsmr Date: Sat, 14 Mar 2026 15:30:26 +0100 Subject: [PATCH] display message if limit is reached --- lib/src/database/tables/mediafiles.table.dart | 3 +++ .../localization/generated/app_localizations.dart | 6 ++++++ .../generated/app_localizations_de.dart | 3 +++ .../generated/app_localizations_en.dart | 3 +++ .../generated/app_localizations_sv.dart | 3 +++ lib/src/services/api/mediafiles/upload.service.dart | 5 +++++ .../message_send_state_icon.dart | 13 +++++++++++++ 7 files changed, 36 insertions(+) diff --git a/lib/src/database/tables/mediafiles.table.dart b/lib/src/database/tables/mediafiles.table.dart index 676858a..50308a9 100644 --- a/lib/src/database/tables/mediafiles.table.dart +++ b/lib/src/database/tables/mediafiles.table.dart @@ -20,6 +20,9 @@ enum UploadState { uploaded, uploadLimitReached, + + // File is to big to be uploaded + fileLimitReached, // readyToUpload, // uploadTaskStarted, // receiverNotified, diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index baf00c7..7eb3039 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -2104,6 +2104,12 @@ abstract class AppLocalizations { /// **'The upload limit has\nbeen reached. Upgrade to Pro\nor wait until tomorrow.'** String get uploadLimitReached; + /// No description provided for @fileLimitReached. + /// + /// In en, this message translates to: + /// **'Maximum file size\nexceeded'** + String get fileLimitReached; + /// No description provided for @retransmissionRequested. /// /// In en, this message translates to: diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index 6770be7..ee28bb2 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -1116,6 +1116,9 @@ class AppLocalizationsDe extends AppLocalizations { String get uploadLimitReached => 'Das Upload-Limit wurde\nerreicht. Upgrade auf Pro\noder warte bis morgen.'; + @override + String get fileLimitReached => 'Maximale Dateigröße\nerreicht'; + @override String get retransmissionRequested => 'Wird erneut versucht.'; diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index eeb70b5..9ba5811 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -1109,6 +1109,9 @@ class AppLocalizationsEn extends AppLocalizations { String get uploadLimitReached => 'The upload limit has\nbeen reached. Upgrade to Pro\nor wait until tomorrow.'; + @override + String get fileLimitReached => 'Maximum file size\nexceeded'; + @override String get retransmissionRequested => 'Retransmission requested'; diff --git a/lib/src/localization/generated/app_localizations_sv.dart b/lib/src/localization/generated/app_localizations_sv.dart index 99799dc..3b2e90e 100644 --- a/lib/src/localization/generated/app_localizations_sv.dart +++ b/lib/src/localization/generated/app_localizations_sv.dart @@ -1109,6 +1109,9 @@ class AppLocalizationsSv extends AppLocalizations { String get uploadLimitReached => 'The upload limit has\nbeen reached. Upgrade to Pro\nor wait until tomorrow.'; + @override + String get fileLimitReached => 'Maximum file size\nexceeded'; + @override String get retransmissionRequested => 'Retransmission requested'; diff --git a/lib/src/services/api/mediafiles/upload.service.dart b/lib/src/services/api/mediafiles/upload.service.dart index f21513c..da37c3b 100644 --- a/lib/src/services/api/mediafiles/upload.service.dart +++ b/lib/src/services/api/mediafiles/upload.service.dart @@ -343,6 +343,11 @@ Future _createUploadRequest(MediaFileService media) async { final uploadRequestBytes = uploadRequest.writeToBuffer(); + if (uploadRequestBytes.length > 49_000_000) { + await media.setUploadState(UploadState.fileLimitReached); + return; + } + await media.uploadRequestPath.writeAsBytes(uploadRequestBytes); } diff --git a/lib/src/views/chats/chat_messages_components/message_send_state_icon.dart b/lib/src/views/chats/chat_messages_components/message_send_state_icon.dart index a212859..91932dc 100644 --- a/lib/src/views/chats/chat_messages_components/message_send_state_icon.dart +++ b/lib/src/views/chats/chat_messages_components/message_send_state_icon.dart @@ -163,6 +163,19 @@ class _MessageSendStateIconState extends State { context.lang.uploadLimitReached, style: const TextStyle(fontSize: 9), ); + } + + if (mediaFile.uploadState == UploadState.fileLimitReached) { + icon = FaIcon( + FontAwesomeIcons.triangleExclamation, + size: 12, + color: color, + ); + + textWidget = Text( + context.lang.fileLimitReached, + style: const TextStyle(fontSize: 9), + ); onTap = () => context.push(Routes.settingsSubscription); }