♻️ Better resend message

This commit is contained in:
2025-10-10 22:34:34 +08:00
parent 7c7ed21a96
commit 75deb04a2b
3 changed files with 19 additions and 2 deletions

View File

@@ -1208,5 +1208,6 @@
"enterPinToConfirmTransfer": "Enter your 6-digit PIN to confirm transfer", "enterPinToConfirmTransfer": "Enter your 6-digit PIN to confirm transfer",
"transferCreatedSuccessfully": "Transfer created successfully!", "transferCreatedSuccessfully": "Transfer created successfully!",
"postUpdate": "Update", "postUpdate": "Update",
"fileMetadata": "File Metadata" "fileMetadata": "File Metadata",
"resend": "Resend"
} }

View File

@@ -586,6 +586,8 @@ class ChatRoomScreen extends HookConsumerWidget {
messageForwardingTo.value = message.toRemoteMessage(); messageForwardingTo.value = message.toRemoteMessage();
case MessageItemAction.reply: case MessageItemAction.reply:
messageReplyingTo.value = message.toRemoteMessage(); messageReplyingTo.value = message.toRemoteMessage();
case MessageItemAction.resend:
messagesNotifier.retryMessage(message.id);
} }
}, },
onJump: (messageId) { onJump: (messageId) {

View File

@@ -34,6 +34,7 @@ class MessageItemAction {
static const String delete = "delete"; static const String delete = "delete";
static const String reply = "reply"; static const String reply = "reply";
static const String forward = "forward"; static const String forward = "forward";
static const String resend = "resend";
} }
class MessageItem extends HookConsumerWidget { class MessageItem extends HookConsumerWidget {
@@ -117,6 +118,7 @@ class MessageItem extends HookConsumerWidget {
translate: translate, translate: translate,
isMobile: isMobile, isMobile: isMobile,
remoteMessage: remoteMessage, remoteMessage: remoteMessage,
message: message,
), ),
); );
} }
@@ -254,6 +256,7 @@ class MessageActionSheet extends StatefulWidget {
final VoidCallback translate; final VoidCallback translate;
final bool isMobile; final bool isMobile;
final dynamic remoteMessage; final dynamic remoteMessage;
final LocalChatMessage message;
const MessageActionSheet({ const MessageActionSheet({
super.key, super.key,
@@ -265,6 +268,7 @@ class MessageActionSheet extends StatefulWidget {
required this.translate, required this.translate,
required this.isMobile, required this.isMobile,
required this.remoteMessage, required this.remoteMessage,
required this.message,
}); });
@override @override
@@ -390,6 +394,16 @@ class _MessageActionSheetState extends State<MessageActionSheet> {
Navigator.pop(context); Navigator.pop(context);
}, },
), ),
if (widget.isCurrentUser &&
widget.message.status == MessageStatus.failed)
_ActionListTile(
leading: Icon(Symbols.refresh),
title: Text('resend'.tr()),
onTap: () {
widget.onAction!.call(MessageItemAction.resend);
Navigator.pop(context);
},
),
if (widget.isCurrentUser) if (widget.isCurrentUser)
_ActionListTile( _ActionListTile(
leading: Icon(Symbols.delete), leading: Icon(Symbols.delete),
@@ -1188,7 +1202,7 @@ class FileUploadProgressWidget extends StatelessWidget {
'fileUploadingProgress'.tr( 'fileUploadingProgress'.tr(
args: [ args: [
(entry.key + 1).toString(), (entry.key + 1).toString(),
entry.value.toStringAsFixed(1), (entry.value * 100).toStringAsFixed(1),
], ],
), ),
style: TextStyle( style: TextStyle(