show progress when sending messages
This commit is contained in:
@@ -217,7 +217,9 @@
|
|||||||
<div class="flex ml-auto space-x-1">
|
<div class="flex ml-auto space-x-1">
|
||||||
|
|
||||||
<!-- state label -->
|
<!-- 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 -->
|
<!-- delivered icon -->
|
||||||
<div v-if="chatItem.lxmf_message.state === 'delivered'" class="my-auto">
|
<div v-if="chatItem.lxmf_message.state === 'delivered'" class="my-auto">
|
||||||
|
|||||||
22
web.py
22
web.py
@@ -371,7 +371,11 @@ class ReticulumWebChat:
|
|||||||
# broadcast provided data to all connected websocket clients
|
# broadcast provided data to all connected websocket clients
|
||||||
async def websocket_broadcast(self, data):
|
async def websocket_broadcast(self, data):
|
||||||
for websocket_client in self.websocket_clients:
|
for websocket_client in self.websocket_clients:
|
||||||
await websocket_client.send_str(data)
|
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
|
# broadcasts config to all websocket clients
|
||||||
async def send_config_to_websocket_clients(self):
|
async def send_config_to_websocket_clients(self):
|
||||||
@@ -614,6 +618,22 @@ class ReticulumWebChat:
|
|||||||
"lxmf_message": self.convert_lxmf_message_to_dict(lxmf_message),
|
"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:
|
except:
|
||||||
# FIXME send error to websocket?
|
# FIXME send error to websocket?
|
||||||
print("failed to send lxmf message")
|
print("failed to send lxmf message")
|
||||||
|
|||||||
Reference in New Issue
Block a user