"use client";
import React, { useState, useEffect } from "react";
import { Card, CardHeader, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import Link from "next/link";
import Image from "next/image";
import axios from "axios";
import { backendUrl } from "@/utils/axios";
import DOMPurify from 'dompurify';
const BlogPost = ({ title, author, date, excerpt, imageUrl, slug }) => {
const sanitizedExcerpt = DOMPurify.sanitize(excerpt);
const formattedImageUrl = imageUrl !== "NA"
? (imageUrl.startsWith('http') ? imageUrl : `${backendUrl}${imageUrl}`)
: "/api/placeholder/300/200";
return (
{title}
{author} | {date}
);
};
const PopularArticle = ({ title, author, date, slug }) => (
{title}
{author} | {date}
);
const BlogHome = () => {
const [currentPage, setCurrentPage] = useState(1);
const [blogData, setBlogData] = useState({
recentBlogPosts: [],
popularArticles: []
});
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const postsPerPage = 3;
useEffect(() => {
const fetchBlogData = async () => {
try {
setLoading(true);
const response = await axios.get(`${backendUrl}/blogs/`);
setBlogData(response.data);
setLoading(false);
} catch (err) {
console.error("Error fetching blog data:", err);
setError("Failed to load blog data. Please try again later.");
setLoading(false);
}
};
fetchBlogData();
}, []);
// Get featured blog (first blog from recent posts)
const featuredBlog = blogData.recentBlogPosts && blogData.recentBlogPosts.length > 0
? blogData.recentBlogPosts[0]
: null;
// Get remaining blogs for pagination
const remainingBlogs = blogData.recentBlogPosts && blogData.recentBlogPosts.length > 0
? blogData.recentBlogPosts.slice(1)
: [];
const indexOfLastPost = currentPage * postsPerPage;
const indexOfFirstPost = indexOfLastPost - postsPerPage;
const currentPosts = remainingBlogs.slice(indexOfFirstPost, indexOfLastPost);
const paginate = (pageNumber) => setCurrentPage(pageNumber);
const featuredImageUrl = featuredBlog && featuredBlog.imageUrl !== "NA"
? (featuredBlog.imageUrl.startsWith('http') ? featuredBlog.imageUrl : `${backendUrl}${featuredBlog.imageUrl}`)
: "/api/placeholder/300/200";
if (loading) {
return Loading blogs...
;
}
if (error) {
return {error}
;
}
// Check if there are no blogs at all
if (!blogData.recentBlogPosts || blogData.recentBlogPosts.length === 0) {
return (
Insights from Gupta Rudraksha
No Blogs Found
We're currently working on creating insightful content for you.
Please check back later for updates on Rudraksha and spiritual practices.
);
}
return (
Insights from Gupta Rudraksha
Explore our latest articles on the spiritual, cultural, and healing
aspects
{/* Featured blog section */}
{featuredBlog && (
{featuredBlog.title}
{featuredBlog.author} | {featuredBlog.date}
Popular Articles
{blogData.popularArticles && blogData.popularArticles.length > 0 ? (
blogData.popularArticles.map((article, index) => (
))
) : (
No popular articles available
)}
)}
Recent Blogs
{currentPosts.length > 0 ? (
currentPosts.map((post, index) => (
))
) : (
No recent blogs available
)}
{remainingBlogs.length > postsPerPage && (
{[...Array(Math.ceil(remainingBlogs.length / postsPerPage))].map(
(_, index) => (
)
)}
)}
Popular Articles
{blogData.popularArticles && blogData.popularArticles.length > 0 ? (
blogData.popularArticles.map((article, index) => (
))
) : (
No popular articles available
)}
);
};
export default BlogHome;