Fix loading characters from assets on first load

This commit is contained in:
Cohee 2024-05-19 03:31:09 +03:00
parent 4e9a113a35
commit d9b55df883
1 changed files with 20 additions and 9 deletions

View File

@ -75,6 +75,24 @@ function getFiles(dir, files = []) {
return files; return files;
} }
/**
* Ensure that the asset folders exist.
* @param {import('../users').UserDirectoryList} directories - The user's directories
*/
function ensureFoldersExist(directories) {
const folderPath = path.join(directories.assets);
for (const category of VALID_CATEGORIES) {
const assetCategoryPath = path.join(folderPath, category);
if (fs.existsSync(assetCategoryPath) && !fs.statSync(assetCategoryPath).isDirectory()) {
fs.unlinkSync(assetCategoryPath);
}
if (!fs.existsSync(assetCategoryPath)) {
fs.mkdirSync(assetCategoryPath, { recursive: true });
}
}
}
const router = express.Router(); const router = express.Router();
/** /**
@ -92,15 +110,7 @@ router.post('/get', jsonParser, async (request, response) => {
try { try {
if (fs.existsSync(folderPath) && fs.statSync(folderPath).isDirectory()) { if (fs.existsSync(folderPath) && fs.statSync(folderPath).isDirectory()) {
for (const category of VALID_CATEGORIES) { ensureFoldersExist(request.user.directories);
const assetCategoryPath = path.join(folderPath, category);
if (fs.existsSync(assetCategoryPath) && !fs.statSync(assetCategoryPath).isDirectory()) {
fs.unlinkSync(assetCategoryPath);
}
if (!fs.existsSync(assetCategoryPath)) {
fs.mkdirSync(assetCategoryPath);
}
}
const folders = fs.readdirSync(folderPath, { withFileTypes: true }) const folders = fs.readdirSync(folderPath, { withFileTypes: true })
.filter(file => file.isDirectory()); .filter(file => file.isDirectory());
@ -193,6 +203,7 @@ router.post('/download', jsonParser, async (request, response) => {
} }
// Validate filename // Validate filename
ensureFoldersExist(request.user.directories);
const validation = validateAssetFileName(request.body.filename); const validation = validateAssetFileName(request.body.filename);
if (validation.error) if (validation.error)
return response.status(400).send(validation.message); return response.status(400).send(validation.message);