diff --git a/src/pages/Friends.jsx b/src/pages/Friends.jsx index f046319..1dca192 100644 --- a/src/pages/Friends.jsx +++ b/src/pages/Friends.jsx @@ -6,6 +6,7 @@ import Card from "../components/ui/Card"; import DeveloperCard from "../components/friends/DeveloperCard"; import Loader from "../components/ui/Loader"; import { useAuth } from "../context/AuthContext"; +import collegesList from "../data/colleges.json"; import { fetchDevelopers, hydrateConnections, @@ -45,6 +46,7 @@ export const Friends = () => { following: [], suggested: [] }); + const [selectedCollege, setSelectedCollege] = useState("All"); // 1. Initial Load & Setup Listeners useEffect(() => { @@ -119,6 +121,7 @@ export const Friends = () => { username: userData?.githubUsername || currentUser.uid, avatar: userData?.avatar || userData?.photoURL || currentUser.photoURL || `https://ui-avatars.com/api/?name=You&background=random`, role: userData?.role || "Developer", + college: userData?.college || "Unknown", bio: userData?.bio || "That's you!", tags: userData?.skills || ["Developer"], mutualFriends: 0, @@ -133,6 +136,12 @@ export const Friends = () => { }, [connections.followers, connections.following, currentUser, userData]); const activeDevelopers = activeTab === "leaderboard" ? leaderboardStandings : connections[activeTab] || []; + const filteredDevelopers = React.useMemo(() => { + return activeDevelopers.filter(dev => { + if (selectedCollege === "All") return true; + return dev.college === selectedCollege; + }); + }, [activeDevelopers, selectedCollege]); const tabCopy = { friends: "Developers who follow you back and collaborate with you across RankerHub.", @@ -211,7 +220,7 @@ export const Friends = () => {
-
+

{activeTab} @@ -220,14 +229,27 @@ export const Friends = () => { {tabCopy[activeTab]}

- - {activeDevelopers.length} developers - + +
+ + + {filteredDevelopers.length} devs + +
- {activeDevelopers.length > 0 ? ( + {filteredDevelopers.length > 0 ? (
- {activeDevelopers.map((developer, index) => ( + {filteredDevelopers.map((developer, index) => (
{activeTab === "leaderboard" && (