'use client'

import { useState, useEffect } from 'react'
import { useSearchParams } from 'next/navigation'
import { Note } from '@/lib/types'
import { getNotes, searchNotes } from '@/app/actions/notes'
import { NoteInput } from '@/components/note-input'
import { NoteGrid } from '@/components/note-grid'
import { useLabels } from '@/context/LabelContext'

export default function HomePage() {
  const searchParams = useSearchParams()
  const [notes, setNotes] = useState<Note[]>([])
  const [isLoading, setIsLoading] = useState(true)
  const { labels } = useLabels()

  useEffect(() => {
    const loadNotes = async () => {
      setIsLoading(true)
      const search = searchParams.get('search')
      const labelFilter = searchParams.get('labels')?.split(',').filter(Boolean) || []
      const colorFilter = searchParams.get('color')
      
      let allNotes = search ? await searchNotes(search) : await getNotes()

      // Filter by selected labels
      if (labelFilter.length > 0) {
        allNotes = allNotes.filter(note =>
          note.labels?.some(label => labelFilter.includes(label))
        )
      }

      // Filter by color (filter notes that have labels with this color)
      if (colorFilter) {
        const labelNamesWithColor = labels
          .filter(label => label.color === colorFilter)
          .map(label => label.name)
        
        allNotes = allNotes.filter(note =>
          note.labels?.some(label => labelNamesWithColor.includes(label))
        )
      }

      setNotes(allNotes)
      setIsLoading(false)
    }

    loadNotes()
  }, [searchParams, labels])

  return (
    <main className="container mx-auto px-4 py-8 max-w-7xl">
      <NoteInput />
      {isLoading ? (
        <div className="text-center py-8 text-gray-500">Loading...</div>
      ) : (
        <NoteGrid notes={notes} />
      )}
    </main>
  )
}
