feat: improve mindspace asset handling and local runtime paths
This commit is contained in:
@@ -132,7 +132,13 @@ function resolveLocalImagePath({ storageRoot, contentStorageKey, contentBaseDir,
|
||||
return target;
|
||||
}
|
||||
|
||||
export async function resolveCoverDataUri({ storageRoot, contentStorageKey, contentBaseDir, imageUrl }) {
|
||||
export async function resolveCoverDataUri({
|
||||
storageRoot,
|
||||
contentStorageKey,
|
||||
contentBaseDir,
|
||||
imageUrl,
|
||||
resolveAssetDataUri,
|
||||
}) {
|
||||
const raw = String(imageUrl ?? '').trim();
|
||||
if (!raw) return null;
|
||||
if (raw.startsWith('data:')) return raw.length <= MAX_COVER_BYTES * 2 ? raw : null;
|
||||
@@ -143,6 +149,14 @@ export async function resolveCoverDataUri({ storageRoot, contentStorageKey, cont
|
||||
return null;
|
||||
}
|
||||
}
|
||||
const assetMatch = raw.match(/\/mindspace\/v1\/assets\/([a-z0-9-]+)(?:\/download)?/i);
|
||||
if (assetMatch && resolveAssetDataUri) {
|
||||
try {
|
||||
return await resolveAssetDataUri(assetMatch[1]);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
const localPath = resolveLocalImagePath({ storageRoot, contentStorageKey, contentBaseDir, imageUrl: raw });
|
||||
if (!localPath) return null;
|
||||
try {
|
||||
@@ -458,6 +472,7 @@ export async function generateHtmlThumbnail(storageRoot, storageKey, html, meta
|
||||
contentStorageKey: meta.contentStorageKey,
|
||||
contentBaseDir: meta.contentBaseDir,
|
||||
imageUrl: signals.image,
|
||||
resolveAssetDataUri: meta.resolveAssetDataUri,
|
||||
});
|
||||
const svg = buildFeedThumbnailSvg(signals, { coverDataUri });
|
||||
await writeThumbnail(storageRoot, storageKey, svg);
|
||||
|
||||
Reference in New Issue
Block a user