mirror of
https://github.com/Ladebeze66/devsite.git
synced 2026-05-11 16:56:26 +02:00
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
/**
|
|
* Helpers — extraire les fichiers média des réponses Strapi v5 (structure plate).
|
|
*/
|
|
|
|
function isUploadedImage(obj) {
|
|
if (!obj || typeof obj !== "object" || typeof obj.url !== "string") return false;
|
|
if (!obj.url.includes("/uploads/")) return false;
|
|
if (obj.mime && !obj.mime.startsWith("image/")) return false;
|
|
return true;
|
|
}
|
|
|
|
/** Liste { file, index } pour un champ média Strapi */
|
|
function normalizeField(fieldVal, multiple) {
|
|
if (!fieldVal) return [];
|
|
if (multiple) {
|
|
const arr = Array.isArray(fieldVal) ? fieldVal : [fieldVal];
|
|
return arr
|
|
.filter(isUploadedImage)
|
|
.map((file, index) => ({ file, index }));
|
|
}
|
|
return isUploadedImage(fieldVal)
|
|
? [{ file: fieldVal, index: 0 }]
|
|
: [];
|
|
}
|
|
|
|
function safeSlug(entry) {
|
|
const s =
|
|
entry.slug ??
|
|
entry.documentId ??
|
|
(entry.id != null ? String(entry.id) : "unknown");
|
|
return String(s)
|
|
.replace(/[^\wÀ-ÖØ-öø-ÿ.-]+/gu, "_")
|
|
.slice(0, 96)
|
|
.replace(/^_|_$/g, "") || "entry";
|
|
}
|
|
|
|
module.exports = {
|
|
normalizeField,
|
|
safeSlug,
|
|
isUploadedImage,
|
|
};
|