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}
-