diff --git a/app/news/detail/[id]/page.tsx b/app/news/detail/[id]/page.tsx index c29b186..2fed909 100644 --- a/app/news/detail/[id]/page.tsx +++ b/app/news/detail/[id]/page.tsx @@ -8,7 +8,7 @@ type Props = { }; export async function generateMetadata({ params }: any): Promise { - const res = await getArticleById(params.id?.split("-")[0]); + const res = await getArticleById(params?.id?.split("-")[0]); const article = res?.data?.data; return { title: article.title, @@ -22,7 +22,7 @@ export async function generateMetadata({ params }: any): Promise { } export default async function NewsPage({ params }: any) { - const articleId = params.id?.split("-")[0]; + const articleId = params?.id?.split("-")[0]; const res = await getArticleById(articleId); const article = res?.data?.data; return ( diff --git a/components/page/detail-news.tsx b/components/page/detail-news.tsx index e60a371..94197f6 100644 --- a/components/page/detail-news.tsx +++ b/components/page/detail-news.tsx @@ -39,6 +39,32 @@ export default function DetailNews(props: { data: any; listArticle: any }) { const params = useParams(); const id: any = params?.id; const shareText = "Humas Polri"; + const [filteredFiles, setFilteredFiles] = useState([]); + + useEffect(() => { + getUniqueBaseFiles(data?.files); + }, [data]); + + function extractBaseName(fileName: string): string { + const match = fileName.match(/^(.+?)_\w+\.(jpg|jpeg|png|webp)$/i); + return match ? match[1] : fileName; + } + + const getUniqueBaseFiles = (files: any) => { + if (files && files.length > 0) { + const seen = new Set(); + const result: any = []; + + for (const file of files) { + const baseName = extractBaseName(file.file_name); + if (!seen.has(baseName)) { + seen.add(baseName); + result.push(file); + } + } + setFilteredFiles(result); + } + }; const handleShare = async (platform: string) => { let shareLink = ""; @@ -157,9 +183,9 @@ export default function DetailNews(props: { data: any; listArticle: any }) {

- {data?.files ? ( - data?.files[0]?.file_name.split(".")[1].includes("doc") || - data?.files[0]?.file_name.split(".")[1].includes("pdf") ? ( + {filteredFiles ? ( + filteredFiles[0]?.file_name.split(".")[1].includes("doc") || + filteredFiles[0]?.file_name.split(".")[1].includes("pdf") ? ( ) : ( - data?.files?.length > 0 && ( + filteredFiles?.length > 0 && ( Main Image ) @@ -186,10 +212,10 @@ export default function DetailNews(props: { data: any; listArticle: any }) { "" )}
- {data?.files?.length > 0 && - (data.files[0].file_name.split(".")[1].includes("doc") || - data.files[0].file_name.split(".")[1].includes("pdf") ? ( - data.files?.map((file: any, index: number) => ( + {filteredFiles?.length > 0 && + (filteredFiles[0].file_name.split(".")[1].includes("doc") || + filteredFiles[0].file_name.split(".")[1].includes("pdf") ? ( + filteredFiles?.map((file: any, index: number) => ( - {data?.files?.map((file: any, index: number) => ( + {filteredFiles?.map((file: any, index: number) => ( setImageNow(index)} @@ -261,7 +287,7 @@ export default function DetailNews(props: { data: any; listArticle: any }) { dangerouslySetInnerHTML={removeImgTags( formatTextToHtmlTag(data?.htmlDescription) )} - className="text-sm lg:text-xl lg:leading-8 text-justify space-y-4" + className="text-sm lg:text-xl lg:leading-8 text-justify" />