build error fixes
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
// components/BlogListing.tsx
|
||||
'use client';
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useState, useEffect, useCallback } from 'react';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { ChevronRight } from 'lucide-react';
|
||||
@ -25,34 +25,32 @@ const BlogListing: React.FC = () => {
|
||||
};
|
||||
|
||||
// Filter blogs based on category and search query
|
||||
const filterBlogs = () => {
|
||||
let filtered = blogs;
|
||||
const filterBlogs = useCallback(() => {
|
||||
let filtered = blogs;
|
||||
|
||||
// Filter by category
|
||||
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())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Filter by search 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)
|
||||
))
|
||||
);
|
||||
}
|
||||
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);
|
||||
};
|
||||
setFilteredBlogs(filtered);
|
||||
}, [blogs, selectedCategory, searchQuery]);
|
||||
|
||||
// Load blogs from API
|
||||
useEffect(() => {
|
||||
@ -85,10 +83,11 @@ const BlogListing: React.FC = () => {
|
||||
|
||||
// Filter blogs when category or search changes
|
||||
useEffect(() => {
|
||||
if (mounted && blogs.length > 0) {
|
||||
filterBlogs();
|
||||
}
|
||||
}, [selectedCategory, searchQuery, blogs, mounted]);
|
||||
if (mounted && blogs.length > 0) {
|
||||
filterBlogs();
|
||||
}
|
||||
}, [mounted, filterBlogs]);
|
||||
|
||||
|
||||
// Handle mount
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user