feat: improve mindspace asset handling and local runtime paths

This commit is contained in:
john
2026-06-28 12:18:26 +08:00
parent 4a9bc710f1
commit ea19ffb5fa
36 changed files with 867 additions and 100 deletions
+16 -1
View File
@@ -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);