forked from UKSOURCE/hailearning.edu.vn
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
/**
|
|
* Build a safe image URL for assets coming from the CMS.
|
|
*
|
|
* Rules:
|
|
* - If already a full URL (http/https) → return as is
|
|
* - If starts with `/uploads/` or `/img/` → prepend API URL (NEXT_PUBLIC_API_URL or default localhost)
|
|
* - If starts with `/` → use as-is (served by Next/public)
|
|
* - Otherwise → treat as relative path under `/`
|
|
*/
|
|
export function getCmsImageUrl(imagePath: string | undefined): string {
|
|
if (!imagePath) return "";
|
|
|
|
if (imagePath.startsWith("http://") || imagePath.startsWith("https://")) {
|
|
return imagePath;
|
|
}
|
|
|
|
// Hỗ trợ cả "/uploads/", "uploads/", "/img/", "img/"
|
|
if (
|
|
imagePath.startsWith("/uploads/") ||
|
|
imagePath.startsWith("uploads/") ||
|
|
imagePath.startsWith("/img/") ||
|
|
imagePath.startsWith("img/")
|
|
) {
|
|
const apiUrl = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001";
|
|
// Nếu thiếu dấu "/" đầu, thêm vào cho đúng path
|
|
const fixedPath =
|
|
imagePath.startsWith("/") ? imagePath : `/${imagePath}`;
|
|
return `${apiUrl}${fixedPath}`;
|
|
}
|
|
|
|
if (imagePath.startsWith("/")) {
|
|
return imagePath;
|
|
}
|
|
|
|
return `/${imagePath}`;
|
|
}
|
|
|