session-desktop/app/profile_images.js
2019-09-05 15:24:58 +10:00

47 lines
1.1 KiB
JavaScript

const fs = require('fs');
const mkdirp = require('mkdirp');
const path = require('path');
const { app } = require('electron').remote;
const userDataPath = app.getPath('userData');
const PATH = path.join(userDataPath, 'profileImages');
mkdirp.sync(PATH);
const hasImage = pubKey => fs.existsSync(getImagePath(pubKey));
const getImagePath = pubKey => `${PATH}/${pubKey}.png`;
const removeImage = pubKey => {
if (hasImage(pubKey)) {
fs.unlinkSync(getImagePath(pubKey));
}
};
const removeImagesNotInArray = pubKeyArray => {
fs
.readdirSync(PATH)
// Get all files that end with png
.filter(file => file.includes('.png'))
// Strip the extension
.map(i => path.basename(i, '.png'))
// Get any file that is not in the pubKeyArray
.filter(i => !pubKeyArray.includes(i))
// Remove them
.forEach(i => removeImage(i));
};
const writePNGImage = (base64String, pubKey) => {
const imagePath = getImagePath(pubKey);
fs.writeFileSync(imagePath, base64String, 'base64');
return imagePath;
};
module.exports = {
writePNGImage,
getImagePath,
hasImage,
removeImage,
removeImagesNotInArray,
};