diff --git a/gui/main.js b/gui/main.js index 37272b39..74fd81ef 100644 --- a/gui/main.js +++ b/gui/main.js @@ -181,10 +181,10 @@ function createWindow() { win.loadFile('src/index.html') chat = new BrowserWindow({ - height: 900, - width: 600, + height: 600, + width: 1000, show: false, - parent: win, + //parent: win, webPreferences: { preload: require.resolve('./preload-chat.js'), nodeIntegration: true, @@ -200,7 +200,7 @@ function createWindow() { height: 900, width: 600, show: false, - parent: win, + //parent: win, webPreferences: { preload: require.resolve('./preload-log.js'), nodeIntegration: true, diff --git a/gui/package.json b/gui/package.json index 15de829c..f63e02f9 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,6 +1,6 @@ { "name": "FreeDATA", - "version": "0.2.0-alpha.1", + "version": "0.3.0-alpha.1", "description": "FreeDATA ", "main": "main.js", "scripts": { @@ -28,14 +28,14 @@ }, "homepage": "https://freedata.app", "dependencies": { - "bootstrap": "^5.1.0", + "bootstrap": "^5.1.3", "bootstrap-icons": "^1.8.1", "bootswatch": "^5.1.3", - "chart.js": "^3.5.1", - "chartjs-plugin-annotation": "^1.0.2", + "chart.js": "^3.7.1", + "chartjs-plugin-annotation": "^1.4.0", "electron-log": "^4.4.6", "electron-updater": "^5.0.0", - "emoji-picker-element": "^1.11.0", + "emoji-picker-element": "^1.11.1", "emoji-picker-element-data": "^1.3.0", "mime": "^3.0.0", "pouchdb": "^7.2.2", @@ -45,7 +45,7 @@ "uuid": "^8.3.2" }, "devDependencies": { - "electron": "^17.0.0", + "electron": "^18.0.0", "electron-builder": "^22.14.13" }, "build": { diff --git a/gui/preload-chat.js b/gui/preload-chat.js index eddfebd2..a76d0848 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -29,10 +29,13 @@ const dateFormatShort = new Intl.DateTimeFormat('en-GB', { // split character const split_char = '\0;' // global for our selected file we want to transmit +// ----------------- some chat globals var filetype = ''; var file = ''; var filename = ''; -var callsign_counter = 0 +var callsign_counter = 0; +var selected_callsign = ''; +// ----------------------------------- var chatDB = path.join(configFolder, 'chatDB') // ---- MessageDB var PouchDB = require('pouchdb'); @@ -84,15 +87,50 @@ window.addEventListener('DOMContentLoaded', () => { element.style.display = "none"; } }) - - - + document.getElementById("delete_selected_chat").addEventListener("click", () => { + db.find({ + selector: { + dxcallsign: selected_callsign + } + }).then(function(result) { + // handle result + if (typeof(result) !== 'undefined') { + result.docs.forEach(function(item) { + console.log(item) + db.get(item._id).then(function(doc) { + return db.remove(doc); + }); + location.reload(); + + }); + } + }).catch(function(err) { + console.log(err); + }); + }) document.getElementById("selectFilesButton").addEventListener("click", () => { //document.getElementById('selectFiles').click(); ipcRenderer.send('select-file', { title: 'Title', - }); + }); + }) + + document.getElementById("ping").addEventListener("click", () => { + ipcRenderer.send('run-tnc-command', { + command: 'ping', dxcallsign: selected_callsign + }); }) + + + document.addEventListener("keyup", function(event) { + // Number 13 == Enter + if (event.keyCode === 13) { + // Cancel the default action, if needed + event.preventDefault(); + // Trigger the button element with a click + document.getElementById("sendMessage").click(); + } + }); // SEND MSG @@ -101,19 +139,14 @@ window.addEventListener('DOMContentLoaded', () => { var dxcallsign = document.getElementById('chatModuleDxCall').value; dxcallsign = dxcallsign.toUpperCase(); var chatmessage = document.getElementById('chatModuleMessage').value; - - console.log(file); console.log(filename); - console.log(filetype); - + console.log(filetype); var data_with_attachment = chatmessage + split_char + filename + split_char + filetype + split_char + file; - document.getElementById('selectFilesButton').innerHTML = ` `; var uuid = uuidv4(); - console.log(data_with_attachment) let Data = { command: "send_message", @@ -125,7 +158,6 @@ window.addEventListener('DOMContentLoaded', () => { uuid: uuid }; ipcRenderer.send('run-tnc-command', Data); - db.post({ _id: uuid, timestamp: Math.floor(Date.now() / 1000), @@ -168,10 +200,6 @@ window.addEventListener('DOMContentLoaded', () => { file = ''; filename = ''; }); - - - - ipcRenderer.on('return-selected-files', (event, arg) => { filetype = arg.mime; file = arg.data; @@ -233,7 +261,6 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { obj.status = item.status; obj.snr = item.snr; obj.type = item.type; - db.put({ _id: obj.uuid, timestamp: obj.timestamp, @@ -257,12 +284,11 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { }).then(function(doc) { console.log(doc) update_chat(doc); + }).catch(function(err) { console.log(err); }); - } else if (item.type == 'beacon') { - obj.timestamp = item.timestamp; obj.dxcallsign = item.dxcallsign; obj.dxgrid = item.dxgrid; @@ -273,7 +299,6 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { obj.status = item.status; obj.snr = item.snr; obj.type = item.type; - db.put({ _id: obj.uuid, timestamp: obj.timestamp, @@ -295,12 +320,11 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { db.get(item.uuid, { attachments: true }).then(function(doc) { - console.log(doc) + console.log(doc); update_chat(doc); }).catch(function(err) { console.log(err); }); - } else if (item.arq == 'received') { var encoded_data = atob(item.data); var splitted_data = encoded_data.split(split_char); @@ -318,8 +342,6 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { obj.filename = utf8.decode(splitted_data[5]); obj.filetype = utf8.decode(splitted_data[6]); obj.file = btoa(utf8.decode(splitted_data[7])); - - db.put({ _id: obj.uuid, timestamp: obj.timestamp, @@ -344,16 +366,17 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => { }).catch(function(err) { console.log(err); }); - db.get(item.uuid, { + db.get(obj.uuid, { attachments: true }).then(function(doc) { - console.log(doc) + console.log(doc); update_chat(doc); }).catch(function(err) { console.log(err); }); } }); + //window.location = window.location; }); // Update chat list update_chat = function(obj) { @@ -362,14 +385,14 @@ update_chat = function(obj) { var timestamp = dateFormat.format(obj.timestamp * 1000); var timestampShort = dateFormatShort.format(obj.timestamp * 1000); var dxgrid = obj.dxgrid; - try{ + try { console.log(Object.keys(obj._attachments)[0].length) - if (typeof(obj._attachments) !== 'undefined' && Object.keys(obj._attachments)[0].length > 0) { - //var filename = obj._attachments; - var filename = Object.keys(obj._attachments)[0] - var filetype = filename.split('.')[1] - var filesize = obj._attachments[filename]["length"] + " Bytes"; - var fileheader = ` + if (typeof(obj._attachments) !== 'undefined' && Object.keys(obj._attachments)[0].length > 0) { + //var filename = obj._attachments; + var filename = Object.keys(obj._attachments)[0] + var filetype = filename.split('.')[1] + var filesize = obj._attachments[filename]["length"] + " Bytes"; + var fileheader = `
`; - } else { - var filename = '' - var fileheader = '' - } - - } catch { + } else { + var filename = '' + var fileheader = '' + } + } catch { console.log("error with database parsing...") } - - // CALLSIGN LIST if (!(document.getElementById('chat-' + dxcallsign + '-list'))) { // increment callsign counter callsign_counter++; - - if (callsign_counter == 1){ + if (callsign_counter == 1) { var callsign_selected = 'active show' + document.getElementById('chatModuleDxCall').value = dxcallsign; + selected_callsign = dxcallsign; } var new_callsign = ` @@ -415,14 +436,13 @@ update_chat = function(obj) { // create eventlistener for listening on clicking on a callsign document.getElementById('chat-' + dxcallsign + '-list').addEventListener('click', function() { document.getElementById('chatModuleDxCall').value = dxcallsign; + selected_callsign = dxcallsign; // scroll to bottom var element = document.getElementById("message-container"); element.scrollTo(0, element.scrollHeight); }); } // APPEND MESSAGES TO CALLSIGN - - if (obj.status == 'transmit') { var status = ''; } else if (obj.status == 'transmitting') { @@ -434,8 +454,6 @@ update_chat = function(obj) { } else { var status = ''; } - - if (!(document.getElementById('msg-' + obj._id))) { if (obj.type == 'ping') { var new_message = ` @@ -445,7 +463,6 @@ update_chat = function(obj) { `; } if (obj.type == 'beacon') { - var new_message = `snr: ${obj.snr} - ${timestampShort}
@@ -470,7 +487,6 @@ update_chat = function(obj) { `; } if (obj.type == 'transmit') { - var new_message = `