From 84c674cefdd0d1a2ea1b54a7bedd9a867b2a87be Mon Sep 17 00:00:00 2001 From: mukeshs Date: Fri, 10 Oct 2025 20:42:13 +0530 Subject: [PATCH] Image error resolve --- src/components/blogs/BlogListing.tsx | 94 +++++++++++++++------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/src/components/blogs/BlogListing.tsx b/src/components/blogs/BlogListing.tsx index 865fb17..e3569c8 100644 --- a/src/components/blogs/BlogListing.tsx +++ b/src/components/blogs/BlogListing.tsx @@ -1,6 +1,6 @@ // components/BlogListing.tsx 'use client'; -import { useState, useEffect, useCallback } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import Image from 'next/image'; import Link from 'next/link'; import { ChevronRight } from 'lucide-react'; @@ -26,31 +26,31 @@ const BlogListing: React.FC = () => { // Filter blogs based on category and search query const filterBlogs = useCallback(() => { - let filtered = blogs; + let filtered = blogs; - if (selectedCategory !== 'All Categories') { - filtered = filtered.filter(blog => - blog.tags.some(tag => - tag.toLowerCase().includes(selectedCategory.toLowerCase()) - ) - ); - } + if (selectedCategory !== 'All Categories') { + filtered = filtered.filter(blog => + blog.tags.some(tag => + tag.toLowerCase().includes(selectedCategory.toLowerCase()) + ) + ); + } - if (searchQuery.trim()) { - const query = searchQuery.toLowerCase().trim(); - filtered = filtered.filter(blog => - blog.title.toLowerCase().includes(query) || - blog.excerpt.toLowerCase().includes(query) || - blog.tags.some(tag => tag.toLowerCase().includes(query)) || - (blog.professors && blog.professors.some(prof => - prof.firstName?.toLowerCase().includes(query) || - prof.name?.toLowerCase().includes(query) - )) - ); - } + if (searchQuery.trim()) { + const query = searchQuery.toLowerCase().trim(); + filtered = filtered.filter(blog => + blog.title.toLowerCase().includes(query) || + blog.excerpt.toLowerCase().includes(query) || + blog.tags.some(tag => tag.toLowerCase().includes(query)) || + (blog.professors && blog.professors.some(prof => + prof.firstName?.toLowerCase().includes(query) || + prof.name?.toLowerCase().includes(query) + )) + ); + } - setFilteredBlogs(filtered); -}, [blogs, selectedCategory, searchQuery]); + setFilteredBlogs(filtered); + }, [blogs, selectedCategory, searchQuery]); // Load blogs from API useEffect(() => { @@ -58,13 +58,13 @@ const BlogListing: React.FC = () => { try { setLoading(true); setError(null); - + // Load both posted blogs and tag counts const [fetchedBlogs, fetchedTagCounts] = await Promise.all([ blogService.getPostedBlogs(), blogService.getTagsWithCount() ]); - + setBlogs(fetchedBlogs); setFilteredBlogs(fetchedBlogs); setTagCounts(fetchedTagCounts); @@ -83,10 +83,10 @@ const BlogListing: React.FC = () => { // Filter blogs when category or search changes useEffect(() => { - if (mounted && blogs.length > 0) { - filterBlogs(); - } -}, [mounted, filterBlogs]); + if (mounted && blogs.length > 0) { + filterBlogs(); + } + }, [mounted, filterBlogs]); // Handle mount @@ -134,8 +134,8 @@ const BlogListing: React.FC = () => {

⚠️ {error}

-
+ {/* Results Info */} {(selectedCategory !== 'All Categories' || searchQuery.trim()) && (

- {filteredBlogs.length === 0 - ? 'No blogs found matching your criteria.' + {filteredBlogs.length === 0 + ? 'No blogs found matching your criteria.' : `Showing ${blogsToShow.length} of ${filteredBlogs.length} blog${filteredBlogs.length !== 1 ? 's' : ''}` }

@@ -238,8 +242,8 @@ const BlogListing: React.FC = () => { {blogsToShow.length === 0 ? (

- {searchQuery.trim() || selectedCategory !== 'All Categories' - ? 'No blogs match your search criteria.' + {searchQuery.trim() || selectedCategory !== 'All Categories' + ? 'No blogs match your search criteria.' : 'No blogs available at the moment.' }

@@ -272,11 +276,11 @@ const BlogListing: React.FC = () => { {/* Blog Image */}
{blog.title} + src={blog.image} + alt={blog.title} + className="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" + onError={handleImageError} + />
{/* Blog Content */}