import { MOD_ENDPOINT } from "@/api/ENDPOINTS"; import { Mod } from "@/types/mod"; import { Button } from "flowbite-react"; // import { useState } from "react"; import { HiDownload, HiTrash } from "react-icons/hi"; import { toast } from "react-toastify"; import { Accordion, AccordionContent, AccordionPanel, AccordionTitle, } from "flowbite-react"; export const ModTable = (props: { mods: Mod[]; updatePack: () => void; packID: string; downloadMods: (mods: string[]) => void; }) => { function bytesToSize(bytes: number) { const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; if (bytes == 0) return "n/a"; const i = Math.floor(Math.log(bytes) / Math.log(1024)); if (i == 0) return bytes + " " + sizes[i]; return (bytes / Math.pow(1024, i)).toFixed(1) + " " + sizes[i]; } async function deleteMod(slug: string, title: string) { if (!window) return; if (window.confirm(`Delete mod ${title}?`)) { const res = await fetch(MOD_ENDPOINT("deleteMod", props.packID, slug)); const data = await res.json(); if (data.status != "ok") { toast.error(data.message, { autoClose: 2500, closeOnClick: true, draggable: true, }); return; } props.updatePack(); } } if (!props.mods || props.mods.length == 0) { return <>; } return ( {props.mods.map((mod) => { return (
{/* eslint-disable-next-line @next/next/no-img-element */} {mod.title} ({mod.slug})

Developers

{mod.developers.join(", ")}

Source

title: {mod.source}

id:{" "} {mod.project_id}

link: {mod.url}

Version info

filename:{" "} {mod.file.filename}

version:{" "} {mod.file.version}

file size:{" "} {bytesToSize(mod.file.size)}

Environment

{mod.environment.client &&

client

} {mod.environment.server &&

server

} {mod.environment.client && mod.environment.server && (

client & server

)} {/*

filename:{" "} {mod.file.filename}

version:{" "} {mod.file.version}

file size:{" "} {bytesToSize(mod.file.size)}

*/}

Hashes

{Object.entries(mod.file.hashes).map((hash) => { return (

{hash[0]}:{" "} {hash[1]}

); })}
{mod.dependencies.length > 0 ? (

Dependencies

{mod.dependencies.map((dep) => { return (
{/* eslint-disable-next-line @next/next/no-img-element */} {dep.title} ({dep.slug})

filename:{" "} {dep.file.filename}

version:{" "} {dep.file.version}

file size:{" "} {bytesToSize(dep.file.size)}

); })}
) : ( "" )}
); })}
); };