From 962e3566cb152ce9bbdb0b448ac1518ac1db9fb8 Mon Sep 17 00:00:00 2001 From: liamcottle Date: Thu, 19 Sep 2024 13:54:01 +1200 Subject: [PATCH] improve message state updating loop --- meshchat.py | 14 ++++++++++++-- .../components/messages/ConversationViewer.vue | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/meshchat.py b/meshchat.py index d795ca6..699e839 100644 --- a/meshchat.py +++ b/meshchat.py @@ -1989,9 +1989,10 @@ class ReticulumMeshChat: # updates lxmf message in database and broadcasts to websocket until it's delivered, or it fails async def handle_lxmf_message_progress(self, lxmf_message): - # FIXME: there's no register_progress_callback on the lxmf message, so manually send progress until delivered, sent or failed + # FIXME: there's no register_progress_callback on the lxmf message, so manually send progress until delivered, propagated or failed # we also can't use on_lxmf_sending_state_updated method to do this, because of async/await issues... - while lxmf_message.state != LXMF.LXMessage.DELIVERED and lxmf_message.state != LXMF.LXMessage.SENT and lxmf_message.state != LXMF.LXMessage.FAILED: + should_update_message = True + while should_update_message: # wait 1 second between sending updates await asyncio.sleep(1) @@ -2005,6 +2006,15 @@ class ReticulumMeshChat: "lxmf_message": self.convert_lxmf_message_to_dict(lxmf_message), })) + # check message state + has_delivered = lxmf_message.state == LXMF.LXMessage.DELIVERED + has_propagated = lxmf_message.state == LXMF.LXMessage.SENT and lxmf_message.method == LXMF.LXMessage.PROPAGATED + has_failed = lxmf_message.state == LXMF.LXMessage.FAILED + + # check if we should stop updating + if has_delivered or has_propagated or has_failed: + should_update_message = False + # handle an announce received from reticulum, for an audio call address # NOTE: cant be async, as Reticulum doesn't await it def on_audio_call_announce_received(self, aspect, destination_hash, announced_identity, app_data): diff --git a/src/frontend/components/messages/ConversationViewer.vue b/src/frontend/components/messages/ConversationViewer.vue index b6faae4..025f80b 100644 --- a/src/frontend/components/messages/ConversationViewer.vue +++ b/src/frontend/components/messages/ConversationViewer.vue @@ -142,6 +142,8 @@
{{ chatItem.lxmf_message.state }} (attempt {{ chatItem.lxmf_message.delivery_attempts + 1 }}) + (attempt {{ chatItem.lxmf_message.delivery_attempts }}) + to propagation node {{ chatItem.lxmf_message.progress.toFixed(0) }}% retry?