From 8f308d9adc03000b91664c5f8627f0dd2966ff46 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 11 Jun 2023 10:40:01 -0400 Subject: [PATCH 01/17] Update config name for notifications --- gui/main.js | 2 +- gui/preload-chat.js | 2 +- gui/preload-main.js | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gui/main.js b/gui/main.js index a888601e..0a699244 100644 --- a/gui/main.js +++ b/gui/main.js @@ -101,7 +101,7 @@ const configDefaultSettings = "enable_auto_retry" : "False", \ "tx_delay" : 0, \ "auto_start": 0, \ - "notification": 1 \ + "enable_sys_notification": 1 \ }'; if (!fs.existsSync(configPath)) { diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 121f4faa..7506fbbf 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -2843,7 +2843,7 @@ function clearUnreadMessages(dxcall) { //Have the operating system show a notification popup function showOsPopUp(title, message) { - if (config.notification == 0) return; + if (config.enable_sys_notification == 0) return; const NOTIFICATION_TITLE = title; const NOTIFICATION_BODY = message; new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY }); diff --git a/gui/preload-main.js b/gui/preload-main.js index 4bc06253..df277654 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -390,7 +390,7 @@ window.addEventListener("DOMContentLoaded", () => { document.getElementById("AutoStartSwitch").checked = false; } - if (config.notification == 1) { + if (config.enable_sys_notification == 1) { document.getElementById("NotificationSwitch").checked = true; } else { document.getElementById("NotificationSwitch").checked = false; @@ -1222,9 +1222,9 @@ window.addEventListener("DOMContentLoaded", () => { //Handle change of Notification settings document.getElementById("NotificationSwitch").addEventListener("click", () => { if (document.getElementById("NotificationSwitch").checked == true) { - config.notification = 1; + config.enable_sys_notification = 1; } else { - config.notification = 0; + config.enable_sys_notification = 0; } //fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); FD.saveConfig(config, configPath); @@ -3806,7 +3806,7 @@ function autostart_tnc() { //Have the operating system show a notification popup function showOsPopUp(title, message) { - if (config.notification == 0) return; + if (config.enable_sys_notification == 0) return; const NOTIFICATION_TITLE = title; const NOTIFICATION_BODY = message; new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY }); From a65d2d52def511a16fa3813d98c95b17c0b89ee1 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Wed, 14 Jun 2023 18:03:10 -0400 Subject: [PATCH 02/17] Clean old beacons and compact DB. --- gui/preload-chat.js | 46 +++++++++++++++++++++++++++++++++++++--- gui/src/chat-module.html | 11 +++++++--- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 7506fbbf..deaf3568 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -165,7 +165,9 @@ window.addEventListener("DOMContentLoaded", () => { "user_info_website", "user_info_comments", ]; - + document.getElementById("btndbClean").addEventListener("click", () => { + dbClean(); + }); users .find({ selector: { @@ -819,7 +821,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); - // handle beacon + // handle ping-ack } else if (item.ping == "acknowledge") { obj.timestamp = parseInt(item.timestamp); obj.dxcallsign = item.dxcallsign; @@ -2847,4 +2849,42 @@ function showOsPopUp(title, message) const NOTIFICATION_TITLE = title; const NOTIFICATION_BODY = message; new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY }); -} \ No newline at end of file +} + +//Function to clean old beacons and optimize database +async function dbClean() +{ + //Only keep the most x latest days of beacons + let beaconKeep = 7; + let timestampPurge = Math.floor((Date.now()- beaconKeep * 24*60*60*1000) / 1000) ; + if (confirm("Delete beacons older than " + beaconKeep + " days and compact database?")) { + } else { + return; + } + + await db.find({ + selector: { + timestamp: {$lt: timestampPurge}, + type: "beacon", + } + }) + .then(async function (result) { + console.log("Purging " + result.docs.length + " beacons received before " + timestampPurge); + result.docs.forEach(async function (item) { + await db.get(item._id) + .then(async function (doc) { + await db.remove(doc) + }) + .catch(function (err) { + console.log(err); + }); + }); + }) + .catch(function (err) { + console.log(err); + }); + + //Compact database + await db.compact(); + window.alert("Database maintenance is complete."); +} diff --git a/gui/src/chat-module.html b/gui/src/chat-module.html index 3447b6e6..e2d8ba57 100644 --- a/gui/src/chat-module.html +++ b/gui/src/chat-module.html @@ -264,9 +264,14 @@ Help - - - +
  • + +
  • Date: Fri, 16 Jun 2023 22:52:33 -0400 Subject: [PATCH 03/17] Adjust 'new' items and change background of list with new items --- gui/preload-chat.js | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index deaf3568..b1c941b0 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -787,7 +787,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new = 1; + obj.new = 0; console.log(obj); add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); @@ -816,7 +816,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new = 1; + obj.new = 0; add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); @@ -836,7 +836,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new = 1; + obj.new = 0; add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); @@ -855,7 +855,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new = 1; + obj.new = 0; add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); @@ -896,7 +896,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=1; + obj.new=0; if (config.enable_request_profile == "True") { sendUserData(item.dxcallsign); } @@ -912,7 +912,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=1; + obj.new=0; if (config.enable_request_shared_folder == "True") { sendSharedFolderList(item.dxcallsign); } @@ -933,7 +933,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=1; + obj.new=0; if (config.enable_request_shared_folder == "True") { sendSharedFolderFile(item.dxcallsign, name); } @@ -949,7 +949,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=1; + obj.new=0; console.log(splitted_data); let userData = new Object(); userData.user_info_image = splitted_data[2]; @@ -978,7 +978,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=1; + obj.new=0; console.log(splitted_data); let userData = new Object(); @@ -1006,7 +1006,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = sharedFileInfo[0]; obj.filetype = "application/octet-stream"; obj.file = FD.btoa_FD(sharedFileInfo[1]); - obj.new=1; + obj.new=0; } else { console.log("no rule matched for handling received data!"); } @@ -1244,7 +1244,7 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp let clear = selected_callsign; clearUnreadMessages(clear); document.getElementById(`chat-${selected_callsign}-list-displaydxcall`).textContent=selected_callsign; - + document.getElementById(`chat-${selected_callsign}-list`).classList.remove("list-group-item-warning"); setTimeout(scrollMessagesToBottom, 200); //get user information @@ -1265,7 +1265,11 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp // short message document.getElementById("chat-" + dxcallsign + "-list-shortmsg").innerHTML = shortmsg; - if (obj.new==1) document.getElementById(`chat-${obj.dxcallsign}-list-displaydxcall`).textContent="*" +obj.dxcallsign; + if (obj.new==1) { + document.getElementById(`chat-${obj.dxcallsign}-list-displaydxcall`).textContent="*" +obj.dxcallsign; + document.getElementById(`chat-${dxcallsign}-list`).classList.add("list-group-item-warning"); + + } } // APPEND MESSAGES TO CALLSIGN @@ -1275,10 +1279,10 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp if (config.enable_auto_retry.toUpperCase() == "TRUE") { checkForWaitingMessages(obj.dxcallsign); } - if (obj.new == 1) - { - showOsPopUp("Ping from " + obj.dxcallsign,"You've been ping'd!"); - } + //if (obj.new == 1) + //{ + // showOsPopUp("Ping from " + obj.dxcallsign,"You've been ping'd!"); + //} var new_message = `

    snr: ${obj.snr} - ${timestamp}

    From 928da54325c7d9d1a683f843e5e0984678971a71 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 18 Jun 2023 14:53:07 -0400 Subject: [PATCH 04/17] Allow filtering on new messages --- gui/src/chat-module.html | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gui/src/chat-module.html b/gui/src/chat-module.html index e2d8ba57..b30c5bfa 100644 --- a/gui/src/chat-module.html +++ b/gui/src/chat-module.html @@ -161,7 +161,21 @@ id="chkMessage" /> +
    + +
    +
    + + +
    From cc65e05a0e855042e594ee6ac76d1f2016611124 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 18 Jun 2023 14:57:18 -0400 Subject: [PATCH 05/17] Sort chat call list alphabetically --- gui/preload-chat.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index b1c941b0..df2628f6 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -140,6 +140,7 @@ var chatFilter = [ { type: "ping-ack" }, { type: "broadcast_received" }, { type: "broadcast_transmit" }, + { type: "new"} //{ type: "request" }, //{ type: "response" }, @@ -218,9 +219,11 @@ window.addEventListener("DOMContentLoaded", () => { //Add event listener for filter apply button document.getElementById("btnFilter").addEventListener("click", () => { - chatFilter = [{ type: "newchat" }]; - if (document.getElementById("chkMessage").checked == true) + chatFilter.length=0; + if (document.getElementById("chkMessage").checked == true) { + chatFilter = [{ type: "newchat" }]; chatFilter.push({ type: "received" }, { type: "transmit" }); + } if (document.getElementById("chkPing").checked == true) chatFilter.push({ type: "ping" }); if (document.getElementById("chkPingAck").checked == true) @@ -231,6 +234,8 @@ window.addEventListener("DOMContentLoaded", () => { chatFilter.push({ type: "request" }); if (document.getElementById("chkResponse").checked == true) chatFilter.push({ type: "response" }); + if (document.getElementById("chkNewMessage").checked == true) + chatFilter.push({new:1}); updateAllChat(true); }); @@ -2200,7 +2205,10 @@ async function updateAllChat(clear) { await db .createIndex({ index: { - fields: [{ timestamp: "asc" }], + fields: [ + { dxcallsign:"asc" }, + { timestamp:"asc" }, + ], }, }) .then(async function (result) { @@ -2208,14 +2216,16 @@ async function updateAllChat(clear) { await db .find({ selector: { - $and: [{ timestamp: { $exists: true } }, { $or: chatFilter }], + $and: [ + {dxcallsign: { $exists: true } }, + {timestamp: { $exists: true } }, + { $or: chatFilter }] //$or: chatFilter }, sort: [ - { - timestamp: "asc", - }, - ], + { dxcallsign:"asc" }, + { timestamp: "asc" }, + ] }) .then(async function (result) { console.log(result); From 74ba4299156f3e8ab6c0a5a6b7f2d3e397250293 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 18 Jun 2023 20:33:12 -0400 Subject: [PATCH 06/17] Fix chat filter --- gui/preload-chat.js | 1 - 1 file changed, 1 deletion(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index df2628f6..0721ac2d 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -140,7 +140,6 @@ var chatFilter = [ { type: "ping-ack" }, { type: "broadcast_received" }, { type: "broadcast_transmit" }, - { type: "new"} //{ type: "request" }, //{ type: "response" }, From 1cb92af31132b188bb03eed075e2587453dd8dbd Mon Sep 17 00:00:00 2001 From: Mashintime Date: Mon, 19 Jun 2023 18:31:51 -0400 Subject: [PATCH 07/17] clearUnreadmsgs stopped doing what it's supposed to --- gui/preload-chat.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 0721ac2d..36972e5c 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -2833,21 +2833,27 @@ async function checkForNewMessages() function clearUnreadMessages(dxcall) { //console.log(dxcall); + //Selector of dxcall and new $eq: 1 isn't working, don't know why + //For now parse all messages of callsign to clear new flag db.find({ - selector: { - dxcallsign: dxcall, - new: {$eq: 1}, - } - }) + selector: //{ + //$and:[ + {dxcallsign:dxcall}//, {new: { $gte: 1}} + //] + // } +}) .then(function (result) { //console.log(result); //console.log ("New messages count to clear for " + dxcall + ": " + result.docs.length) result.docs.forEach(function (item) { - db.upsert(item._id, function (doc) { - doc.new=0; - //console.log("Clearing new on _id " + item._id); - return doc; - }); + if (item.new ==1) + { + db.upsert(item._id, function (doc) { + doc.new=0; + //console.log("Clearing new on _id " + item._id); + return doc; + }); + } }); }) .catch(function (err) { From ed7eb4762bbda7fa65ed0214c261d744f3e7716c Mon Sep 17 00:00:00 2001 From: Mashintime Date: Tue, 27 Jun 2023 16:43:52 -0400 Subject: [PATCH 08/17] Mark new broadcasts as new --- gui/preload-chat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 36972e5c..d12d1368 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -791,7 +791,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new = 0; + obj.new = 1; console.log(obj); add_obj_to_database(obj); update_chat_obj_by_uuid(obj.uuid); From fe549c5c65002e9ee64f99543cc5eff613651845 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sat, 1 Jul 2023 11:22:41 -0400 Subject: [PATCH 09/17] Bootstrap 5.3.0 and icons --- gui/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/package.json b/gui/package.json index b21f3ace..93cc1b98 100644 --- a/gui/package.json +++ b/gui/package.json @@ -32,8 +32,8 @@ "@electron/osx-sign": "^1.0.4", "@popperjs/core": "^2.11.6", "blob-util": "^2.0.2", - "bootstrap": "^5.3.0-alpha.3", - "bootstrap-icons": "^1.10.3", + "bootstrap": "^5.3.0", + "bootstrap-icons": "^1.10.5", "bootswatch": "^5.2.3", "browser-image-compression": "^2.0.0", "chart.js": "^4.2.1", From 6020ea9ce9477304ca538edfe14eaf1d166e5ad0 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sat, 1 Jul 2023 12:42:58 -0400 Subject: [PATCH 10/17] Add pings to database clean up --- gui/preload-chat.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index d12d1368..ad70f9b1 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -2875,20 +2875,30 @@ async function dbClean() { //Only keep the most x latest days of beacons let beaconKeep = 7; + let itemCount = 0; let timestampPurge = Math.floor((Date.now()- beaconKeep * 24*60*60*1000) / 1000) ; - if (confirm("Delete beacons older than " + beaconKeep + " days and compact database?")) { + if (confirm("Delete beacons and pings older than " + beaconKeep + " days and compact database?")) { } else { return; } + + //Items to purge from database + var purgeFilter = [ + { type: "beacon" }, + { type: "ping-ack" }, + { type: "ping" }, + ]; await db.find({ selector: { - timestamp: {$lt: timestampPurge}, - type: "beacon", + $and: [ + {timestamp: { $lt: timestampPurge } }, + { $or: purgeFilter }] } }) .then(async function (result) { - console.log("Purging " + result.docs.length + " beacons received before " + timestampPurge); + //console.log("Purging " + result.docs.length + " beacons received before " + timestampPurge); + itemCount=result.docs.length; result.docs.forEach(async function (item) { await db.get(item._id) .then(async function (doc) { @@ -2905,5 +2915,5 @@ async function dbClean() //Compact database await db.compact(); - window.alert("Database maintenance is complete."); + window.alert("Database maintenance is complete. " + itemCount + " items removed from database."); } From c0d65c3f9d80433d2020c62f2510aa121e9d858e Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sat, 1 Jul 2023 17:03:22 -0400 Subject: [PATCH 11/17] Move DB maint to settings/exp section --- gui/main.js | 5 +++++ gui/preload-chat.js | 6 +++++- gui/preload-main.js | 7 +++++++ gui/src/chat-module.html | 16 ++++++---------- gui/src/index.html | 6 ++++++ 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/gui/main.js b/gui/main.js index 0a699244..1901a5ac 100644 --- a/gui/main.js +++ b/gui/main.js @@ -476,6 +476,11 @@ ipcMain.on("request-update-unread-messages-main", (event,arg) => { //mainLog.info("Received reply from chat and ?new messages = " +arg); }); +//Called by main to notify chat we should clean the DB +ipcMain.on("request-clean-db", (event,arg) => { + chat.webContents.send("action-clean-db"); +}); + ipcMain.on("request-open-tnc-log", () => { logViewer.show(); }); diff --git a/gui/preload-chat.js b/gui/preload-chat.js index ad70f9b1..7e1693b3 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -2681,6 +2681,10 @@ ipcRenderer.on("action-update-unread-messages", (event) => { }); }); +ipcRenderer.on("action-clean-db", (event) => { + dbClean(); +}); + // https://stackoverflow.com/a/18650828 function formatBytes(bytes, decimals = 2) { if (!+bytes) return "0 Bytes"; @@ -2915,5 +2919,5 @@ async function dbClean() //Compact database await db.compact(); - window.alert("Database maintenance is complete. " + itemCount + " items removed from database."); + window.alert("Database maintenance is complete. " + itemCount + " items removed from database. It's recommended you now restart the GUI."); } diff --git a/gui/preload-main.js b/gui/preload-main.js index df277654..38d73a2f 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -1606,6 +1606,11 @@ window.addEventListener("DOMContentLoaded", () => { daemon.stopTNC(); }); +// btnCleanDB button clicked +document.getElementById("btnCleanDB").addEventListener("click", () => { + ipcRenderer.send("request-clean-db"); +}); + // TEST HAMLIB document.getElementById("testHamlib").addEventListener("click", () => { var data_bits = document.getElementById("hamlib_data_bits").value; @@ -1627,6 +1632,8 @@ window.addEventListener("DOMContentLoaded", () => { var radiocontrol = "rigctld"; } + + daemon.testHamlib( radiocontrol, deviceid, diff --git a/gui/src/chat-module.html b/gui/src/chat-module.html index b30c5bfa..ba116fcb 100644 --- a/gui/src/chat-module.html +++ b/gui/src/chat-module.html @@ -261,9 +261,13 @@ class="dropdown-item bg-danger text-white" id="delete_selected_chat" href="#" - >Delete chat + > +Delete chat +
  • -
  • - -
  • +
    + + +
    These options may From 202a54dcea0f3dd67227b11779f75c751c70dd16 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sat, 1 Jul 2023 17:07:02 -0400 Subject: [PATCH 12/17] Button no longer exists --- gui/preload-chat.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 7e1693b3..6a9f5db4 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -165,9 +165,6 @@ window.addEventListener("DOMContentLoaded", () => { "user_info_website", "user_info_comments", ]; - document.getElementById("btndbClean").addEventListener("click", () => { - dbClean(); - }); users .find({ selector: { From 1306bada1d16f7d155065b4252bbe866430aba8a Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sat, 1 Jul 2023 17:12:58 -0400 Subject: [PATCH 13/17] Fix CodeFactor issue --- gui/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/main.js b/gui/main.js index 1901a5ac..78ee9b6e 100644 --- a/gui/main.js +++ b/gui/main.js @@ -477,7 +477,7 @@ ipcMain.on("request-update-unread-messages-main", (event,arg) => { }); //Called by main to notify chat we should clean the DB -ipcMain.on("request-clean-db", (event,arg) => { +ipcMain.on("request-clean-db", () => { chat.webContents.send("action-clean-db"); }); From 2a38c9a1a2c848d38370d94e98ebf14628afbcc7 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 2 Jul 2023 08:35:36 -0400 Subject: [PATCH 14/17] Version bump --- gui/package.json | 2 +- tnc/static.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/package.json b/gui/package.json index 93cc1b98..c29c94da 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,6 +1,6 @@ { "name": "FreeDATA", - "version": "0.9.3-alpha.1", + "version": "0.9.3-alpha.2", "description": "FreeDATA ", "main": "main.js", "scripts": { diff --git a/tnc/static.py b/tnc/static.py index 445e902a..b0023156 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -125,7 +125,7 @@ class TCIParam: @dataclass class TNC: - version = "0.9.3-alpha.1" + version = "0.9.3-alpha.2" host: str = "0.0.0.0" port: int = 3000 SOCKET_TIMEOUT: int = 1 # seconds From f0d7685a965da42d540a3f9c9ba2e139c0d920d7 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 2 Jul 2023 09:43:13 -0400 Subject: [PATCH 15/17] Fix prettier action --- .github/workflows/prettier.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prettier.yaml b/.github/workflows/prettier.yaml index 2cfea21b..a42c1f8a 100644 --- a/.github/workflows/prettier.yaml +++ b/.github/workflows/prettier.yaml @@ -4,7 +4,7 @@ name: Prettier on: push: branches: - - master + - main jobs: prettier: From 95be2f339c207de3241a18bded951ec1508ebd5f Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 2 Jul 2023 13:43:54 +0000 Subject: [PATCH 16/17] Prettified Code! --- gui/main.js | 8 +- gui/preload-chat.js | 308 +++++++++++++++++++-------------------- gui/preload-main.js | 68 ++++----- gui/src/chat-module.html | 23 ++- gui/src/index.html | 12 +- 5 files changed, 206 insertions(+), 213 deletions(-) diff --git a/gui/main.js b/gui/main.js index 78ee9b6e..28b86514 100644 --- a/gui/main.js +++ b/gui/main.js @@ -461,18 +461,16 @@ ipcMain.on("request-update-transmission-status", (event, arg) => { ipcMain.on("request-update-reception-status", (event, arg) => { win.webContents.send("action-update-reception-status", arg); chat.webContents.send("action-update-reception-status", arg); - }); //Called by main to query chat if there are new messages -ipcMain.on("request-update-unread-messages",() => { +ipcMain.on("request-update-unread-messages", () => { //mainLog.info("Got request to check if chat has new messages") chat.webContents.send("action-update-unread-messages"); - }); //Called by chat to notify main if there are new messages -ipcMain.on("request-update-unread-messages-main", (event,arg) => { - win.webContents.send("action-update-unread-messages-main",arg); +ipcMain.on("request-update-unread-messages-main", (event, arg) => { + win.webContents.send("action-update-unread-messages-main", arg); //mainLog.info("Received reply from chat and ?new messages = " +arg); }); diff --git a/gui/preload-chat.js b/gui/preload-chat.js index 6a9f5db4..f437f5cd 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -215,7 +215,7 @@ window.addEventListener("DOMContentLoaded", () => { //Add event listener for filter apply button document.getElementById("btnFilter").addEventListener("click", () => { - chatFilter.length=0; + chatFilter.length = 0; if (document.getElementById("chkMessage").checked == true) { chatFilter = [{ type: "newchat" }]; chatFilter.push({ type: "received" }, { type: "transmit" }); @@ -231,7 +231,7 @@ window.addEventListener("DOMContentLoaded", () => { if (document.getElementById("chkResponse").checked == true) chatFilter.push({ type: "response" }); if (document.getElementById("chkNewMessage").checked == true) - chatFilter.push({new:1}); + chatFilter.push({ new: 1 }); updateAllChat(true); }); @@ -667,21 +667,21 @@ ipcRenderer.on("return-select-user-image", (event, arg) => { ipcRenderer.on("action-update-reception-status", (event, arg) => { var data = arg["data"][0]; - document.getElementById("txtConnectedWithChat").textContent = data.dxcallsign; + document.getElementById("txtConnectedWithChat").textContent = data.dxcallsign; }); ipcRenderer.on("action-clear-reception-status", (event) => { - //Clear connected with textbox - let cwc = document.getElementById("txtConnectedWithChat"); - if (cwc.textContent != "------") { - cwc.textContent = "------"; - //console.log("Reseting connected with"); - } + //Clear connected with textbox + let cwc = document.getElementById("txtConnectedWithChat"); + if (cwc.textContent != "------") { + cwc.textContent = "------"; + //console.log("Reseting connected with"); + } }); ipcRenderer.on("action-update-transmission-status", (event, arg) => { var data = arg["data"][0]; - document.getElementById("txtConnectedWithChat").textContent = data.dxcallsign; + document.getElementById("txtConnectedWithChat").textContent = data.dxcallsign; console.log(data.status); if (data.uuid !== "no-uuid") { @@ -884,7 +884,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filetype = splitted_data[7]; //obj.file = btoa(splitted_data[8]); obj.file = FD.btoa_FD(splitted_data[8]); - obj.new=1; + obj.new = 1; } else if (splitted_data[1] == "req" && splitted_data[2] == "0") { obj.uuid = uuidv4().toString(); obj.timestamp = Math.floor(Date.now() / 1000); @@ -897,7 +897,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=0; + obj.new = 0; if (config.enable_request_profile == "True") { sendUserData(item.dxcallsign); } @@ -913,7 +913,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=0; + obj.new = 0; if (config.enable_request_shared_folder == "True") { sendSharedFolderList(item.dxcallsign); } @@ -934,7 +934,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=0; + obj.new = 0; if (config.enable_request_shared_folder == "True") { sendSharedFolderFile(item.dxcallsign, name); } @@ -950,7 +950,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=0; + obj.new = 0; console.log(splitted_data); let userData = new Object(); userData.user_info_image = splitted_data[2]; @@ -979,7 +979,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = "null"; obj.filetype = "null"; obj.file = "null"; - obj.new=0; + obj.new = 0; console.log(splitted_data); let userData = new Object(); @@ -1007,7 +1007,7 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => { obj.filename = sharedFileInfo[0]; obj.filetype = "application/octet-stream"; obj.file = FD.btoa_FD(sharedFileInfo[1]); - obj.new=0; + obj.new = 0; } else { console.log("no rule matched for handling received data!"); } @@ -1046,31 +1046,30 @@ update_chat = function (obj) { var attempt = obj.attempt; } -// add percent and bytes per minute if not existing -//console.log(obj.percent) -if (typeof obj.percent == "undefined") { - obj.percent = 0; - obj.bytesperminute = 0; - } + // add percent and bytes per minute if not existing + //console.log(obj.percent) + if (typeof obj.percent == "undefined") { + obj.percent = 0; + obj.bytesperminute = 0; + } // check if wrong status message -if (obj.status == "transmit" && obj.percent == 0) { -var TimeDifference = (new Date().getTime()/1000) - obj.timestamp - if (TimeDifference > 3600){ - db.upsert(obj._id, function (doc) { - if (!doc.status) { - doc.status = "failed"; - } - return doc; - }); - obj.status = "failed"; - + if (obj.status == "transmit" && obj.percent == 0) { + var TimeDifference = new Date().getTime() / 1000 - obj.timestamp; + if (TimeDifference > 3600) { + db.upsert(obj._id, function (doc) { + if (!doc.status) { + doc.status = "failed"; + } + return doc; + }); + obj.status = "failed"; } -} - if (typeof obj.new == "undefined"){ - obj.new=0; } - + if (typeof obj.new == "undefined") { + obj.new = 0; + } + if (typeof config.max_retry_attempts == "undefined") { var max_retry_attempts = 3; } else { @@ -1244,8 +1243,12 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp //Reset unread messages and new message indicator let clear = selected_callsign; clearUnreadMessages(clear); - document.getElementById(`chat-${selected_callsign}-list-displaydxcall`).textContent=selected_callsign; - document.getElementById(`chat-${selected_callsign}-list`).classList.remove("list-group-item-warning"); + document.getElementById( + `chat-${selected_callsign}-list-displaydxcall` + ).textContent = selected_callsign; + document + .getElementById(`chat-${selected_callsign}-list`) + .classList.remove("list-group-item-warning"); setTimeout(scrollMessagesToBottom, 200); //get user information @@ -1266,11 +1269,14 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp // short message document.getElementById("chat-" + dxcallsign + "-list-shortmsg").innerHTML = shortmsg; - if (obj.new==1) { - document.getElementById(`chat-${obj.dxcallsign}-list-displaydxcall`).textContent="*" +obj.dxcallsign; - document.getElementById(`chat-${dxcallsign}-list`).classList.add("list-group-item-warning"); - - } + if (obj.new == 1) { + document.getElementById( + `chat-${obj.dxcallsign}-list-displaydxcall` + ).textContent = "*" + obj.dxcallsign; + document + .getElementById(`chat-${dxcallsign}-list`) + .classList.add("list-group-item-warning"); + } } // APPEND MESSAGES TO CALLSIGN @@ -1334,11 +1340,10 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp var message_html = obj.msg.replaceAll(/\n/g, "
    "); if (obj.type == "received") { - if (obj.new == 1) - { - showOsPopUp("Message received from " + obj.dxcallsign,obj.msg); + if (obj.new == 1) { + showOsPopUp("Message received from " + obj.dxcallsign, obj.msg); } - + var new_message = `
    @@ -1449,8 +1454,6 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp //console.log("Low graphics enabled for chat module"); } - - var new_message = `
    ${controlarea_transmit} @@ -1485,10 +1488,8 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp obj.percent }" aria-valuemin="0" aria-valuemax="100">

    ${percent_value} % - ${ - obj.bytesperminute - } Bpm

    + obj._id + }-progress-information">${percent_value} % - ${obj.bytesperminute} Bpm

    @@ -1505,11 +1506,8 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp //console.log("element already exists......"); //console.log(obj); - // console.log(obj.status) - // console.log(obj.attempt) - - - + // console.log(obj.status) + // console.log(obj.attempt) if ( !obj.status == "broadcast_transmit" || @@ -1532,40 +1530,33 @@ var TimeDifference = (new Date().getTime()/1000) - obj.timestamp obj.attempt + "/" + max_retry_attempts; } - if (obj.status == "transmit") { - - document.getElementById("msg-" + obj._id + "-status").innerHTML = + document.getElementById("msg-" + obj._id + "-status").innerHTML = get_icon_for_state(obj.status); -if (typeof obj.percent !== "undefined") { - document - .getElementById("msg-" + obj._id + "-progress") - .setAttribute("aria-valuenow", obj.percent); - document - .getElementById("msg-" + obj._id + "-progress") - .setAttribute("style", "width:" + obj.percent + "%;"); - document.getElementById( - "msg-" + obj._id + "-progress-information" - ).innerHTML = obj.percent + "% - " + obj.bytesperminute + " Bpm"; + if (typeof obj.percent !== "undefined") { + document + .getElementById("msg-" + obj._id + "-progress") + .setAttribute("aria-valuenow", obj.percent); + document + .getElementById("msg-" + obj._id + "-progress") + .setAttribute("style", "width:" + obj.percent + "%;"); + document.getElementById( + "msg-" + obj._id + "-progress-information" + ).innerHTML = obj.percent + "% - " + obj.bytesperminute + " Bpm"; + } else { + document + .getElementById("msg-" + obj._id + "-progress") + .setAttribute("aria-valuenow", 0); + document + .getElementById("msg-" + obj._id + "-progress") + .setAttribute("style", "width:0%;"); + document.getElementById( + "msg-" + obj._id + "-progress-information" + ).innerHTML = "0% - 0 Bpm"; + } - } else { - document - .getElementById("msg-" + obj._id + "-progress") - .setAttribute("aria-valuenow", 0); - document - .getElementById("msg-" + obj._id + "-progress") - .setAttribute("style", "width:0%;"); - document.getElementById( - "msg-" + obj._id + "-progress-information" - ).innerHTML = "0% - 0 Bpm"; - - } - - - - - document.getElementById("msg-" + obj._id + "-attempts").innerHTML = + document.getElementById("msg-" + obj._id + "-attempts").innerHTML = obj.attempt + "/" + max_retry_attempts; } @@ -1609,15 +1600,13 @@ if (typeof obj.percent !== "undefined") { .getElementById("msg-" + obj._id + "-progress") .classList.add("bg-danger"); - console.log(document - .getElementById("msg-" + obj._id + "-progress") - .classList) + console.log( + document.getElementById("msg-" + obj._id + "-progress").classList + ); document.getElementById( "msg-" + obj._id + "-progress-information" ).innerHTML = "TRANSMISSION FAILED - " + obj.bytesperminute + " Bpm"; - - } //document.getElementById(id).className = message_class; @@ -2201,10 +2190,7 @@ async function updateAllChat(clear) { await db .createIndex({ index: { - fields: [ - { dxcallsign:"asc" }, - { timestamp:"asc" }, - ], + fields: [{ dxcallsign: "asc" }, { timestamp: "asc" }], }, }) .then(async function (result) { @@ -2212,16 +2198,14 @@ async function updateAllChat(clear) { await db .find({ selector: { - $and: [ - {dxcallsign: { $exists: true } }, - {timestamp: { $exists: true } }, - { $or: chatFilter }] + $and: [ + { dxcallsign: { $exists: true } }, + { timestamp: { $exists: true } }, + { $or: chatFilter }, + ], //$or: chatFilter }, - sort: [ - { dxcallsign:"asc" }, - { timestamp: "asc" }, - ] + sort: [{ dxcallsign: "asc" }, { timestamp: "asc" }], }) .then(async function (result) { console.log(result); @@ -2284,7 +2268,6 @@ function getSetUserSharedFolder(selected_callsign) { .then(function (data) { console.log(data); - if (typeof data.user_shared_folder !== "undefined") { console.log(data.user_shared_folder); // shared folder table @@ -2673,8 +2656,8 @@ ipcRenderer.on("update-config", (event, data) => { }); ipcRenderer.on("action-update-unread-messages", (event) => { - checkForNewMessages().then(function(count) { - ipcRenderer.send("request-update-unread-messages-main",count); + checkForNewMessages().then(function (count) { + ipcRenderer.send("request-update-unread-messages-main", count); }); }); @@ -2812,24 +2795,23 @@ function checkForWaitingMessages(dxcall) { }); } -async function checkForNewMessages() -{ +async function checkForNewMessages() { var newmsgs; - await db.find({ - selector: { - new: {$eq: 1}, - }, limit:1, - }) + await db + .find({ + selector: { + new: { $eq: 1 }, + }, + limit: 1, + }) .then(function (result) { - if (result.docs.length >0) - newmsgs=true; - else - newmsgs=false; + if (result.docs.length > 0) newmsgs = true; + else newmsgs = false; }) .catch(function (err) { console.log(err); }); - return newmsgs; + return newmsgs; } function clearUnreadMessages(dxcall) { @@ -2837,25 +2819,25 @@ function clearUnreadMessages(dxcall) { //Selector of dxcall and new $eq: 1 isn't working, don't know why //For now parse all messages of callsign to clear new flag db.find({ - selector: //{ + //{ + selector: //$and:[ - {dxcallsign:dxcall}//, {new: { $gte: 1}} - //] - // } -}) + { dxcallsign: dxcall }, //, {new: { $gte: 1}} + //] + // } + }) .then(function (result) { //console.log(result); //console.log ("New messages count to clear for " + dxcall + ": " + result.docs.length) - result.docs.forEach(function (item) { - if (item.new ==1) - { - db.upsert(item._id, function (doc) { - doc.new=0; - //console.log("Clearing new on _id " + item._id); - return doc; - }); - } - }); + result.docs.forEach(function (item) { + if (item.new == 1) { + db.upsert(item._id, function (doc) { + doc.new = 0; + //console.log("Clearing new on _id " + item._id); + return doc; + }); + } + }); }) .catch(function (err) { console.log(err); @@ -2863,8 +2845,7 @@ function clearUnreadMessages(dxcall) { } //Have the operating system show a notification popup -function showOsPopUp(title, message) -{ +function showOsPopUp(title, message) { if (config.enable_sys_notification == 0) return; const NOTIFICATION_TITLE = title; const NOTIFICATION_BODY = message; @@ -2872,13 +2853,20 @@ function showOsPopUp(title, message) } //Function to clean old beacons and optimize database -async function dbClean() -{ +async function dbClean() { //Only keep the most x latest days of beacons let beaconKeep = 7; let itemCount = 0; - let timestampPurge = Math.floor((Date.now()- beaconKeep * 24*60*60*1000) / 1000) ; - if (confirm("Delete beacons and pings older than " + beaconKeep + " days and compact database?")) { + let timestampPurge = Math.floor( + (Date.now() - beaconKeep * 24 * 60 * 60 * 1000) / 1000 + ); + if ( + confirm( + "Delete beacons and pings older than " + + beaconKeep + + " days and compact database?" + ) + ) { } else { return; } @@ -2889,32 +2877,36 @@ async function dbClean() { type: "ping-ack" }, { type: "ping" }, ]; - - await db.find({ - selector: { - $and: [ - {timestamp: { $lt: timestampPurge } }, - { $or: purgeFilter }] - } - }) + + await db + .find({ + selector: { + $and: [{ timestamp: { $lt: timestampPurge } }, { $or: purgeFilter }], + }, + }) .then(async function (result) { //console.log("Purging " + result.docs.length + " beacons received before " + timestampPurge); - itemCount=result.docs.length; + itemCount = result.docs.length; result.docs.forEach(async function (item) { - await db.get(item._id) + await db + .get(item._id) .then(async function (doc) { - await db.remove(doc) + await db.remove(doc); }) .catch(function (err) { console.log(err); }); - }); + }); }) .catch(function (err) { console.log(err); }); - //Compact database - await db.compact(); - window.alert("Database maintenance is complete. " + itemCount + " items removed from database. It's recommended you now restart the GUI."); + //Compact database + await db.compact(); + window.alert( + "Database maintenance is complete. " + + itemCount + + " items removed from database. It's recommended you now restart the GUI." + ); } diff --git a/gui/preload-main.js b/gui/preload-main.js index 38d73a2f..caa8cf2b 100644 --- a/gui/preload-main.js +++ b/gui/preload-main.js @@ -71,10 +71,10 @@ var noise_level_raw = 0; //Global version variable var appVer = null; - //Track the number of times TNC has been started - //So that warning is shown when using auto start and 2nd start - //if hamlib is not running - var tncStartCount = 0; +//Track the number of times TNC has been started +//So that warning is shown when using auto start and 2nd start +//if hamlib is not running +var tncStartCount = 0; // START INTERVALL COMMAND EXECUTION FOR STATES //setInterval(sock.getRxBuffer, 1000); @@ -1219,8 +1219,10 @@ window.addEventListener("DOMContentLoaded", () => { FD.saveConfig(config, configPath); }); - //Handle change of Notification settings - document.getElementById("NotificationSwitch").addEventListener("click", () => { + //Handle change of Notification settings + document + .getElementById("NotificationSwitch") + .addEventListener("click", () => { if (document.getElementById("NotificationSwitch").checked == true) { config.enable_sys_notification = 1; } else { @@ -1606,10 +1608,10 @@ window.addEventListener("DOMContentLoaded", () => { daemon.stopTNC(); }); -// btnCleanDB button clicked -document.getElementById("btnCleanDB").addEventListener("click", () => { - ipcRenderer.send("request-clean-db"); -}); + // btnCleanDB button clicked + document.getElementById("btnCleanDB").addEventListener("click", () => { + ipcRenderer.send("request-clean-db"); + }); // TEST HAMLIB document.getElementById("testHamlib").addEventListener("click", () => { @@ -1632,8 +1634,6 @@ document.getElementById("btnCleanDB").addEventListener("click", () => { var radiocontrol = "rigctld"; } - - daemon.testHamlib( radiocontrol, deviceid, @@ -1958,14 +1958,14 @@ function signal_quality_perc_quad(rssi, perfect_rssi = 10, worst_rssi = -150) { } var lastHeard = ""; -var checkForNewMessageWait=85; +var checkForNewMessageWait = 85; ipcRenderer.on("action-update-tnc-state", (event, arg) => { //check for new messages - if (checkForNewMessageWait >= 100){ + if (checkForNewMessageWait >= 100) { //This is very expensive ipcRenderer.send("request-update-unread-messages"); - checkForNewMessageWait=-1; + checkForNewMessageWait = -1; } checkForNewMessageWait++; // update FFT @@ -2439,15 +2439,16 @@ function updateHeardStations(arg) { timestampRaw = arg.stations[i]["timestamp"]; var datetime = new Date(timestampRaw * 1000).toLocaleString( - navigator.language,{ - hourCycle: 'h23', + navigator.language, + { + hourCycle: "h23", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", - second: "2-digit" - } + second: "2-digit", + } ); //var hours = date.getHours(); //var minutes = "0" + date.getMinutes(); @@ -2770,7 +2771,7 @@ ipcRenderer.on("action-update-tnc-connection", (event, arg) => { set_CPU_mode(); //GUI will auto connect to TNC if already running, if that is the case increment start count if 0 - if (tncStartCount==0) tncStartCount++; + if (tncStartCount == 0) tncStartCount++; } else { /* document.getElementById('hamlib_deviceid').disabled = false; @@ -2925,21 +2926,17 @@ ipcRenderer.on("run-tnc-command-fec-iswriting", (event) => { }); //Change background color of RF Chat button if new messages are available -ipcRenderer.on("action-update-unread-messages-main", (event,data) => { +ipcRenderer.on("action-update-unread-messages-main", (event, data) => { //Do something - if (data == true) - { - document.getElementById("openRFChat").classList.add("btn-warning") - document.getElementById("openRFChat").classList.remove("btn-secondary") - } - else - { - document.getElementById("openRFChat").classList.remove("btn-warning") - document.getElementById("openRFChat").classList.add("btn-secondary") + if (data == true) { + document.getElementById("openRFChat").classList.add("btn-warning"); + document.getElementById("openRFChat").classList.remove("btn-secondary"); + } else { + document.getElementById("openRFChat").classList.remove("btn-warning"); + document.getElementById("openRFChat").classList.add("btn-secondary"); } }); - ipcRenderer.on("run-tnc-command", (event, arg) => { if (arg.command == "save_my_call") { sock.saveMyCall(arg.callsign); @@ -3121,7 +3118,7 @@ ipcRenderer.on("action-show-cq-toast-received", (event, data) => { let dxcallsign = data["data"][0]["dxcallsign"]; let dxgrid = data["data"][0]["dxgrid"]; let content = `cq from ${dxcallsign} (${dxgrid})`; - showOsPopUp("CQ from " + dxcallsign,"Say hello!"); + showOsPopUp("CQ from " + dxcallsign, "Say hello!"); displayToast( (type = "success"), (icon = "bi-broadcast"), @@ -3807,14 +3804,13 @@ function autostart_tnc() { if (config.auto_start == 1) { //Now start TNC document.getElementById("startTNC").click(); -} + } } //Have the operating system show a notification popup -function showOsPopUp(title, message) -{ +function showOsPopUp(title, message) { if (config.enable_sys_notification == 0) return; const NOTIFICATION_TITLE = title; const NOTIFICATION_BODY = message; new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY }); -} \ No newline at end of file +} diff --git a/gui/src/chat-module.html b/gui/src/chat-module.html index ba116fcb..54eee4d6 100644 --- a/gui/src/chat-module.html +++ b/gui/src/chat-module.html @@ -173,7 +173,7 @@ class="form-check-input" id="chkNewMessage" /> - + @@ -261,11 +261,9 @@ class="dropdown-item bg-danger text-white" id="delete_selected_chat" href="#" - > -Delete chat + > + Delete chat
  • @@ -285,12 +283,13 @@ Delete chat ------ + class="input-group-text ms-2" + id="txtConnectedWithChat" + data-bs-toggle="tooltip" + data-bs-trigger="hover" + title="Connected with" + >------ diff --git a/gui/src/index.html b/gui/src/index.html index 2233a17c..1eec4f0d 100644 --- a/gui/src/index.html +++ b/gui/src/index.html @@ -3797,9 +3797,17 @@
    - +
    From 23ed5be2d88761ee229d460ec281e0a35061ef44 Mon Sep 17 00:00:00 2001 From: Mashintime Date: Sun, 2 Jul 2023 09:47:14 -0400 Subject: [PATCH 17/17] Bump version --- gui/package.json | 2 +- tnc/static.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/package.json b/gui/package.json index c29c94da..5843aadd 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,6 +1,6 @@ { "name": "FreeDATA", - "version": "0.9.3-alpha.2", + "version": "0.9.4-alpha.1", "description": "FreeDATA ", "main": "main.js", "scripts": { diff --git a/tnc/static.py b/tnc/static.py index b0023156..a5f6029b 100644 --- a/tnc/static.py +++ b/tnc/static.py @@ -125,7 +125,7 @@ class TCIParam: @dataclass class TNC: - version = "0.9.3-alpha.2" + version = "0.9.4-alpha.1" host: str = "0.0.0.0" port: int = 3000 SOCKET_TIMEOUT: int = 1 # seconds