Skip to content

Commit 9ad9d59

Browse files
committed
add functionality to fetch and display website title in Metadata component
1 parent 1458a05 commit 9ad9d59

File tree

1 file changed

+24
-2
lines changed
  • app/[locale]/(user)/datasets/[datasetIdentifier]/components/Metadata

1 file changed

+24
-2
lines changed

app/[locale]/(user)/datasets/[datasetIdentifier]/components/Metadata/index.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import Image from 'next/image';
33
import Link from 'next/link';
44
import { Button, Divider, Icon, Text } from 'opub-ui';
55

6+
import { getWebsiteTitle } from '@/lib/utils';
67
import { Icons } from '@/components/icons';
78

89
interface MetadataProps {
@@ -47,6 +48,27 @@ const MetadataComponent: React.FC<MetadataProps> = ({ data, setOpen }) => {
4748
return option ? option.label : value; // fallback to value if no match
4849
};
4950

51+
const [sourceTitle, setSourceTitle] = useState<string | null>(null);
52+
53+
useEffect(() => {
54+
const fetchTitle = async () => {
55+
try {
56+
const urlItem = data.metadata.find(
57+
(item: any) => item.metadataItem?.dataType === 'URL'
58+
);
59+
60+
if (urlItem && urlItem.value) {
61+
const title = await getWebsiteTitle(urlItem.value);
62+
setSourceTitle(title);
63+
}
64+
} catch (error) {
65+
console.error('Error fetching website title:', error);
66+
}
67+
};
68+
69+
fetchTitle();
70+
}, [data.metadata]);
71+
5072
return (
5173
<div className="flex flex-col gap-10">
5274
<div className=" flex items-center justify-between">
@@ -128,7 +150,7 @@ const MetadataComponent: React.FC<MetadataProps> = ({ data, setOpen }) => {
128150
) : (
129151
<Link href={item.value} target="_blank">
130152
<Text className="underline" color="highlight">
131-
Source
153+
{sourceTitle?.trim() ? sourceTitle : 'Source'}
132154
</Text>
133155
</Link>
134156
)}

0 commit comments

Comments
 (0)