import { unstable_cache } from "next/cache"; import Image from "next/image"; import { EmbeddedTweet, TweetNotFound } from "react-tweet"; import { fetchTweet as _fetchTweet } from "react-tweet/api"; import clsx from "clsx"; import type { ComponentPropsWithoutRef } from "react"; import styles from "./Tweet.module.css"; export type TweetProps = Omit, "tweet"> & { id: string; className?: string; }; const fetchTweet = unstable_cache(async (id: string) => _fetchTweet(id), [], { // cache indefinitely revalidate: false, }); const Tweet = async ({ id, className, ...rest }: TweetProps) => { try { const { data } = await fetchTweet(id); return (
{data ? ( , // eslint-disable-next-line jsx-a11y/alt-text MediaImg: (props) => , }} {...rest} /> ) : ( )}
); } catch (error) { console.error(error); return (
); } }; export default Tweet;