84 lines
3.1 KiB
JavaScript
84 lines
3.1 KiB
JavaScript
import fs from 'node:fs/promises';
|
|
import path from 'node:path';
|
|
import chokidar from 'chokidar';
|
|
import Debug from 'debug';
|
|
import { DEBUG_NAMESPACE } from '../debug.config.js';
|
|
import { getConfigProperty } from './config.helpers.js';
|
|
const debug = Debug(`${DEBUG_NAMESPACE}:images.helpers`);
|
|
/*
|
|
* Burial Site Images
|
|
*/
|
|
const burialSiteImagesFolder = path.join(getConfigProperty('settings.publicInternalPath'), 'images', 'burialSites');
|
|
const burialSiteImageFileExtensions = ['jpg', 'jpeg', 'png'];
|
|
let burialSiteImages = [];
|
|
export async function getBurialSiteImages() {
|
|
if (burialSiteImages.length === 0) {
|
|
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
const files = await fs.readdir(burialSiteImagesFolder);
|
|
const images = [];
|
|
for (const file of files) {
|
|
const lowerCaseFileName = file.toLowerCase();
|
|
for (const fileExtension of burialSiteImageFileExtensions) {
|
|
if (lowerCaseFileName.endsWith(`.${fileExtension}`)) {
|
|
images.push(file);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
burialSiteImages = images;
|
|
}
|
|
return burialSiteImages;
|
|
}
|
|
function clearCachedBurialSiteImages() {
|
|
debug('Burial site images folder changed.');
|
|
burialSiteImages = [];
|
|
}
|
|
if (getConfigProperty('settings.burialSites.refreshImageChanges')) {
|
|
debug('Burial site images watcher enabled.');
|
|
const burialSitesWatcher = chokidar.watch(burialSiteImagesFolder, {
|
|
ignoreInitial: true,
|
|
persistent: true
|
|
});
|
|
burialSitesWatcher.on('add', clearCachedBurialSiteImages);
|
|
// burialSitesWatcher.on('change', clearCachedBurialSiteImages)
|
|
burialSitesWatcher.on('unlink', clearCachedBurialSiteImages);
|
|
}
|
|
/*
|
|
* Cemetery SVGs
|
|
*/
|
|
const cemeterySVGsFolder = path.join(getConfigProperty('settings.publicInternalPath'), 'images', 'cemeteries');
|
|
const cemeterySVGFileExtensions = ['svg'];
|
|
let cemeterySVGs = [];
|
|
export async function getCemeterySVGs() {
|
|
if (cemeterySVGs.length === 0) {
|
|
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
const files = await fs.readdir(cemeterySVGsFolder);
|
|
const SVGs = [];
|
|
for (const file of files) {
|
|
const lowerCaseFileName = file.toLowerCase();
|
|
for (const fileExtension of cemeterySVGFileExtensions) {
|
|
if (lowerCaseFileName.endsWith(`.${fileExtension}`)) {
|
|
SVGs.push(file);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
cemeterySVGs = SVGs;
|
|
}
|
|
return cemeterySVGs;
|
|
}
|
|
function clearCachedCemeterySVGs() {
|
|
debug('Cemetery SVGs folder changed.');
|
|
cemeterySVGs = [];
|
|
}
|
|
if (getConfigProperty('settings.cemeteries.refreshImageChanges')) {
|
|
debug('Cemetery SVGs watcher enabled.');
|
|
const cemeteryWatcher = chokidar.watch(cemeterySVGsFolder, {
|
|
ignoreInitial: true,
|
|
persistent: true
|
|
});
|
|
cemeteryWatcher.on('add', clearCachedCemeterySVGs);
|
|
// cemeteryWatcher.on('change', clearCachedCemeterySVGs)
|
|
cemeteryWatcher.on('unlink', clearCachedCemeterySVGs);
|
|
}
|