file transfer now working

This commit is contained in:
dj2ls 2022-06-09 14:11:39 +02:00
parent a4df21c0a2
commit 1909087c6b
3 changed files with 71 additions and 69 deletions

View file

@ -163,6 +163,7 @@ window.addEventListener('DOMContentLoaded', () => {
db.post({
_id: uuid,
_rev: doc._rev,
timestamp: Math.floor(Date.now() / 1000),
dxcallsign: dxcallsign.toUpperCase(),
dxgrid: '---',
@ -210,6 +211,7 @@ db.post({
ipcRenderer.send('run-tnc-command', Data);
db.post({
_id: uuid,
_rev: doc._rev,
timestamp: Math.floor(Date.now() / 1000),
dxcallsign: dxcallsign,
dxgrid: 'null',
@ -263,13 +265,13 @@ ipcRenderer.on('return-selected-files', (event, arg) => {
`;
});
ipcRenderer.on('action-update-transmission-status', (event, arg) => {
//console.log(arg.status);
console.log(arg.uuid);
db.get(arg.uuid, {
var data = arg["data"][0]
console.log(data.status);
db.get(data.uuid, {
attachments: true
}).then(function(doc) {
return db.put({
_id: arg.uuid,
_id: data.uuid,
_rev: doc._rev,
timestamp: doc.timestamp,
dxcallsign: doc.dxcallsign,
@ -277,17 +279,18 @@ ipcRenderer.on('action-update-transmission-status', (event, arg) => {
msg: doc.msg,
checksum: doc.checksum,
type: "transmit",
status: arg.status,
percent: arg.percent,
bytesperminute: arg.bytesperminute,
status: data.status,
percent: data.percent,
bytesperminute: data.bytesperminute,
uuid: doc.uuid,
_attachments: doc._attachments
});
}).then(function(response) {
update_chat_obj_by_uuid(arg.uuid);
update_chat_obj_by_uuid(data.uuid);
}).catch(function(err) {
console.log(err);
console.log(data)
});
});
ipcRenderer.on('action-new-msg-received', (event, arg) => {
@ -295,7 +298,7 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => {
var new_msg = arg.data;
new_msg.forEach(function(item) {
console.log(item)
console.log(item.status)
let obj = new Object();
//handle ping
@ -341,7 +344,7 @@ ipcRenderer.on('action-new-msg-received', (event, arg) => {
// handle ARQ transmission
} else if (item.arq == 'received') {
} else if (item.arq == 'transmission' && item.status == 'received') {
var encoded_data = atob(item.data);
var splitted_data = encoded_data.split(split_char);
obj.timestamp = item.timestamp;
@ -555,9 +558,7 @@ update_chat = function(obj) {
</div>
`;
}
if (obj.type == 'transmit') {
//console.log('msg-' + obj._id + '-status')
@ -621,33 +622,28 @@ update_chat = function(obj) {
var element = document.getElementById("message-container");
//console.log(element.scrollHeight)
/* UPDATE EXISTING ELEMENTS */
} else if (document.getElementById('msg-' + obj._id)) {
console.log("element already exists......")
console.log(obj)
console.log(document.getElementById('msg-' + obj._id + '-progress').getAttribute("aria-valuenow"))
console.log(document.getElementById('msg-' + obj._id + '-progress').getAttribute("aria-valuenow"))
document.getElementById('msg-' + obj._id + '-status').innerHTML = get_icon_for_state(obj.status);
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 (obj.percent >= 100){
document.getElementById('msg-' + obj._id + '-progress').classList.remove("progress-bar-striped");
//document.getElementById('msg-' + obj._id + '-progress').classList.remove("progress-bar-striped");
document.getElementById('msg-' + obj._id + '-progress').classList.remove("progress-bar-animated");
document.getElementById('msg-' + obj._id + '-progress').innerHTML = '';
} else {
document.getElementById('msg-' + obj._id + '-progress').classList.add("progress-bar-striped");
document.getElementById('msg-' + obj._id + '-progress').classList.add("progress-bar-animated");
}
if (obj.status == 'failed'){
document.getElementById('msg-' + obj._id + '-progress').classList.remove("progress-bar-striped");
document.getElementById('msg-' + obj._id + '-progress').classList.remove("progress-bar-animated");
@ -779,10 +775,13 @@ function get_icon_for_state(state) {
if (state == 'transmit') {
var status_icon = '<i class="bi bi-check" style="font-size:1rem;"></i>';
} else if (state == 'transmitting') {
var status_icon = '<i class="bi bi-arrow-left-right" style="font-size:0.8rem;"></i>';
//var status_icon = '<i class="bi bi-arrow-left-right" style="font-size:0.8rem;"></i>';
var status_icon = `
<i class="spinner-border ms-auto" style="width: 0.8rem; height: 0.8rem;" role="status" aria-hidden="true"></i>
`;
} else if (state == 'failed') {
var status_icon = '<i class="bi bi-exclamation-circle" style="font-size:1rem;"></i>';
} else if (state == 'success') {
} else if (state == 'transmitted') {
var status_icon = '<i class="bi bi-check-all" style="font-size:1rem;"></i>';
} else {
var status_icon = '<i class="bi bi-question" style="font-size:1rem;"></i>';
@ -807,6 +806,7 @@ update_chat_obj_by_uuid = function(uuid) {
add_obj_to_database = function(obj){
db.put({
_id: obj.uuid,
_rev: doc._rev,
timestamp: obj.timestamp,
uuid: obj.uuid,
dxcallsign: obj.dxcallsign,

View file

@ -232,7 +232,8 @@ client.on('data', function(socketdata) {
socketLog.info(data)
// update transmission status
if (data['arq'] == 'transmission'){
/*
if (data['arq'] == 'transmission' && data['status'] == 'transmitting'){
let state = {
status: data['status'],
@ -243,7 +244,7 @@ client.on('data', function(socketdata) {
ipcRenderer.send('request-update-transmission-status', state);
}
*/
// CQ TRANSMITTING
if (data['cq'] == 'transmitting') {
@ -299,70 +300,66 @@ client.on('data', function(socketdata) {
// ARQ OPEN
if (data['status'] == 'open') {
ipcRenderer.send('request-show-arq-toast-datachannel-open', {data: [data]});
// ARQ OPENING
} else if (data['status'] == 'opening') {
ipcRenderer.send('request-show-arq-toast-datachannel-opening', {data: [data]});
// ARQ TRANSMISSION FAILED
} else if (data['status'] == 'failed') {
ipcRenderer.send('request-show-arq-toast-transmission-failed', {data: [data]});
ipcRenderer.send('request-update-transmission-status', {data: [data]});
// ARQ TRANSMISSION RECEIVED
} else if (data['status'] == 'received') {
ipcRenderer.send('request-show-arq-toast-transmission-received', {data: [data]});
dataArray = []
messageArray = []
socketLog.info(data)
// we need to encode here to do a deep check for checking if file or message
var encoded_data = atob(data['data'])
var splitted_data = encoded_data.split(split_char)
if(splitted_data[0] == 'f'){
dataArray.push(data)
}
if(splitted_data[0] == 'm'){
messageArray.push(data)
console.log(data)
}
rxBufferLengthGui = dataArray.length
let Files = {
data: dataArray,
};
ipcRenderer.send('request-update-rx-buffer', Files);
ipcRenderer.send('request-new-msg-received', Files);
rxMsgBufferLengthGui = messageArray.length
let Messages = {
data: messageArray,
};
ipcRenderer.send('request-new-msg-received', Messages);
// ARQ TRANSMISSION TRANSMITTING
} else if (data['status'] == 'transmitting') {
ipcRenderer.send('request-show-arq-toast-transmission-transmitting', {data: [data]});
ipcRenderer.send('request-update-transmission-status', {data: [data]});
// ARQ TRANSMISSION TRANSMITTED
} else if (data['status'] == 'transmitted') {
ipcRenderer.send('request-show-arq-toast-transmission-transmitted', {data: [data]});
ipcRenderer.send('request-update-transmission-status', {data: [data]});
}
}
/* A TEST WITH STREAMING DATA .... */
// if we received data through network stream, we get a single data item
if (data['arq'] == 'received') {
dataArray = []
messageArray = []
socketLog.info(data)
// we need to encode here to do a deep check for checking if file or message
var encoded_data = atob(data['data'])
var splitted_data = encoded_data.split(split_char)
if(splitted_data[0] == 'f'){
dataArray.push(data)
}
if(splitted_data[0] == 'm'){
messageArray.push(data)
console.log(data)
}
rxBufferLengthGui = dataArray.length
let Files = {
data: dataArray,
};
ipcRenderer.send('request-update-rx-buffer', Files);
ipcRenderer.send('request-new-msg-received', Files);
rxMsgBufferLengthGui = messageArray.length
let Messages = {
data: messageArray,
};
ipcRenderer.send('request-new-msg-received', Messages);
}
}
// ----------- catch tnc info messages END -----------

View file

@ -1033,9 +1033,14 @@ class DATA:
bytesperminute=static.ARQ_BYTES_PER_MINUTE,
)
# GOING TO NEXT ITERATION
if self.data_frame_ack_received:
# we need to wait until sending "transmitted" state
# gui database is too slow for handling this within 0.001 seconds
# so let's sleep a little
time.sleep(0.1)
self.send_data_to_socket_queue(
freedata="tnc-message",
arq="transmission",