import { Routes, Route } from 'react-router-dom'
import Navbar from './components/Navbar'
import Footer from './components/Footer'
import Home from './pages/Home'
import Details from './pages/Details'
import Collections from './pages/Collections'
import Lab from './pages/Lab'
import { isWalletConnected, loadData } from './services/blockchain'
import { useEffect } from 'react'
import { ToastContainer } from 'react-toastify'
import ChatButton from './components/ChatButton'
import { checkAuthState } from './services/chat'
import ChatList from './components/ChatList'
import Spacer from './components/Spacer'
import Chat from './pages/Chat'
import { useGlobalState } from './store'

const App = () => {
  const [connectedAccount] = useGlobalState('connectedAccount')
  useEffect(() => {
    isWalletConnected()
    const fetchData = async () => {
      await loadData()
      await checkAuthState()
    }

    fetchData()
  }, [])

  return (
    <div className="min-h-screen relative">
      <Navbar />
      <Spacer spaces={2} />
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/nft/:id" element={<Details />} />
        <Route path="/collections" element={<Collections />} />
        <Route path="/lab" element={<Lab />} />
        <Route path="/chats/:id" element={<Chat />} />
      </Routes>
      <Spacer spaces={7} />
      <Footer />
      {connectedAccount && <ChatButton />}
      <ChatList />

      <ToastContainer
        position="bottom-center"
        autoClose={5000}
        hideProgressBar={false}
        newestOnTop={false}
        closeOnClick
        rtl={false}
        pauseOnFocusLoss
        draggable
        pauseOnHover
        theme="dark"
      />
    </div>
  )
}

export default App