From 1bf99deeb9adab87c4e654d6658d5764cf1fa1ac Mon Sep 17 00:00:00 2001 From: seb Date: Mon, 19 Oct 2026 02:03:44 +0200 Subject: [PATCH] u --- src/services/companyImport/imageHasher.js | 12 +++++++++--- src/util/manifestAttachment.js | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/services/companyImport/imageHasher.js b/src/services/companyImport/imageHasher.js index bae43d9..52bd867 100644 --- a/src/services/companyImport/imageHasher.js +++ b/src/services/companyImport/imageHasher.js @@ -11,13 +11,19 @@ const log = createLogger('import'); // #region SkeleHash Computation /** - * Computes SkeleHash base62 hash for an image buffer. + * Computes SkeleHash base62 hash for an image buffer or base64 string. * - * @param {Buffer} buffer + * @param {Buffer|string} buffer * @returns {Promise<{base62: string, width: number, height: number, hashLength: number}|null>} */ export async function computeSkeleHash(buffer) { - const { data, info } = await sharp(buffer) + if (!buffer) return null; + let input = buffer; + if (typeof input === 'string') { + const base64Data = input.includes(',') ? input.split(',')[1] : input; + input = Buffer.from(base64Data, 'base64'); + } + const { data, info } = await sharp(input) .rotate() .resize({ width: 200, height: 200, fit: 'inside' }) .ensureAlpha() diff --git a/src/util/manifestAttachment.js b/src/util/manifestAttachment.js index cbb57cc..7f4aab4 100644 --- a/src/util/manifestAttachment.js +++ b/src/util/manifestAttachment.js @@ -1,5 +1,7 @@ import { computeSkeleHash } from '../services/companyImport/imageHasher.js'; +import { createLogger } from './logger.js'; +const log = createLogger('attachment'); const skeleCache = new Map(); /** @@ -18,10 +20,14 @@ export async function formatAttachment(file) { } if (!skeledash && file.thumbavif) { - const result = await computeSkeleHash(file.thumbavif); - skeledash = result.base62; - if (file.hash && skeledash) { - skeleCache.set(file.hash, skeledash); + try { + const result = await computeSkeleHash(file.thumbavif); + skeledash = result?.base62 ?? null; + if (file.hash && skeledash) { + skeleCache.set(file.hash, skeledash); + } + } catch (err) { + log.warn(`Failed to compute skelehash for attachment ${file.hash || file.name || file.id}:`, err?.message || err); } }