u
This commit is contained in:
@@ -96,12 +96,45 @@ export function register(app, basePath = '') {
|
||||
|
||||
try {
|
||||
const templates = await db.list(req.user.id);
|
||||
res.status(200).json({
|
||||
labeltemplates: templates.map((t) => {
|
||||
|
||||
let article = null;
|
||||
if (req.query?.sku) {
|
||||
const skuStr = String(req.query.sku).trim();
|
||||
const result = await articleDb.getBySku(req.user.id, skuStr);
|
||||
if (result?.article) {
|
||||
article = result.article;
|
||||
}
|
||||
}
|
||||
|
||||
const labeltemplates = await Promise.all(
|
||||
templates.map(async (t) => {
|
||||
const { content, ...rest } = serializeTemplate(t);
|
||||
if (article) {
|
||||
try {
|
||||
const full = await db.getById(req.user.id, t.id);
|
||||
const objects = Array.isArray(full?.content?.objects)
|
||||
? full.content.objects
|
||||
: Array.isArray(full?.content)
|
||||
? full.content
|
||||
: null;
|
||||
if (objects && objects.length > 0) {
|
||||
const interpolated = interpolateObjects(objects, article);
|
||||
const thumbBuffer = await renderThumb({
|
||||
width: t.width,
|
||||
height: t.height,
|
||||
objects: interpolated,
|
||||
});
|
||||
rest.thumb = thumbBuffer.toString('base64');
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`Failed to render preview thumb for template ${t.id} with sku ${req.query.sku}:`, err);
|
||||
}
|
||||
}
|
||||
return rest;
|
||||
})
|
||||
});
|
||||
);
|
||||
|
||||
res.status(200).json({ labeltemplates });
|
||||
} catch (error) {
|
||||
const status = labeltemplateErrorStatus(error);
|
||||
if (status === 500) console.error('List label templates failed:', error);
|
||||
@@ -175,7 +208,32 @@ export function register(app, basePath = '') {
|
||||
if (!template) {
|
||||
return res.status(404).json({ error: 'Label template not found' });
|
||||
}
|
||||
res.status(200).json({ labeltemplate: serializeTemplate(template) });
|
||||
const serialized = serializeTemplate(template);
|
||||
if (req.query?.sku) {
|
||||
const skuStr = String(req.query.sku).trim();
|
||||
const result = await articleDb.getBySku(req.user.id, skuStr);
|
||||
if (result?.article) {
|
||||
const objects = Array.isArray(serialized?.content?.objects)
|
||||
? serialized.content.objects
|
||||
: Array.isArray(serialized?.content)
|
||||
? serialized.content
|
||||
: null;
|
||||
if (objects && objects.length > 0) {
|
||||
try {
|
||||
const interpolated = interpolateObjects(objects, result.article);
|
||||
const thumbBuffer = await renderThumb({
|
||||
width: template.width,
|
||||
height: template.height,
|
||||
objects: interpolated,
|
||||
});
|
||||
serialized.thumb = thumbBuffer.toString('base64');
|
||||
} catch (err) {
|
||||
console.error(`Failed to render preview thumb for template ${template.id} with sku ${req.query.sku}:`, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
res.status(200).json({ labeltemplate: serialized });
|
||||
} catch (error) {
|
||||
const status = labeltemplateErrorStatus(error);
|
||||
if (status === 500) console.error('Get label template failed:', error);
|
||||
|
||||
Reference in New Issue
Block a user