You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
JavaScript
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,
|
|
};
|