Add catch to image grid generator
Some checks failed
Deploy To Production / build (push) Failing after 20s
Deploy To Production / deploy (push) Has been skipped

This commit is contained in:
Ethan Lane 2025-04-23 10:40:06 +01:00
parent 1796f2519e
commit 659906e562

View file

@ -26,46 +26,51 @@ export default class ImageHelper {
const ctx = canvas.getContext("2d");
for (let i = 0; i < cards.length; i++) {
const card = cards[i];
try {
const card = cards[i];
const filePath = path.join(process.env.DATA_DIR!, "cards", card.path);
const filePath = path.join(process.env.DATA_DIR!, "cards", card.path);
let bitmap: Bitmap;
let bitmap: Bitmap;
if (existsSync(filePath)) {
const data = await Jimp.read(filePath);
if (existsSync(filePath)) {
const data = await Jimp.read(filePath);
bitmap = data.bitmap;
} else if (card.path.startsWith("http://") || card.path.startsWith("https://")) {
const response = await axios.get(card.path, { responseType: "arraybuffer" });
const buffer = Buffer.from(response.data);
const data = await Jimp.fromBuffer(buffer);
bitmap = data.bitmap;
} else if (card.path.startsWith("http://") || card.path.startsWith("https://")) {
const response = await axios.get(card.path, { responseType: "arraybuffer" });
const buffer = Buffer.from(response.data);
const data = await Jimp.fromBuffer(buffer);
bitmap = data.bitmap;
} else {
AppLogger.LogError("ImageHelper/GenerateCardImageGrid", `Failed to load image from path ${card.path}`);
continue;
}
const imageData = Jimp.fromBitmap(bitmap);
if (userId != null) {
const claimed = await Inventory.FetchOneByCardNumberAndUserId(userId, card.id);
if (!claimed || claimed.Quantity == 0) {
imageData.greyscale();
bitmap = data.bitmap;
} else {
AppLogger.LogError("ImageHelper/GenerateCardImageGrid", `Failed to load image from path ${card.path}`);
continue;
}
const imageData = Jimp.fromBitmap(bitmap);
if (userId != null) {
const claimed = await Inventory.FetchOneByCardNumberAndUserId(userId, card.id);
if (!claimed || claimed.Quantity == 0) {
imageData.greyscale();
}
}
const image = await loadImage(await imageData.getBuffer("image/png"));
const x = i % gridWidth;
const y = Math.floor(i / gridWidth);
const imageX = imageWidth * x;
const imageY = imageHeight * y;
ctx.drawImage(image, imageX, imageY);
}
catch (e) {
AppLogger.CatchError("ImageHelper", e);
}
const image = await loadImage(await imageData.getBuffer("image/png"));
const x = i % gridWidth;
const y = Math.floor(i / gridWidth);
const imageX = imageWidth * x;
const imageY = imageHeight * y;
ctx.drawImage(image, imageX, imageY);
}
return canvas.toBuffer();