Spaces:
No application file
No application file
| import { useEffect, useState } from "react"; | |
| import { useRouter } from "next/router"; | |
| export default function DeleteBot() { | |
| const [bots, setBots] = useState([]); | |
| const router = useRouter(); | |
| useEffect(() => { | |
| const fetchBots = async () => { | |
| const response = await fetch("/api/get_bots"); | |
| const data = await response.json(); | |
| setBots(data); | |
| }; | |
| fetchBots(); | |
| }, []); | |
| const handleDeleteBot = async (event) => { | |
| event.preventDefault(); | |
| const selectedBotSlug = event.target.bot_name.value; | |
| if (selectedBotSlug === "none") { | |
| return; | |
| } | |
| const response = await fetch("/api/delete_bot", { | |
| method: "POST", | |
| body: JSON.stringify({ slug: selectedBotSlug }), | |
| headers: { | |
| "Content-Type": "application/json", | |
| }, | |
| }); | |
| if (response.ok) { | |
| router.reload(); | |
| } | |
| }; | |
| return ( | |
| <> | |
| {bots.length !== 0 && ( | |
| <div className="w-full"> | |
| {/* Delete Bot */} | |
| <h2 className="text-xl font-bold text-gray-800">DELETE BOTS</h2> | |
| <form className="py-2" onSubmit={handleDeleteBot}> | |
| <label className="block mb-2 text-sm font-medium text-gray-900"> | |
| List of Bots | |
| </label> | |
| <div className="flex flex-col sm:flex-row gap-x-4 gap-y-4"> | |
| <select | |
| name="bot_name" | |
| defaultValue="none" | |
| className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" | |
| > | |
| <option value="none">Select a Bot</option> | |
| {bots.map((bot) => ( | |
| <option key={bot.slug} value={bot.slug}> | |
| {bot.name} | |
| </option> | |
| ))} | |
| </select> | |
| <button | |
| type="submit" | |
| className="h-fit text-white bg-red-600 hover:bg-red-600/90 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center" | |
| > | |
| Delete | |
| </button> | |
| </div> | |
| </form> | |
| </div> | |
| )} | |
| </> | |
| ); | |
| } | |