fix: #10451 Emoji pack imports randomly stop processing files

This commit is contained in:
Lhcfl 2024-04-21 11:05:19 +08:00
parent 28f7ac1acd
commit 3917818c76

View file

@ -11,14 +11,28 @@ import { addFile } from "@/services/drive/add-file.js";
import { genId } from "backend-rs";
import { db } from "@/db/postgre.js";
import probeImageSize from "probe-image-size";
import * as path from "path";
import * as path from "node:path";
const logger = queueLogger.createSubLogger("import-custom-emojis");
// probeImageSize acceptable extensions
const acceptableExtensions = [
".avif",
".bmp",
".gif",
".ico",
".jpeg",
".png",
".psd",
// ".svg", // Disable for secure issues
".tiff",
".webp",
];
// TODO: 名前衝突時の動作を選べるようにする
export async function importCustomEmojis(
job: Bull.Job<DbUserImportJobData>,
done: any,
done: () => void,
): Promise<void> {
logger.info("Importing custom emojis ...");
@ -62,6 +76,14 @@ export async function importCustomEmojis(
if (!record.downloaded) continue;
const emojiInfo = record.emoji;
const emojiPath = `${outputPath}/${record.fileName}`;
const extname = path.extname(record.fileName);
// Skip non-support files
if (!acceptableExtensions.includes(extname)) {
continue;
}
await Emojis.delete({
name: emojiInfo.name,
});
@ -92,7 +114,7 @@ export async function importCustomEmojis(
} else {
logger.info("starting emoji import without metadata");
// Since we lack metadata, we import into a randomized category name instead
let categoryName = genId();
const categoryName = genId();
let containedEmojis = fs.readdirSync(outputPath);
@ -103,7 +125,14 @@ export async function importCustomEmojis(
for (const emojiFilename of containedEmojis) {
// strip extension and get filename to use as name
const name = path.basename(emojiFilename, path.extname(emojiFilename));
const extname = path.extname(emojiFilename);
// Skip non-emoji files, such as LICENSE
if (!acceptableExtensions.includes(extname)) {
continue;
}
const name = path.basename(emojiFilename, extname);
const emojiPath = `${outputPath}/${emojiFilename}`;
logger.info(`importing ${name}`);