[CodeFactor] Apply fixes

This commit is contained in:
codefactor-io 2024-02-03 12:55:30 +00:00
parent 08c2b7809a
commit ba6f07407c
No known key found for this signature in database
GPG key ID: B66B2D63282C190F
17 changed files with 187 additions and 197 deletions

View file

@ -3,8 +3,6 @@ import chat_navbar from "./chat_navbar.vue";
import chat_conversations from "./chat_conversations.vue"; import chat_conversations from "./chat_conversations.vue";
import chat_messages from "./chat_messages.vue"; import chat_messages from "./chat_messages.vue";
import chat_new_message from "./chat_new_message.vue"; import chat_new_message from "./chat_new_message.vue";
</script> </script>
<template> <template>

View file

@ -6,13 +6,8 @@ setActivePinia(pinia);
import { useChatStore } from "../store/chatStore.js"; import { useChatStore } from "../store/chatStore.js";
import { getBeaconDataByCallsign } from "../js/api.js"; import { getBeaconDataByCallsign } from "../js/api.js";
const chat = useChatStore(pinia); const chat = useChatStore(pinia);
function chatSelected(callsign) { function chatSelected(callsign) {
chat.selectedCallsign = callsign.toUpperCase(); chat.selectedCallsign = callsign.toUpperCase();
// scroll message container to bottom // scroll message container to bottom
@ -22,28 +17,23 @@ function chatSelected(callsign) {
messageBody.scrollTop = messageBody.scrollHeight - messageBody.clientHeight; messageBody.scrollTop = messageBody.scrollHeight - messageBody.clientHeight;
} }
processBeaconData(callsign); processBeaconData(callsign);
} }
async function processBeaconData(callsign){ async function processBeaconData(callsign) {
// fetch beacon data when selecting a callsign // fetch beacon data when selecting a callsign
let beacons = await getBeaconDataByCallsign(callsign); let beacons = await getBeaconDataByCallsign(callsign);
chat.beaconLabelArray = beacons.map(entry => entry.timestamp); chat.beaconLabelArray = beacons.map((entry) => entry.timestamp);
chat.beaconDataArray = beacons.map(entry => entry.snr); chat.beaconDataArray = beacons.map((entry) => entry.snr);
} }
function getDateTime(timestamp) { function getDateTime(timestamp) {
let date = new Date(timestamp);
let date = new Date(timestamp); let hours = date.getHours().toString().padStart(2, "0");
let hours = date.getHours().toString().padStart(2, '0'); let minutes = date.getMinutes().toString().padStart(2, "0");
let minutes = date.getMinutes().toString().padStart(2, '0'); let seconds = date.getSeconds().toString().padStart(2, "0");
let seconds = date.getSeconds().toString().padStart(2, '0'); return `${hours}:${minutes}`;
return `${hours}:${minutes}`;
} }
</script> </script>
<template> <template>
<div <div
@ -51,8 +41,10 @@ function getDateTime(timestamp) {
id="chat-list-tab" id="chat-list-tab"
role="chat-tablist" role="chat-tablist"
> >
<template
<template v-for="(details, callsign, key) in chat.callsign_list" :key="callsign"> v-for="(details, callsign, key) in chat.callsign_list"
:key="callsign"
>
<a <a
class="list-group-item list-group-item-action list-group-item-secondary rounded-2 border-0 mb-2" class="list-group-item list-group-item-action list-group-item-secondary rounded-2 border-0 mb-2"
:class="{ active: key == 0 }" :class="{ active: key == 0 }"
@ -63,16 +55,14 @@ function getDateTime(timestamp) {
aria-controls="list-{{callsign}}-messages" aria-controls="list-{{callsign}}-messages"
@click="chatSelected(callsign)" @click="chatSelected(callsign)"
> >
<div class="row"> <div class="row">
<div class="col-9 text-truncate"> <div class="col-9 text-truncate">
<strong>{{ callsign }}</strong> <strong>{{ callsign }}</strong>
<br> <br />
<small> {{details.body}} </small> <small> {{ details.body }} </small>
</div> </div>
<div class="col-3"> <div class="col-3">
<small> {{getDateTime(details.timestamp)}} </small> <small> {{ getDateTime(details.timestamp) }} </small>
<button <button
class="btn btn-sm btn-outline-secondary ms-2 border-0" class="btn btn-sm btn-outline-secondary ms-2 border-0"
data-bs-target="#deleteChatModal" data-bs-target="#deleteChatModal"

View file

@ -16,16 +16,19 @@ var prevChatMessageDay = "";
function getDateTime(timestampRaw) { function getDateTime(timestampRaw) {
let date = new Date(timestampRaw); let date = new Date(timestampRaw);
let year = date.getFullYear(); let year = date.getFullYear();
let month = (date.getMonth() + 1).toString().padStart(2, '0'); // Months are zero-indexed let month = (date.getMonth() + 1).toString().padStart(2, "0"); // Months are zero-indexed
let day = date.getDate().toString().padStart(2, '0'); let day = date.getDate().toString().padStart(2, "0");
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
} }
</script> </script>
<template> <template>
<div class="tab-content" id="nav-tabContent-chat-messages"> <div class="tab-content" id="nav-tabContent-chat-messages">
<template v-for="(details, callsign, key) in chat.callsign_list" :key="callsign"> <template
v-for="(details, callsign, key) in chat.callsign_list"
:key="callsign"
>
<div <div
class="tab-pane fade show" class="tab-pane fade show"
:class="{ active: key == 0 }" :class="{ active: key == 0 }"
@ -33,25 +36,17 @@ function getDateTime(timestampRaw) {
role="tabpanel" role="tabpanel"
:aria-labelledby="`list-chat-list-${callsign}`" :aria-labelledby="`list-chat-list-${callsign}`"
> >
<template v-for="item in chat.sorted_chat_list[callsign]">
<template
v-for="item in chat.sorted_chat_list[callsign]"
>
<div v-if="prevChatMessageDay !== getDateTime(item.timestamp)"> <div v-if="prevChatMessageDay !== getDateTime(item.timestamp)">
<div class="separator my-2"> <div class="separator my-2">
{{ (prevChatMessageDay = getDateTime(item.timestamp)) }} {{ (prevChatMessageDay = getDateTime(item.timestamp)) }}
</div> </div>
</div> </div>
<div v-if="item.direction === 'transmit'"> <div v-if="item.direction === 'transmit'">
<sent-message :message="item" /> <sent-message :message="item" />
</div> </div>
<div v-else-if="item.direction === 'receive'"> <div v-else-if="item.direction === 'receive'">
<received-message :message="item" /> <received-message :message="item" />
</div> </div>

View file

@ -1,5 +1,4 @@
<template> <template>
<div class="row justify-content-start mb-2"> <div class="row justify-content-start mb-2">
<div :class="messageWidthClass"> <div :class="messageWidthClass">
<div class="card bg-light border-0 text-dark"> <div class="card bg-light border-0 text-dark">
@ -25,7 +24,7 @@
<!-- Delete button outside of the card --> <!-- Delete button outside of the card -->
<div class="col-auto"> <div class="col-auto">
<button <button
disabled disabled
class="btn btn-outline-secondary border-0 me-1" class="btn btn-outline-secondary border-0 me-1"
@click="showMessageInfo" @click="showMessageInfo"
data-bs-target="#messageInfoModal" data-bs-target="#messageInfoModal"
@ -35,7 +34,7 @@
</button> </button>
<button <button
disabled disabled
v-if="getFileContent['filesize'] !== 0" v-if="getFileContent['filesize'] !== 0"
class="btn btn-outline-secondary border-0 me-1" class="btn btn-outline-secondary border-0 me-1"
@click="downloadAttachment" @click="downloadAttachment"
@ -99,11 +98,10 @@ export default {
}, },
computed: { computed: {
getFileContent() { getFileContent() {
if (this.message.attachments.length <= 0) {
if(this.message.attachments.length <= 0){ return { filename: "", filesize: 0, filetype: "" };
return { filename: '', filesize: 0, filetype: '' };
} }
try { try {
var filename = Object.keys(this.message._attachments)[0]; var filename = Object.keys(this.message._attachments)[0];
var filesize = this.message._attachments[filename]["length"]; var filesize = this.message._attachments[filename]["length"];
@ -129,12 +127,11 @@ export default {
}, },
getDateTime() { getDateTime() {
let date = new Date(this.message.timestamp);
let date = new Date(this.message.timestamp); let hours = date.getHours().toString().padStart(2, "0");
let hours = date.getHours().toString().padStart(2, '0'); let minutes = date.getMinutes().toString().padStart(2, "0");
let minutes = date.getMinutes().toString().padStart(2, '0'); let seconds = date.getSeconds().toString().padStart(2, "0");
let seconds = date.getSeconds().toString().padStart(2, '0'); return `${hours}:${minutes}:${seconds}`;
return `${hours}:${minutes}:${seconds}`;
}, },
}, },
}; };

View file

@ -12,7 +12,7 @@
</button> </button>
<button <button
disabled disabled
class="btn btn-outline-secondary border-0 me-1" class="btn btn-outline-secondary border-0 me-1"
@click="repeatMessage" @click="repeatMessage"
> >
@ -20,7 +20,7 @@
</button> </button>
<button <button
disabled disabled
class="btn btn-outline-secondary border-0 me-1" class="btn btn-outline-secondary border-0 me-1"
@click="showMessageInfo" @click="showMessageInfo"
data-bs-target="#messageInfoModal" data-bs-target="#messageInfoModal"
@ -50,7 +50,9 @@
</div> </div>
<div class="card-footer p-0 bg-secondary border-top-0"> <div class="card-footer p-0 bg-secondary border-top-0">
<p class="text p-0 m-0 me-1 text-end">{{message.status}} | {{ getDateTime }}</p> <p class="text p-0 m-0 me-1 text-end">
{{ message.status }} | {{ getDateTime }}
</p>
<!-- Display formatted timestamp in card-footer --> <!-- Display formatted timestamp in card-footer -->
</div> </div>
@ -142,9 +144,8 @@ export default {
}, },
computed: { computed: {
getFileContent() { getFileContent() {
if (this.message.attachments.length <= 0) {
if(this.message.attachments.length <= 0){ return { filename: "", filesize: 0, filetype: "" };
return { filename: '', filesize: 0, filetype: '' };
} }
var filename = Object.keys(this.message._attachments)[0]; var filename = Object.keys(this.message._attachments)[0];
@ -175,12 +176,11 @@ export default {
}, },
getDateTime() { getDateTime() {
let date = new Date(this.message.timestamp);
let date = new Date(this.message.timestamp); let hours = date.getHours().toString().padStart(2, "0");
let hours = date.getHours().toString().padStart(2, '0'); let minutes = date.getMinutes().toString().padStart(2, "0");
let minutes = date.getMinutes().toString().padStart(2, '0'); let seconds = date.getSeconds().toString().padStart(2, "0");
let seconds = date.getSeconds().toString().padStart(2, '0'); return `${hours}:${minutes}:${seconds}`;
return `${hours}:${minutes}:${seconds}`;
}, },
}, },
}; };

View file

@ -112,7 +112,6 @@ function newChat() {
//updateAllChat(false); //updateAllChat(false);
this.newChatCall.value = ""; this.newChatCall.value = "";
} }
</script> </script>
<template> <template>
@ -121,14 +120,12 @@ function newChat() {
<div class="row w-100"> <div class="row w-100">
<div class="col-3 p-0"> <div class="col-3 p-0">
<button <button
class="btn btn-outline-primary w-100" class="btn btn-outline-primary w-100"
data-bs-target="#newChatModal" data-bs-target="#newChatModal"
data-bs-toggle="modal" data-bs-toggle="modal"
> >
<i class="bi bi-pencil-square"> Start a new chat</i> <i class="bi bi-pencil-square"> Start a new chat</i>
</button> </button>
</div> </div>
<div class="col-5 ms-2 p-0"> <div class="col-5 ms-2 p-0">
<!-- right side of chat nav bar--> <!-- right side of chat nav bar-->

View file

@ -20,9 +20,7 @@ import infoScreen from "./infoScreen.vue";
import main_modem_healthcheck from "./main_modem_healthcheck.vue"; import main_modem_healthcheck from "./main_modem_healthcheck.vue";
import Dynamic_components from "./dynamic_components.vue"; import Dynamic_components from "./dynamic_components.vue";
import { getFreedataMessages } from "../js/api" import { getFreedataMessages } from "../js/api";
</script> </script>
<template> <template>

View file

@ -28,12 +28,12 @@ function getDateTime(timestampRaw) {
} }
function getMaidenheadDistance(dxGrid) { function getMaidenheadDistance(dxGrid) {
if(typeof(dxGrid) != "undefined"){ if (typeof dxGrid != "undefined") {
try { try {
return parseInt(distance(settings.remote.STATION.mygrid, dxGrid)); return parseInt(distance(settings.remote.STATION.mygrid, dxGrid));
} catch (e) { } catch (e) {
console.warn(e); console.warn(e);
} }
} }
} }
</script> </script>

View file

@ -50,7 +50,7 @@ const state = useStateStore(pinia);
> >
<i class="bi bi-cpu" style="font-size: 0.8rem"></i> <i class="bi bi-cpu" style="font-size: 0.8rem"></i>
</button> </button>
<!-- <!--
<button <button
class="btn btn-sm btn-secondary me-1" class="btn btn-sm btn-secondary me-1"
id="arq_session" id="arq_session"
@ -70,7 +70,7 @@ const state = useStateStore(pinia);
<i class="bi bi-arrow-left-right" style="font-size: 0.8rem"></i> <i class="bi bi-arrow-left-right" style="font-size: 0.8rem"></i>
</button> </button>
--> -->
<!-- <!--
<button <button
class="btn btn-sm btn-secondary me-1" class="btn btn-sm btn-secondary me-1"
id="arq_state" id="arq_state"
@ -103,7 +103,7 @@ const state = useStateStore(pinia);
<i class="bi bi-usb-symbol" style="font-size: 0.8rem"></i> <i class="bi bi-usb-symbol" style="font-size: 0.8rem"></i>
</button> </button>
--> -->
<!-- <!--
<button <button
class="btn btn-sm btn-secondary disabled me-3" class="btn btn-sm btn-secondary disabled me-3"
type="button" type="button"

View file

@ -11,19 +11,18 @@ const chat = useChatStore(pinia);
import { settingsStore as settings, onChange } from "../store/settingsStore.js"; import { settingsStore as settings, onChange } from "../store/settingsStore.js";
import { sendModemTestFrame } from "../js/api"; import { sendModemTestFrame } from "../js/api";
import main_startup_check from "./main_startup_check.vue"; import main_startup_check from "./main_startup_check.vue";
import { newMessage, deleteCallsignFromDB } from '../js/messagesHandler.ts' import { newMessage, deleteCallsignFromDB } from "../js/messagesHandler.ts";
function newChat(){ function newChat() {
let newCallsign = chat.newChatCallsign.toUpperCase() let newCallsign = chat.newChatCallsign.toUpperCase();
newMessage(newCallsign, chat.newChatMessage) newMessage(newCallsign, chat.newChatMessage);
chat.newChatCallsign = '';
chat.newChatMessage = '';
chat.newChatCallsign = "";
chat.newChatMessage = "";
} }
function deleteChat() { function deleteChat() {
deleteCallsignFromDB(chat.selectedCallsign); deleteCallsignFromDB(chat.selectedCallsign);
} }
import { import {
@ -314,7 +313,7 @@ const transmissionSpeedChartDataMessageInfo = computed(() => ({
</div> </div>
</div> </div>
<div <div
class="modal fade" class="modal fade"
ref="modalEle" ref="modalEle"
id="newChatModal" id="newChatModal"
@ -335,28 +334,40 @@ const transmissionSpeedChartDataMessageInfo = computed(() => ({
></button> ></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="alert alert-info" role="alert">
1. Enter destination callsign
<br />
2. Enter a first message
<br />
3. Pressing "START NEW CHAT"
</div>
<div class="alert alert-info" role="alert"> <div class="form-floating mb-3">
1. Enter destination callsign <input
<br> type="text"
2. Enter a first message class="form-control"
<br> id="floatingInputDestination"
3. Pressing "START NEW CHAT" placeholder="dxcallsign / destination"
</div> maxlength="9"
style="text-transform: uppercase"
<div class="form-floating mb-3"> @keypress.enter="newChat()"
<input type="text" class="form-control" id="floatingInputDestination" placeholder="dxcallsign / destination" maxlength="9" v-model="chat.newChatCallsign"
style="text-transform: uppercase" @keypress.enter="newChat()" v-model="chat.newChatCallsign"> />
<label for="floatingInputDestination">dxcallsign / destination</label> <label for="floatingInputDestination"
</div> >dxcallsign / destination</label
>
<div class="form-floating"> </div>
<textarea class="form-control" placeholder="Your first message" id="floatingTextareaNewChatMessage" style="height: 100px" v-model="chat.newChatMessage"></textarea>
<label for="floatingTextareaNewChatMessage">First message</label>
</div>
<div class="form-floating">
<textarea
class="form-control"
placeholder="Your first message"
id="floatingTextareaNewChatMessage"
style="height: 100px"
v-model="chat.newChatMessage"
></textarea>
<label for="floatingTextareaNewChatMessage">First message</label>
</div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button <button
@ -367,22 +378,21 @@ const transmissionSpeedChartDataMessageInfo = computed(() => ({
Close Close
</button> </button>
<button <button
class="btn btn-sm btn-outline-success" class="btn btn-sm btn-outline-success"
id="createNewChatButton" id="createNewChatButton"
type="button" type="button"
data-bs-dismiss="modal" data-bs-dismiss="modal"
title="Start a new chat (enter dx call sign first)" title="Start a new chat (enter dx call sign first)"
@click="newChat()" @click="newChat()"
> >
START NEW CHAT START NEW CHAT
<i class="bi bi-pencil-square" style="font-size: 1.2rem"></i> <i class="bi bi-pencil-square" style="font-size: 1.2rem"></i>
</button> </button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- HELP MODALS AUDIO --> <!-- HELP MODALS AUDIO -->
<div <div
class="modal fade" class="modal fade"

View file

@ -34,7 +34,6 @@ onMounted(() => {
new Modal("#modemCheck", {}).show(); new Modal("#modemCheck", {}).show();
}); });
function getModemStateLocal() { function getModemStateLocal() {
// Returns active/inactive if modem is running for modem status label // Returns active/inactive if modem is running for modem status label
if (state.is_modem_running == true) return "Active"; if (state.is_modem_running == true) return "Active";
@ -165,7 +164,9 @@ function testHamlib() {
<div id="modemStatusCollapse" class="accordion-collapse collapse"> <div id="modemStatusCollapse" class="accordion-collapse collapse">
<div class="accordion-body"> <div class="accordion-body">
<div class="input-group input-group-sm mb-1"> <div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50">Manual modem restart</label> <label class="input-group-text w-50"
>Manual modem restart</label
>
<label class="input-group-text"> <label class="input-group-text">
<button <button
type="button" type="button"
@ -199,7 +200,6 @@ function testHamlib() {
<i class="bi bi-stop-fill"></i> <i class="bi bi-stop-fill"></i>
</button> </button>
</label> </label>
</div> </div>
<!-- Audio Input Device --> <!-- Audio Input Device -->
<div class="input-group input-group-sm mb-1"> <div class="input-group input-group-sm mb-1">

View file

@ -9,10 +9,9 @@ import {
validateCallsignWithoutSSID, validateCallsignWithoutSSID,
} from "../js/freedata"; } from "../js/freedata";
function validateCall() { function validateCall() {
//ensure callsign is uppercase:
//ensure callsign is uppercase: let call = settings.remote.STATION.mycall;
let call = settings.remote.STATION.mycall settings.remote.STATION.mycall = call.toUpperCase();
settings.remote.STATION.mycall = call.toUpperCase()
if (validateCallsignWithoutSSID(settings.remote.STATION.mycall)) if (validateCallsignWithoutSSID(settings.remote.STATION.mycall))
//Send new callsign to modem if valid //Send new callsign to modem if valid

View file

@ -4,9 +4,7 @@ import {
validateCallsignWithoutSSID, validateCallsignWithoutSSID,
} from "./freedata"; } from "./freedata";
import { import { processFreedataMessages } from "./messagesHandler";
processFreedataMessages
} from "./messagesHandler"
function buildURL(params, endpoint) { function buildURL(params, endpoint) {
const url = "http://" + params.host + ":" + params.port + endpoint; const url = "http://" + params.host + ":" + params.port + endpoint;
@ -152,9 +150,9 @@ export async function getRadioStatus() {
return await apiGet("/radio"); return await apiGet("/radio");
} }
export async function getFreedataMessages(){ export async function getFreedataMessages() {
let res = await apiGet("/freedata/messages") let res = await apiGet("/freedata/messages");
processFreedataMessages(res) processFreedataMessages(res);
} }
export async function sendFreedataMessage(destination, body) { export async function sendFreedataMessage(destination, body) {
@ -168,6 +166,6 @@ export async function deleteFreedataMessage(id) {
return await apiDelete(`/freedata/messages/${id}`); return await apiDelete(`/freedata/messages/${id}`);
} }
export async function getBeaconDataByCallsign(callsign){ export async function getBeaconDataByCallsign(callsign) {
return await apiGet(`/freedata/beacons/${callsign}`); return await apiGet(`/freedata/beacons/${callsign}`);
} }

View file

@ -8,8 +8,14 @@ import {
} from "./chatHandler"; } from "./chatHandler";
*/ */
import { displayToast } from "./popupHandler"; import { displayToast } from "./popupHandler";
import { getFreedataMessages, getConfig, getAudioDevices, getSerialDevices, getModemState } from "./api" import {
import { processFreedataMessages } from "./messagesHandler.ts" getFreedataMessages,
getConfig,
getAudioDevices,
getSerialDevices,
getModemState,
} from "./api";
import { processFreedataMessages } from "./messagesHandler.ts";
// ----------------- init pinia stores ------------- // ----------------- init pinia stores -------------
import { setActivePinia } from "pinia"; import { setActivePinia } from "pinia";
@ -64,11 +70,11 @@ export function eventDispatcher(data) {
return; return;
} }
switch (data["message-db"]) { switch (data["message-db"]) {
case "changed": case "changed":
console.log("fetching new messages...") console.log("fetching new messages...");
var messages = getFreedataMessages() var messages = getFreedataMessages();
processFreedataMessages(messages) processFreedataMessages(messages);
return; return;
} }
@ -299,4 +305,3 @@ function build_HSL() {
} }
stateStore.heard_stations.sort((a, b) => b.timestamp - a.timestamp); // b - a for reverse sort stateStore.heard_stations.sort((a, b) => b.timestamp - a.timestamp); // b - a for reverse sort
} }

View file

@ -65,7 +65,7 @@ export function sortByPropertyDesc(property) {
*/ */
export function validateCallsignWithSSID(callsign: string) { export function validateCallsignWithSSID(callsign: string) {
var patt = new RegExp("^[A-Z]+[0-9][A-Z]*-(1[0-5]|[0-9])$"); var patt = new RegExp("^[A-Z]+[0-9][A-Z]*-(1[0-5]|[0-9])$");
callsign = callsign callsign = callsign;
if ( if (
callsign === undefined || callsign === undefined ||
callsign === "" || callsign === "" ||

View file

@ -6,7 +6,7 @@ setActivePinia(pinia);
import { useChatStore } from "../store/chatStore.js"; import { useChatStore } from "../store/chatStore.js";
const chatStore = useChatStore(pinia); const chatStore = useChatStore(pinia);
import { sendFreedataMessage, deleteFreedataMessage } from "./api" import { sendFreedataMessage, deleteFreedataMessage } from "./api";
interface Message { interface Message {
id: string; id: string;
@ -20,36 +20,48 @@ interface Message {
statistics: any; statistics: any;
} }
export async function processFreedataMessages(data) {
export async function processFreedataMessages(data){ if (typeof data != "undefined") {
if(typeof(data) != "undefined"){ let jsondata = await JSON.parse(data);
let jsondata = await JSON.parse(data); chatStore.callsign_list = createCallsignListFromAPI(jsondata);
chatStore.callsign_list = createCallsignListFromAPI(jsondata) chatStore.sorted_chat_list = createSortedMessagesList(jsondata);
chatStore.sorted_chat_list = createSortedMessagesList(jsondata) }
}
} }
function createCallsignListFromAPI(data: { total_messages: number, messages: Message[] }): {[key: string]: {timestamp: string, body: string}} { function createCallsignListFromAPI(data: {
const callsignList: {[key: string]: {timestamp: string, body: string}} = {}; total_messages: number;
messages: Message[];
}): { [key: string]: { timestamp: string; body: string } } {
const callsignList: { [key: string]: { timestamp: string; body: string } } =
{};
data.messages.forEach(message => { data.messages.forEach((message) => {
let callsign = message.direction === 'receive' ? message.origin : message.destination; let callsign =
message.direction === "receive" ? message.origin : message.destination;
if (!callsignList[callsign] || callsignList[callsign].timestamp < message.timestamp) { if (
callsignList[callsign] = { timestamp: message.timestamp, body: message.body }; !callsignList[callsign] ||
callsignList[callsign].timestamp < message.timestamp
) {
callsignList[callsign] = {
timestamp: message.timestamp,
body: message.body,
};
} }
}); });
return callsignList; return callsignList;
} }
function createSortedMessagesList(data: {
total_messages: number;
messages: Message[];
}): { [key: string]: Message[] } {
const callsignMessages: { [key: string]: Message[] } = {};
data.messages.forEach((message) => {
function createSortedMessagesList(data: { total_messages: number, messages: Message[] }): {[key: string]: Message[]} { let callsign =
const callsignMessages: {[key: string]: Message[]} = {}; message.direction === "receive" ? message.origin : message.destination;
data.messages.forEach(message => {
let callsign = message.direction === 'receive' ? message.origin : message.destination;
if (!callsignMessages[callsign]) { if (!callsignMessages[callsign]) {
callsignMessages[callsign] = []; callsignMessages[callsign] = [];
@ -61,34 +73,29 @@ function createSortedMessagesList(data: { total_messages: number, messages: Mess
return callsignMessages; return callsignMessages;
} }
export function newMessage(dxcall, body) {
sendFreedataMessage(dxcall, body);
export function newMessage(dxcall, body){
sendFreedataMessage(dxcall, body)
} }
/* ------ TEMPORARY DUMMY FUNCTIONS --- */ /* ------ TEMPORARY DUMMY FUNCTIONS --- */
export function repeatMessageTransmission(id){ export function repeatMessageTransmission(id) {
return return;
} }
export function deleteCallsignFromDB(callsign){ export function deleteCallsignFromDB(callsign) {
for (var message of chatStore.sorted_chat_list[callsign]) { for (var message of chatStore.sorted_chat_list[callsign]) {
deleteFreedataMessage(message["id"]); deleteFreedataMessage(message["id"]);
} }
} }
export function deleteMessageFromDB(id){ export function deleteMessageFromDB(id) {
deleteFreedataMessage(id); deleteFreedataMessage(id);
} }
export function requestMessageInfo(id){ export function requestMessageInfo(id) {
return return;
} }
export function getMessageAttachment(id){ export function getMessageAttachment(id) {
return return;
} }

View file

@ -2,15 +2,12 @@ import { defineStore } from "pinia";
import { ref } from "vue"; import { ref } from "vue";
export const useChatStore = defineStore("chatStore", () => { export const useChatStore = defineStore("chatStore", () => {
var callsign_list = ref(); var callsign_list = ref();
var sorted_chat_list = ref(); var sorted_chat_list = ref();
var newChatCallsign = ref(); var newChatCallsign = ref();
var newChatMessage = ref(); var newChatMessage = ref();
/* ------------------------------------------------ */
/* ------------------------------------------------ */
var chat_filter = ref([ var chat_filter = ref([
{ type: "newchat" }, { type: "newchat" },
@ -56,7 +53,6 @@ export const useChatStore = defineStore("chatStore", () => {
var inputFileType = ref("-"); var inputFileType = ref("-");
var inputFileSize = ref("-"); var inputFileSize = ref("-");
var sorted_beacon_list = ref({}); var sorted_beacon_list = ref({});
var unsorted_beacon_list = ref({}); var unsorted_beacon_list = ref({});