first test run with getting list of files in folder

This commit is contained in:
DJ2LS 2023-02-28 13:55:11 +01:00
parent 1238a4c761
commit 90ce4acfce
5 changed files with 251 additions and 18 deletions

View file

@ -89,7 +89,10 @@ const configDefaultSettings =
"high_graphics" : "True",\
"explorer_stats" : "False", \
"auto_tune" : "False", \
"enable_is_writing" : "True" \
"enable_is_writing" : "True", \
"shared_folder_path" : ".", \
"enable_request_profile" : "True", \
"enable_request_shared_folder" : "True" \
}';
if (!fs.existsSync(configPath)) {
@ -446,12 +449,12 @@ ipcMain.on("get-file-path", (event, data) => {
dialog
.showOpenDialog({
defaultPath: path.join(__dirname, "../"),
buttonLabel: "Select rigctld",
buttonLabel: "Select File",
properties: ["openFile"],
})
.then((filePaths) => {
if (filePaths.canceled == false) {
win.webContents.send("return-file-paths", { path: filePaths });
win.webContents.send(data.action, { path: filePaths });
}
});
});
@ -465,7 +468,7 @@ ipcMain.on("get-folder-path", (event, data) => {
properties: ["openDirectory"],
})
.then((folderPaths) => {
win.webContents.send("return-folder-paths", { path: folderPaths });
win.webContents.send(data.action, { path: folderPaths });
});
});
@ -543,6 +546,40 @@ ipcMain.on("select-user-image", (event, data) => {
}
});
});
// read files in folder - use case "shared folder"
ipcMain.on("read-files-in-folder", (event, data) => {
let fileList = []
let folder = data.folder
let files = fs.readdirSync(folder);
console.log(folder)
console.log(files)
files.forEach(file => {
try{
let filePath = folder + '/' + file;
if(fs.lstatSync(filePath).isFile()){
let fileSizeInBytes = fs.statSync(filePath).size
let extension = path.extname(filePath);
fileList.push({ name: file, extension: extension.substring(1), size: fileSizeInBytes });
}
} catch(err){
console.log(err)
}
});
chat.webContents.send("return-shared-folder-files", {
files: fileList,
});
});
//save file to folder
ipcMain.on("save-file-to-folder", (event, data) => {
console.log(data.file);

View file

@ -397,6 +397,24 @@ window.addEventListener("DOMContentLoaded", () => {
});
});
// open file selector for shared folder
document.getElementById("sharedFolderButton").addEventListener("click", () => {
ipcRenderer.send("read-files-in-folder", {
folder: config.shared_folder_path,
});
});
document
.getElementById("openSharedFilesFolder")
.addEventListener("click", () => {
ipcRenderer.send("open-folder", {
path: config.shared_folder_path,
});
});
// SEND MSG
document.getElementById("sendMessage").addEventListener("click", () => {
document.getElementById("emojipickercontainer").style.display = "none";
@ -496,6 +514,7 @@ window.addEventListener("DOMContentLoaded", () => {
file = "";
filename = "";
});
ipcRenderer.on("return-selected-files", (event, arg) => {
filetype = arg.mime;
console.log(filetype);
@ -509,6 +528,52 @@ ipcRenderer.on("return-selected-files", (event, arg) => {
`;
});
ipcRenderer.on("return-shared-folder-files", (event, arg) => {
console.log(arg)
var tbl = document.getElementById("sharedFolderTable");
tbl.innerHTML = "";
let counter = 0
arg.files.forEach(file => {
console.log(file["name"]);
var row = document.createElement("tr");
let id = document.createElement("td");
let idText = document.createElement("span");
idText.innerText = counter+=1;
id.appendChild(idText);
row.appendChild(id);
let filename = document.createElement("td");
let filenameText = document.createElement("span");
filenameText.innerText = file["name"];
filename.appendChild(filenameText);
row.appendChild(filename);
let filetype = document.createElement("td");
let filetypeText = document.createElement("span");
filetypeText.innerHTML = `
<i class="bi bi-filetype-${file['extension']}" style="font-size: 1.8rem"></i>
`;
filetype.appendChild(filetypeText);
row.appendChild(filetype);
let filesize = document.createElement("td");
let filesizeText = document.createElement("span");
filesizeText.innerText = file["size"];
filesize.appendChild(filesizeText);
row.appendChild(filesize);
tbl.appendChild(row);
});
});
ipcRenderer.on("return-select-user-image", (event, arg) => {
let imageFiletype = arg.mime;
let imageFile = arg.data;
@ -728,7 +793,11 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => {
obj.filetype = "null";
obj.file = "null";
sendUserData(item.dxcallsign);
if(config.enable_request_profile == "True"){
sendUserData(item.dxcallsign);
}
} else if (splitted_data[1] == "res") {
obj.uuid = uuidv4().toString();
obj.timestamp = Math.floor(Date.now() / 1000);

View file

@ -162,9 +162,10 @@ window.addEventListener("DOMContentLoaded", () => {
.addEventListener("click", () => {
ipcRenderer.send("get-folder-path", {
title: "Title",
action: "return-folder-paths-received_files_folder",
});
ipcRenderer.on("return-folder-paths", (event, data) => {
ipcRenderer.on("return-folder-paths-received_files_folder", (event, data) => {
document.getElementById("received_files_folder").value =
data.path.filePaths[0];
config.received_files_folder = data.path.filePaths[0];
@ -172,6 +173,23 @@ window.addEventListener("DOMContentLoaded", () => {
});
});
document
.getElementById("shared_folder_path")
.addEventListener("click", () => {
ipcRenderer.send("get-folder-path", {
title: "Title",
action: "return-folder-paths-shared_folder_path",
});
ipcRenderer.on("return-folder-paths-shared_folder_path", (event, data) => {
document.getElementById("shared_folder_path").value =
data.path.filePaths[0];
config.shared_folder_path = data.path.filePaths[0];
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
});
document
.getElementById("openReceivedFilesFolder")
.addEventListener("click", () => {
@ -180,6 +198,8 @@ window.addEventListener("DOMContentLoaded", () => {
});
});
/*
// ENABLE BOOTSTRAP POPOVERS EVERYWHERE
// https://getbootstrap.com/docs/5.0/components/popovers/#example-enable-popovers-everywhere
@ -242,6 +262,21 @@ window.addEventListener("DOMContentLoaded", () => {
document.getElementById("scatterSwitch").checked = false;
}
document.getElementById("shared_folder_path").value =
config.shared_folder_path;
if (config.enable_request_profile == "True") {
document.getElementById("enable_request_profile").checked = true;
} else {
document.getElementById("enable_request_profile").checked = false;
}
if (config.enable_request_shared_folder == "True") {
document.getElementById("enable_request_shared_folder").checked = true;
} else {
document.getElementById("enable_request_shared_folder").checked = false;
}
if (config.enable_is_writing == "True") {
document.getElementById("enable_is_writing").checked = true;
} else {
@ -556,9 +591,10 @@ window.addEventListener("DOMContentLoaded", () => {
.addEventListener("click", () => {
ipcRenderer.send("get-file-path", {
title: "Title",
action : "return-file-path-hamlib_rigctld_path"
});
ipcRenderer.on("return-file-paths", (event, data) => {
ipcRenderer.on("return-file-path-hamlib_rigctld_path", (event, data) => {
rigctldPath = data.path.filePaths[0];
document.getElementById("hamlib_rigctld_path").value = rigctldPath;
config.hamlib_rigctld_path = rigctldPath;
@ -1033,6 +1069,26 @@ window.addEventListener("DOMContentLoaded", () => {
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// enable enable_request_shared_folder switch clicked
document.getElementById("enable_request_shared_folder").addEventListener("click", () => {
if (document.getElementById("enable_request_shared_folder").checked == true) {
config.enable_request_shared_folder = "True";
} else {
config.enable_request_shared_folder = "False";
}
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// enable enable_request_profile switch clicked
document.getElementById("enable_request_profile").addEventListener("click", () => {
if (document.getElementById("enable_request_profile").checked == true) {
config.enable_request_profile = "True";
} else {
config.enable_request_profile = "False";
}
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// Tuning range clicked
document.getElementById("tuning_range_fmin").addEventListener("click", () => {
var tuning_range_fmin = document.getElementById("tuning_range_fmin").value;

View file

@ -582,19 +582,29 @@
<!-- user shared folder -->
<div
class="modal fade"
class="modal fade "
id="sharedFolderModal"
tabindex="-1"
aria-labelledby="sharedFolderModalLabel"
aria-hidden="true"
>
<div class="modal-dialog">
<div class="modal-dialog modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="sharedFolderModalLabel">
My Shared folder
<button
type="button"
class="btn btn-primary"
id="openSharedFilesFolder"
><i class="bi bi-archive"></i></button>
</h1>
<button
type="button"
class="btn-close"
@ -603,15 +613,24 @@
></button>
</div>
<div class="modal-body">
<div class="container-fluid">Future feature... be patient :-)</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>
Close
</button>
<div class="container-fluid">
<div class="table-responsive">
<!-- START OF TABLE FOR HEARD STATIONS -->
<table class="table table-sm">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Type</th>
<th scope="col">Size</th>
</tr>
</thead>
<tbody id="sharedFolderTable">
</tbody>
</table>
</div>
</div>
</div>
</div>

View file

@ -1854,6 +1854,58 @@
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Allow requesting "user profile"</label
>
<label class="input-group-text bg-white w-50">
<div class="form-check form-switch form-check-inline">
<input
class="form-check-input"
type="checkbox"
id="enable_request_profile"
/>
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Allow requesting "shared folder"</label
>
<label class="input-group-text bg-white w-50">
<div class="form-check form-switch form-check-inline">
<input
class="form-check-input"
type="checkbox"
id="enable_request_shared_folder"
/>
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Shared folder path</label
>
<input
type="text"
class="form-control w-50"
id="shared_folder_path"
/>
</div>
</div>
<!--Rigctl tab contents-->
<div