show progress when sending messages
This commit is contained in:
@@ -217,7 +217,9 @@
|
||||
<div class="flex ml-auto space-x-1">
|
||||
|
||||
<!-- state label -->
|
||||
<div class="my-auto">{{ chatItem.lxmf_message.state }}</div>
|
||||
<div class="my-auto">
|
||||
{{ chatItem.lxmf_message.state }} <span v-if="chatItem.lxmf_message.state === 'sending'">{{ chatItem.lxmf_message.progress }}%</span>
|
||||
</div>
|
||||
|
||||
<!-- delivered icon -->
|
||||
<div v-if="chatItem.lxmf_message.state === 'delivered'" class="my-auto">
|
||||
|
||||
20
web.py
20
web.py
@@ -371,7 +371,11 @@ class ReticulumWebChat:
|
||||
# broadcast provided data to all connected websocket clients
|
||||
async def websocket_broadcast(self, data):
|
||||
for websocket_client in self.websocket_clients:
|
||||
try:
|
||||
await websocket_client.send_str(data)
|
||||
except:
|
||||
# do nothing if failed to broadcast to a specific websocket client
|
||||
pass
|
||||
|
||||
# broadcasts config to all websocket clients
|
||||
async def send_config_to_websocket_clients(self):
|
||||
@@ -614,6 +618,22 @@ class ReticulumWebChat:
|
||||
"lxmf_message": self.convert_lxmf_message_to_dict(lxmf_message),
|
||||
}))
|
||||
|
||||
# FIXME: there's no register_progress_callback on the lxmf message, so manually send progress until delivered 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.FAILED:
|
||||
|
||||
# wait 1 second between sending updates
|
||||
await asyncio.sleep(1)
|
||||
|
||||
# upsert lxmf message to database (as we want to update the progress in database too)
|
||||
self.db_upsert_lxmf_message(lxmf_message)
|
||||
|
||||
# send update to websocket clients
|
||||
await self.websocket_broadcast(json.dumps({
|
||||
"type": "lxmf_message_state_updated",
|
||||
"lxmf_message": self.convert_lxmf_message_to_dict(lxmf_message),
|
||||
}))
|
||||
|
||||
except:
|
||||
# FIXME send error to websocket?
|
||||
print("failed to send lxmf message")
|
||||
|
||||
Reference in New Issue
Block a user