diff --git a/meshchat.py b/meshchat.py index 19f136f..08c24a0 100644 --- a/meshchat.py +++ b/meshchat.py @@ -1074,6 +1074,7 @@ class ReticulumMeshChat: "is_incoming": db_lxmf_message.is_incoming, "state": db_lxmf_message.state, "progress": db_lxmf_message.progress, + "method": db_lxmf_message.method, "delivery_attempts": db_lxmf_message.delivery_attempts, "next_delivery_attempt_at": db_lxmf_message.next_delivery_attempt_at, "title": db_lxmf_message.title, diff --git a/package-lock.json b/package-lock.json index e081bab..3d8b71d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "click-outside-vue3": "^4.0.1", "electron-prompt": "^1.7.0", "mitt": "^3.0.1", + "moment": "^2.30.1", "vis-data": "^7.1.9", "vis-network": "^9.1.9", "vite": "^5.4.0", @@ -3668,6 +3669,14 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", diff --git a/package.json b/package.json index 70e47f5..d6fcaa2 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "click-outside-vue3": "^4.0.1", "electron-prompt": "^1.7.0", "mitt": "^3.0.1", + "moment": "^2.30.1", "vis-data": "^7.1.9", "vis-network": "^9.1.9", "vite": "^5.4.0", diff --git a/src/frontend/components/messages/ConversationViewer.vue b/src/frontend/components/messages/ConversationViewer.vue index 8ffb179..54a3034 100644 --- a/src/frontend/components/messages/ConversationViewer.vue +++ b/src/frontend/components/messages/ConversationViewer.vue @@ -140,7 +140,7 @@
- {{ chatItem.lxmf_message.state }} + {{ chatItem.lxmf_message.state }} (attempt {{ chatItem.lxmf_message.delivery_attempts + 1 }}) {{ chatItem.lxmf_message.progress.toFixed(0) }}% retry? @@ -177,7 +177,7 @@ Signal {{ chatItem.lxmf_message.quality }}% • RSSI {{ chatItem.lxmf_message.rssi }} • SNR {{ chatItem.lxmf_message.snr }} - {{ formatSecondsAgo(chatItem.lxmf_message.timestamp) }} + {{ formatSecondsAgo(chatItem.lxmf_message.timestamp) }}
@@ -1175,6 +1175,19 @@ export default { this.$emit("reload-conversations"); }, + showSentMessageInfo: function(lxmfMessage) { + DialogUtils.alert([ + `Created: ${Utils.convertDateTimeToLocalDateTimeString(new Date(lxmfMessage.created_at))}`, + `Method: ${lxmfMessage.method ?? "unknown"}`, + ].join("\n")); + }, + showReceivedMessageInfo: function(lxmfMessage) { + DialogUtils.alert([ + `Sent: ${Utils.convertUnixMillisToLocalDateTimeString(lxmfMessage.timestamp * 1000)}`, + `Received: ${Utils.convertDateTimeToLocalDateTimeString(new Date(lxmfMessage.created_at))}`, + `Method: ${lxmfMessage.method ?? "unknown"}`, + ].join("\n")); + }, }, computed: { isMobile() { diff --git a/src/frontend/js/Utils.js b/src/frontend/js/Utils.js index af11f13..17bba5e 100644 --- a/src/frontend/js/Utils.js +++ b/src/frontend/js/Utils.js @@ -1,3 +1,5 @@ +import moment from "moment"; + class Utils { static formatBytes(bytes) { @@ -84,6 +86,14 @@ class Utils { return `${paddedMinutes}:${paddedSeconds}`; } + static convertUnixMillisToLocalDateTimeString(unixTimestampInMilliseconds) { + return moment(unixTimestampInMilliseconds, "x").local().format('YYYY-MM-DD hh:mm A') + } + + static convertDateTimeToLocalDateTimeString(dateTime) { + return this.convertUnixMillisToLocalDateTimeString(dateTime.getTime()); + } + static arrayBufferToBase64(arrayBuffer) { var binary = ''; var bytes = new Uint8Array(arrayBuffer);