diff --git a/public/index.html b/public/index.html
index ae7bfdc..9315aeb 100644
--- a/public/index.html
+++ b/public/index.html
@@ -208,7 +208,6 @@
-
@@ -218,6 +217,7 @@
+ delete?
{{ chatItem.lxmf_message.state }}
{{ chatItem.lxmf_message.progress }}%
@@ -744,6 +744,26 @@
// do nothing if failed to load messages
}
},
+ async deleteChatItem(chatItem) {
+ try {
+
+ // make sure it's an lxmf message
+ if(chatItem.type !== "lxmf_message"){
+ return;
+ }
+
+ // delete lxmf message from server
+ await window.axios.delete(`/api/v1/lxmf-messages/${chatItem.lxmf_message.id}`);
+
+ // remove lxmf message from chat items
+ this.chatItems = this.chatItems.filter((item) => {
+ return item.lxmf_message?.id !== chatItem.lxmf_message.id;
+ });
+
+ } catch(e) {
+ // do nothing if failed to delete message
+ }
+ },
addNewLine: function() {
this.newMessageText += "\n";
},
diff --git a/web.py b/web.py
index bb92c57..0144c86 100644
--- a/web.py
+++ b/web.py
@@ -188,6 +188,26 @@ class ReticulumWebChat:
"lxmf_messages": lxmf_messages,
})
+ # serve lxmf messages
+ @routes.delete("/api/v1/lxmf-messages/{id}")
+ async def index(request):
+
+ # get path params
+ id = request.match_info.get("id", None)
+
+ # source_hash is required
+ if id is None:
+ return web.json_response({
+ "message": "id is required",
+ }, status=422)
+
+ # delete lxmf messages from db where id matches
+ database.LxmfMessage.delete_by_id(id)
+
+ return web.json_response({
+ "message": "ok",
+ })
+
asyncio.get_event_loop().add_signal_handler(signal.SIGINT, lambda: exit(-1))
asyncio.get_event_loop().add_signal_handler(signal.SIGTERM, lambda: exit(-1))