diff --git a/meshchatx/src/frontend/components/messages/ConversationViewer.vue b/meshchatx/src/frontend/components/messages/ConversationViewer.vue
index 993c636..fd09aaf 100644
--- a/meshchatx/src/frontend/components/messages/ConversationViewer.vue
+++ b/meshchatx/src/frontend/components/messages/ConversationViewer.vue
@@ -105,6 +105,16 @@
+
+
+
+
+
cancel?
retry? item.is_outbound && ["failed", "cancelled"].includes(item.lxmf_message?.state)
+ );
+ },
},
watch: {
selectedPeer: {
@@ -2845,6 +2863,24 @@ export default {
console.log(e);
}
},
+ async retryAllFailedOrCancelledMessages() {
+ const failedItems = this.selectedPeerChatItems.filter(
+ (item) => item.is_outbound && ["failed", "cancelled"].includes(item.lxmf_message?.state)
+ );
+ if (failedItems.length === 0) return;
+
+ if (
+ !(await DialogUtils.confirm(
+ `Are you sure you want to retry sending all ${failedItems.length} failed/cancelled messages?`
+ ))
+ ) {
+ return;
+ }
+
+ for (const item of failedItems) {
+ await this.retrySendingMessage(item);
+ }
+ },
async shareLocation() {
try {
if (!navigator.geolocation) {