import React from 'react'; import { Card } from 'primereact/card'; import { Avatar } from 'primereact/avatar'; import { Tag } from 'primereact/tag'; import { Button } from 'primereact/button'; import { ProgressSpinner } from 'primereact/progressspinner'; import { useDiscordQuery } from '@/hooks/communityQueries/useDiscordQuery'; import { useQuery } from '@tanstack/react-query'; import axios from 'axios'; import { useRouter } from 'next/router'; const StackerNewsIconComponent = () => ( ); const fetchStackerNews = async () => { const response = await axios.get('/api/stackernews'); return response.data.data.items.items; }; const GlobalFeed = () => { const router = useRouter(); const { data: discordData, error: discordError, isLoading: discordLoading } = useDiscordQuery({page: router.query.page}); const { data: stackerNewsData, error: stackerNewsError, isLoading: stackerNewsLoading } = useQuery({queryKey: ['stackerNews'], queryFn: fetchStackerNews}); if (discordLoading || stackerNewsLoading) { return (
); } if (discordError || stackerNewsError) { return
Failed to load feed. Please try again later.
; } const combinedFeed = [ ...(discordData || []).map(item => ({ ...item, type: 'discord' })), ...(stackerNewsData || []).map(item => ({ ...item, type: 'stackernews' })) ].sort((a, b) => new Date(b.timestamp || b.createdAt) - new Date(a.timestamp || a.createdAt)); const header = (item) => (

{item.type === 'discord' ? item.author : item.user.name}

{item.type === 'discord' ? ( <> ) : ( <> } value="stackernews" className="w-fit bg-gray-600 text-[#f8f8ff] max-sidebar:mt-1" /> )}
); const footer = (item) => (
{new Date(item.timestamp || item.createdAt).toLocaleString()}
); return (
{combinedFeed.length > 0 ? ( combinedFeed.map(item => ( header(item)} footer={() => footer(item)} className="w-full bg-gray-700 shadow-lg hover:shadow-xl transition-shadow duration-300 mb-4" > {item.type === 'discord' ? (

{item.content}

) : ( <>

{item.title}

Comments: {item.comments.length} | Sats: {item.sats}

)}
)) ) : (
No items available.
)}
); }; export default GlobalFeed;