import { useState, useEffect } from "react" import { Link } from "react-router-dom" import { Channels, User } from "../types" import axios from "axios" import TopBar from "../components/TopBar" export default function ChannelsPage({socket}: {socket: WebSocket}) { const [channels, setChannels] = useState(); const [search, setSearch] = useState(""); const [token, setToken] = useState(""); const [user, setUser] = useState(); function deleteChannel(name: string) { if (!window.confirm(`Are you sure you want to delete ${name}?`)) { return; } axios .post(`/api/channels/${name}/delete`, { token }) .catch((err) => { console.error(err.response); }); } useEffect(() => { const token = localStorage.getItem("token") if (token) { setToken(token) axios .post("/api/auth/me", { token: token }) .then((res) => { setUser(res.data) }) } axios .get("/api/channels") .then((res) => { setChannels(res.data) }) .catch((err) => { console.error(err.response) }) }, []) useEffect(() => { socket.addEventListener('message', function (event) { const data = JSON.parse(event.data); if (data.type === "new_channel" || data.type === "delete_channel") { axios .get("/api/channels") .then((res) => { setChannels(res.data) }) .catch((err) => { console.error(err.response) }) } }); }, []) if (!channels) { return (

Channels

Loading...

) } return (

Channels

Create channel setSearch(e.target.value)} />
    {channels?.sort().filter((channel) => channel.name.toLowerCase().includes(search.toLowerCase())).map((channel) => (
  • {channel.name} {user?.admin == 1 && ( )}
  • ))}
) }