import { getSingleImageUrl } from "@/helper/getImageUrl";
import { get } from "@/api1/apiUtils";
import { useEffect, useState } from "react";
import Head from "next/head";
import CommentBoxForm from "@/components/comment/Comment";
import LayoutWrapper from "@/components/Layout/LayOutWrapper";
import moment from "moment";
import { useRouter } from "next/router";


interface BlogDetailProps {
    title: string;
    description: string;
    author: string;
    banner: string;
    publishedDate: string;
    content: string;
    facebookLink: string;
    instagramLink: string;
    youtubeLink: string;
    tags: string[];
    categories: string;
    featuredImages: string[];
    categoryId: number;
    metaDescription: string;
}

const BlogDetail: React.FC = () => {
    const [blogData, setBlogData] = useState<BlogDetailProps | null>(null);
    const router = useRouter();
    const { blogId } = router.query;

    useEffect(() => {
        if (!router.isReady || !blogId) return;

        async function fetchData() {
            try {
                const res = await get(`/blogs/${blogId}`) as BlogDetailProps;
                setBlogData(res);
            } catch (err) {
                console.error(err);
                setBlogData(null);
            }
        }

        fetchData();
    }, [router.isReady, blogId]);

    if (!blogData) return <div>Loading...</div>;

    return (
        <>
            <Head>
                <meta property="og:title" content={`${blogData?.title} - Ayodhyas`} />
                <meta property="og:description" content={blogData?.metaDescription} />
                <meta property="og:url" content={blogData?.facebookLink} />
                <meta property="og:article:author" content={blogData?.author} />
                <meta property="og:type" content="article" />
                <meta property="og:site_name" content="ayodhyas.com" />
                <title>{blogData?.title} - Ayodhyas</title>
                <meta name="keywords" content={blogData?.categories || ''} />
                <meta name="description" content={blogData?.metaDescription} />
                <meta name="author" content={blogData?.author} />
                <meta property="og:article:published_time" content={new Date(blogData?.publishedDate).toISOString()} />
                <meta property="og:article:modified_time" content={new Date().toISOString()} />
                <meta name="robots" content="index, follow" />
            </Head>
            <LayoutWrapper>
                <div className="blog-dtl-bg">
                    <div className="container">
                        <div className="row">
                            <div className="col-md-9">
                                <DetailsofContent
                                    title={blogData?.title}
                                    author={blogData?.author}
                                    date={new Date(blogData?.publishedDate).toLocaleDateString()}
                                    content={blogData?.content}
                                    facebookLink={blogData?.facebookLink}
                                    instagramLink={blogData?.instagramLink}
                                    youtubeLink={blogData?.youtubeLink}
                                    bannerImg={blogData?.banner}
                                />
                                <CommentBoxForm />
                            </div>
                        </div>
                    </div>
                </div>
                <div style={{ height: '40px' }}></div>
            </LayoutWrapper>
        </>
    );
};

export default BlogDetail;

interface DetailsofContentProps {
    author: string;
    date: string;
    content: string;
    facebookLink: string;
    instagramLink: string;
    title: string;
    youtubeLink: string;
    bannerImg: string;
}

const DetailsofContent: React.FC<DetailsofContentProps> = ({
    author,
    date,
    content,
    facebookLink,
    instagramLink,
    bannerImg,
    youtubeLink,
    title,
}) => {
    return (
        <>
            <div className="blg-dtl-boxvw mt-3">
                <h1 className="h1-heading-fntsz">{title} - Ayodhyas</h1>
                <p className="date-fntvw mt-3">
                    {moment(date).format('MMMM Do YYYY, h:mm a')} By {author}
                </p>


                <img
                    src={getSingleImageUrl(bannerImg)}
                    className="img-fluid rounded blg-dtl-img banner-img"
                    alt={title}
                />

                <SocialIcons
                    facebookLink={facebookLink}
                    instagramLink={instagramLink}
                    youtubeLink={youtubeLink}
                />

                <div dangerouslySetInnerHTML={{ __html: content ?? '' }} />
            </div>
        </>
    );
};






interface SocialIconsProps {
    facebookLink: string;
    instagramLink: string;
    youtubeLink: string;
}

const SocialIcons: React.FC<SocialIconsProps> = ({
    facebookLink,
    instagramLink,
    youtubeLink,
}) => {
    return (
        <>
            <div className="d-flex mt-3 mb-3 social-icon-outer">
                {facebookLink && (
                    <div className="social-icon-box">
                        <a href={facebookLink} target="_blank" rel="noopener noreferrer">
                            <i className="bi bi-facebook fs-4"></i>
                        </a>
                    </div>
                )}

                {instagramLink && (
                    <div className="social-icon-box ms-2">
                        <a href={instagramLink} target="_blank" rel="noopener noreferrer">
                            <i className="bi bi-instagram fs-4"></i>
                        </a>
                    </div>
                )}

                {youtubeLink && (
                    <div className="social-icon-box ms-2">
                        <a href={youtubeLink} target="_blank" rel="noopener noreferrer">
                            <i className="bi bi-youtube fs-4"></i>
                        </a>
                    </div>
                )}
            </div>
        </>
    );
};


// export async function getServerSideProps(context: any) {
//     const { params } = context;
//     const blogId = params.blogId;

//     const apiUrl = `${mainUrl}/blogs/${blogId}`;
//     const apiUrl1 = `/blogs/${blogId}`;

//     console.log(apiUrl)

//     try {

//         const res = await get(apiUrl1)
//         console.log(res)
//         const response = await fetch(apiUrl, {
//             method: 'GET',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });

//         console.log('fired--->', response)

//         if (!response.ok) {
//             throw new Error(`Error: ${response.status}`);
//         }

//         const blogData = await response.json();

//         return {
//             props: {

//             },
//         };
//     } catch (error) {
//         console.error("Error Here :", error);
//         return {
//             props: {},
//         };
//     }
// }


// interface RecentPostProps {
//     title: string;
//     data: string[];
// }

// const RecentPost: React.FC<RecentPostProps> = ({ title, data }) => {
//     return (
//         <>
//             <div className="blg-dtl-boxvw mt-3">
//                 <h5 className="h5-tag-fntsz">{title}</h5>
//                 {data?.map((item, index) => (
//                     <a key={index}>
//                         <h6 className="linking-fnt-sz">{item}</h6>
//                     </a>
//                 ))}
//             </div>
//         </>
//     );
// };



// const RecentSearch = () => {
//     return (
//         <>
//             <div className="blg-dtl-boxvw mt-3">
//                 <form action="" className="d-flex">
//                     <input
//                         type="text"
//                         placeholder="Search here..."
//                         className="search-blg-input"
//                     />
//                     <div className="search-iconbox">
//                         <i className="bi bi-search fs-5"></i>
//                     </div>
//                 </form>
//             </div>
//         </>
//     );
// };
