show message info when clicking inbound timestamp or outbound delivery state
This commit is contained in:
@@ -1074,6 +1074,7 @@ class ReticulumMeshChat:
|
|||||||
"is_incoming": db_lxmf_message.is_incoming,
|
"is_incoming": db_lxmf_message.is_incoming,
|
||||||
"state": db_lxmf_message.state,
|
"state": db_lxmf_message.state,
|
||||||
"progress": db_lxmf_message.progress,
|
"progress": db_lxmf_message.progress,
|
||||||
|
"method": db_lxmf_message.method,
|
||||||
"delivery_attempts": db_lxmf_message.delivery_attempts,
|
"delivery_attempts": db_lxmf_message.delivery_attempts,
|
||||||
"next_delivery_attempt_at": db_lxmf_message.next_delivery_attempt_at,
|
"next_delivery_attempt_at": db_lxmf_message.next_delivery_attempt_at,
|
||||||
"title": db_lxmf_message.title,
|
"title": db_lxmf_message.title,
|
||||||
|
|||||||
9
package-lock.json
generated
9
package-lock.json
generated
@@ -13,6 +13,7 @@
|
|||||||
"click-outside-vue3": "^4.0.1",
|
"click-outside-vue3": "^4.0.1",
|
||||||
"electron-prompt": "^1.7.0",
|
"electron-prompt": "^1.7.0",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
|
"moment": "^2.30.1",
|
||||||
"vis-data": "^7.1.9",
|
"vis-data": "^7.1.9",
|
||||||
"vis-network": "^9.1.9",
|
"vis-network": "^9.1.9",
|
||||||
"vite": "^5.4.0",
|
"vite": "^5.4.0",
|
||||||
@@ -3668,6 +3669,14 @@
|
|||||||
"node": ">=10"
|
"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": {
|
"node_modules/ms": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
|
|||||||
@@ -97,6 +97,7 @@
|
|||||||
"click-outside-vue3": "^4.0.1",
|
"click-outside-vue3": "^4.0.1",
|
||||||
"electron-prompt": "^1.7.0",
|
"electron-prompt": "^1.7.0",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
|
"moment": "^2.30.1",
|
||||||
"vis-data": "^7.1.9",
|
"vis-data": "^7.1.9",
|
||||||
"vis-network": "^9.1.9",
|
"vis-network": "^9.1.9",
|
||||||
"vite": "^5.4.0",
|
"vite": "^5.4.0",
|
||||||
|
|||||||
@@ -140,7 +140,7 @@
|
|||||||
|
|
||||||
<!-- state label -->
|
<!-- state label -->
|
||||||
<div class="my-auto space-x-1">
|
<div class="my-auto space-x-1">
|
||||||
<span>{{ chatItem.lxmf_message.state }}</span>
|
<span @click="showSentMessageInfo(chatItem.lxmf_message)" class="cursor-pointer">{{ chatItem.lxmf_message.state }}</span>
|
||||||
<span v-if="chatItem.lxmf_message.state === 'outbound' && chatItem.lxmf_message.delivery_attempts >= 1">(attempt {{ chatItem.lxmf_message.delivery_attempts + 1 }})</span>
|
<span v-if="chatItem.lxmf_message.state === 'outbound' && chatItem.lxmf_message.delivery_attempts >= 1">(attempt {{ chatItem.lxmf_message.delivery_attempts + 1 }})</span>
|
||||||
<span v-if="chatItem.lxmf_message.state === 'sending'">{{ chatItem.lxmf_message.progress.toFixed(0) }}%</span>
|
<span v-if="chatItem.lxmf_message.state === 'sending'">{{ chatItem.lxmf_message.progress.toFixed(0) }}%</span>
|
||||||
<a v-if="chatItem.lxmf_message.state === 'failed'" @click="retrySendingMessage(chatItem)" class="cursor-pointer underline text-blue-500">retry?</a>
|
<a v-if="chatItem.lxmf_message.state === 'failed'" @click="retrySendingMessage(chatItem)" class="cursor-pointer underline text-blue-500">retry?</a>
|
||||||
@@ -177,7 +177,7 @@
|
|||||||
<span v-if="chatItem.is_actions_expanded && chatItem.lxmf_message.quality && chatItem.lxmf_message.rssi && chatItem.lxmf_message.snr">Signal {{ chatItem.lxmf_message.quality }}% • RSSI {{ chatItem.lxmf_message.rssi }} • SNR {{ chatItem.lxmf_message.snr }}</span>
|
<span v-if="chatItem.is_actions_expanded && chatItem.lxmf_message.quality && chatItem.lxmf_message.rssi && chatItem.lxmf_message.snr">Signal {{ chatItem.lxmf_message.quality }}% • RSSI {{ chatItem.lxmf_message.rssi }} • SNR {{ chatItem.lxmf_message.snr }}</span>
|
||||||
|
|
||||||
<!-- received timestamp -->
|
<!-- received timestamp -->
|
||||||
<span>{{ formatSecondsAgo(chatItem.lxmf_message.timestamp) }}</span>
|
<span @click="showReceivedMessageInfo(chatItem.lxmf_message)" class="cursor-pointer">{{ formatSecondsAgo(chatItem.lxmf_message.timestamp) }}</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1175,6 +1175,19 @@ export default {
|
|||||||
this.$emit("reload-conversations");
|
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: {
|
computed: {
|
||||||
isMobile() {
|
isMobile() {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import moment from "moment";
|
||||||
|
|
||||||
class Utils {
|
class Utils {
|
||||||
|
|
||||||
static formatBytes(bytes) {
|
static formatBytes(bytes) {
|
||||||
@@ -84,6 +86,14 @@ class Utils {
|
|||||||
return `${paddedMinutes}:${paddedSeconds}`;
|
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) {
|
static arrayBufferToBase64(arrayBuffer) {
|
||||||
var binary = '';
|
var binary = '';
|
||||||
var bytes = new Uint8Array(arrayBuffer);
|
var bytes = new Uint8Array(arrayBuffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user