Add IgMetaBlock component
This commit is contained in:
47
client/src/components/IgMetaBlock.tsx
Normal file
47
client/src/components/IgMetaBlock.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
import ExpandableText from './ExpandableText';
|
||||
import type { InstagramMeta } from '../types';
|
||||
|
||||
interface Props {
|
||||
ig: InstagramMeta;
|
||||
entryId?: string;
|
||||
}
|
||||
|
||||
export default function IgMetaBlock({ ig, entryId }: Props) {
|
||||
const profileUrl = ig.profile_url || (ig.username ? `https://www.instagram.com/${ig.username}/` : undefined);
|
||||
const postDate = ig.post_date;
|
||||
return (
|
||||
<div className="ig-block">
|
||||
{ig.profile_pic_url ? (
|
||||
<a href={profileUrl || '#'} target="_blank" rel="noreferrer">
|
||||
<img
|
||||
className="ig-avatar"
|
||||
src={entryId ? `/api/profile-pic?id=${encodeURIComponent(entryId)}` : ig.profile_pic_url}
|
||||
alt={ig.username || 'profile'}
|
||||
onError={(e) => {
|
||||
if (ig.profile_pic_url && !e.currentTarget.dataset.fallback) {
|
||||
e.currentTarget.dataset.fallback = '1';
|
||||
e.currentTarget.src = ig.profile_pic_url;
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
) : (
|
||||
<div className="ig-avatar placeholder" />
|
||||
)}
|
||||
<div className="ig-body">
|
||||
<div className="ig-row">
|
||||
{ig.username ? (
|
||||
<a className="ig-name" href={profileUrl || '#'} target="_blank" rel="noreferrer">
|
||||
{ig.username}
|
||||
</a>
|
||||
) : (
|
||||
<span className="ig-name">Instagram</span>
|
||||
)}
|
||||
{ig.full_name && <span className="muted"> · {ig.full_name}</span>}
|
||||
</div>
|
||||
<div className="muted">{postDate || 'Date unknown'}</div>
|
||||
{ig.description && <ExpandableText text={ig.description} />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user