import { createRoot } from 'react-dom/client'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import './index.css'

import Home from './pages/Home'
import ChannelPage from './pages/ChannelPage'
import UserPage from './pages/UserPage'
import Login from './pages/Login'
import Register from './pages/Register'
import CreateChannel from './pages/CreateChannel'
import ChannelsPage from './pages/ChannelsPage'
import UsersPage from './pages/UsersPage'
import EditProfile from './pages/EditProfile'
import CreateEmoji from './pages/CreateEmoji'
import EmojisPage from './pages/EmojisPage'
import NotFoundPage from './pages/404'

const socket = new WebSocket("/api/ws");

setInterval(() => {
  socket.send(JSON.stringify({ type: "ping" }));
}, 30 * 1000);

socket.addEventListener('message', function (event) {
  const data = JSON.parse(event.data);
  console.log(data);
});

createRoot(document.getElementById('root')!).render(
  <BrowserRouter>
    <Routes>
      <Route path="/" element={<Home socket={socket} />} />
      <Route path="/c/:name" element={<ChannelPage socket={socket} />} />
      <Route path="/u/:username" element={<UserPage socket={socket} />} />
      <Route path="/login" element={<Login />} />
      <Route path="/register" element={<Register />} />
      <Route path="/create-channel" element={<CreateChannel />} />
      <Route path="/channels" element={<ChannelsPage socket={socket} />} />
      <Route path="/users" element={<UsersPage socket={socket} />} />
      <Route path="/edit-profile" element={<EditProfile />} />
      <Route path="/create-emoji" element={<CreateEmoji />} />
      <Route path="/emojis" element={<EmojisPage socket={socket} />} />
      <Route path="*" element={<NotFoundPage />} />
    </Routes>
  </BrowserRouter>
)
