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.
		
		
		
		
		
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			46 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,
 | |
| };
 |