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 && (
)
@@ -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"
/>