added image compression - still broken

This commit is contained in:
DJ2LS 2023-02-25 23:23:59 +01:00
parent 2cc925bbd5
commit dc0fc959ad
4 changed files with 107 additions and 6 deletions

View file

@ -511,6 +511,40 @@ ipcMain.on("select-file", (event, data) => {
});
});
//select file
ipcMain.on("select-user-image", (event, data) => {
dialog
.showOpenDialog({
defaultPath: path.join(__dirname, "../"),
buttonLabel: "Select file",
properties: ["openFile"],
})
.then((filepath) => {
console.log(filepath.filePaths[0]);
try {
//fs.readFile(filepath.filePaths[0], 'utf8', function (err, data) {
//Has to be binary
fs.readFile(filepath.filePaths[0], "binary", function (err, data) {
console.log(data.length);
var filename = path.basename(filepath.filePaths[0]);
var mimeType = mime.getType(filename);
console.log(mimeType);
if (mimeType == "" || mimeType == null) {
mimeType = "plain/text";
}
chat.webContents.send("return-select-user-image", {
data: data,
mime: mimeType,
filename: filename,
});
});
} catch (err) {
console.log(err);
}
});
});
//save file to folder
ipcMain.on("save-file-to-folder", (event, data) => {
console.log(data.file);

View file

@ -35,6 +35,7 @@
"bootstrap": "^5.2.3",
"bootstrap-icons": "^1.10.3",
"bootswatch": "^5.2.3",
"browser-image-compression": "^2.0.0",
"chart.js": "^4.2.1",
"chartjs-plugin-annotation": "^2.1.2",
"electron-log": "^4.4.8",
@ -53,9 +54,9 @@
"uuid": "^9.0.0"
},
"devDependencies": {
"@electron/notarize": "^1.2.3",
"electron": "^23.0.0",
"electron-builder": "^23.6.0",
"@electron/notarize": "^1.2.3",
"electron-builder-notarize": "^1.5.1"
},
"build": {

View file

@ -1,6 +1,9 @@
const path = require("path");
const { ipcRenderer } = require("electron");
const { v4: uuidv4 } = require("uuid");
const imageCompression = require("browser-image-compression");
// https://stackoverflow.com/a/26227660
var appDataFolder =
process.env.APPDATA ||
@ -70,17 +73,20 @@ var users = new PouchDB(userDB);
createChatIndex();
createUserIndex();
/*
// REMOTE SYNC ATTEMPTS
var remoteDB = new PouchDB('http://172.20.10.4:5984/chatDB')
//var remoteDB = new PouchDB('http://172.20.10.4:5984/chatDB')
/*
// we need express packages for running pouchdb sync "express-pouchdb"
var express = require('express');
var app = express();
//app.use('/chatDB', require('express-pouchdb')(PouchDB));
//app.listen(5984);
app.use('/chatDB', require('express-pouchdb')(PouchDB));
app.listen(5984);
app.use('/chatDB', require('pouchdb-express-router')(PouchDB));
app.listen(5984);
@ -371,6 +377,16 @@ window.addEventListener("DOMContentLoaded", () => {
update_chat_obj_by_uuid(uuid);
});
// open file selector for user image
document.getElementById("userImageSelector").addEventListener("click", () => {
ipcRenderer.send("select-user-image", {
title: "Title",
});
});
// SEND MSG
document.getElementById("sendMessage").addEventListener("click", () => {
document.getElementById("emojipickercontainer").style.display = "none";
@ -482,6 +498,50 @@ ipcRenderer.on("return-selected-files", (event, arg) => {
</span>
`;
});
ipcRenderer.on("return-select-user-image", (event, arg) => {
filetype = arg.mime;
//console.log(filetype);
file = arg.data;
//filename = arg.filename;
//console.log(arg.data)
//document.getElementById("userImage").src = '';
//var imageFile = arg.data;
var imageFile = arg.data;
console.log(imageFile)
var options = {
maxSizeMB: 1,
maxWidthOrHeight: 1920,
useWebWorker: true
}
imageCompression(imageFile, options)
.then(function (compressedFile) {
console.log('compressedFile instanceof Blob', compressedFile instanceof Blob); // true
console.log(`compressedFile size ${compressedFile.size / 1024 / 1024} MB`); // smaller than maxSizeMB
console.log(compressedFile.size);
})
.catch(function (error) {
console.log(error.message);
});
});
ipcRenderer.on("action-update-transmission-status", (event, arg) => {
var data = arg["data"][0];
console.log(data.status);

View file

@ -34,6 +34,10 @@
<script
type="module"
src="../node_modules/emoji-picker-element/database.js"
></script>
<script
type="module"
src="../node_modules/browser-image-compression/dist/browser-image-compression.js"
></script>
<div
class="position-absolute container w-100 h-100 bottom-0 end-0 mb-5"
@ -300,10 +304,12 @@
src="img/icon.png"
class="img-fluid rounded-start"
alt="..."
id="userImage"
/>
</div>
<div
class="col position-absolute image-overlay text-white justify-content-center align-items-center d-flex align-middle h-100 bg-dark opacity-0"
id="userImageSelector"
>
<i class="bi bi-upload" style="font-size: 2.2rem"></i>
</div>