import { useState, useEffect } from "react" import { Link } from "react-router-dom" import { Emojis, User } from "../types" import axios from "axios" import TopBar from "../components/TopBar" import "../styles/EmojisPage.css" export default function EmojisPage({socket}: {socket: WebSocket}) { const [emojis, setEmojis] = useState(); const [search, setSearch] = useState(""); const [token, setToken] = useState(""); const [user, setUser] = useState(); function deleteEmoji(name: string) { if (!window.confirm(`Are you sure you want to delete ${name}?`)) { return; } axios .post(`/api/emojis/${name}/delete`, { token }) .then(() => { window.location.reload(); }) .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/emojis") .then((res) => { setEmojis(res.data) }) .catch((err) => { console.error(err.response) }) }, []) useEffect(() => { socket.addEventListener('message', function (event) { const data = JSON.parse(event.data); if (data.type === "new_emoji" || data.type === "delete_emoji") { axios .get("/api/emojis") .then((res) => { setEmojis(res.data) }) .catch((err) => { console.error(err.response) }) } }); }, []) if (!emojis) { return (

Emojis

Loading...

) } return (

Emojis

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