diff --git a/gui/app/pack/page.tsx b/gui/app/pack/page.tsx index bdcac6e..bf88661 100644 --- a/gui/app/pack/page.tsx +++ b/gui/app/pack/page.tsx @@ -2,14 +2,7 @@ import { MOD_ENDPOINT, PACK_ENDPOINT, PACKS_ENDPOINT } from "@/api/ENDPOINTS"; import { Pack } from "@/types/pack"; -import { - Button, - Card, - Label, - Select, - Spinner, - TextInput, -} from "flowbite-react"; +import { Button, Card, Label, Spinner, TextInput } from "flowbite-react"; import { useSearchParams } from "next/navigation"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; @@ -26,20 +19,7 @@ export default function PackPage() { const id = useSearchParams().get("id") || ""; const [addModModalOpen, setAddModModalOpen] = useState(true); - const [modSource, setModSource] = useState<"Modrinth" | "CurseForge">( - "Modrinth" - ); - const [modUrl, setModUrl] = useState({ - placeholer: "https://modrinth.com/mod/{ slug }", - value: "", - }); - // const [modParams, setModParams] = useState<{ - // slug: string; - // version: string | null; - // }>({ - // slug: "", - // version: null, - // }); + const [modUrl, setModUrl] = useState(""); async function _getPacksData() { const res = await fetch(PACK_ENDPOINT("getPack", id)); @@ -94,32 +74,11 @@ export default function PackPage() { } } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const handleModSource = (e: any) => { - switch (e.target.value) { - case "Modrinth": - setModSource("Modrinth"); - setModUrl({ - placeholer: "https://modrinth.com/mod/{ slug }", - value: "", - }); - break; - case "CurseForge": - setModSource("CurseForge"); - setModUrl({ - placeholer: - "https://www.curseforge.com/minecraft/mc-mods/{ slug }", - value: "", - }); - break; - } - }; - async function addMod() { let slug = null; let version = null; - if (!modUrl.value) { + if (!modUrl) { toast.error("Mod url is required", { autoClose: 2500, closeOnClick: true, @@ -128,9 +87,24 @@ export default function PackPage() { return; } - switch (modSource) { + let source = null; + + if (modUrl.includes("modrinth.com")) { + source = "Modrinth"; + } else if (modUrl.includes("curseforge.com")) { + source = "CurseForge"; + } else { + toast.error("unknown source", { + autoClose: 2500, + closeOnClick: true, + draggable: true, + }); + return; + } + + switch (source) { case "Modrinth": - const _tmp = modUrl.value.split("/mod/"); + const _tmp = modUrl.split("/mod/"); if (_tmp.length == 1) { toast.error("invalid Modrinth url", { autoClose: 2500, @@ -146,7 +120,7 @@ export default function PackPage() { } break; case "CurseForge": - const _tmp3 = modUrl.value.split("/mc-mods/"); + const _tmp3 = modUrl.split("/mc-mods/"); if (_tmp3.length == 1) { toast.error("invalid CurseForge url", { autoClose: 2500, @@ -161,20 +135,18 @@ export default function PackPage() { version = _tmp4[1]; } break; + default: + toast.error("failed to parse url", { + autoClose: 2500, + closeOnClick: true, + draggable: true, + }); + return; } slug = slug.replace("/", ""); version = version ? version.replace("/", "") : null; - // if (packMods.find((elem) => elem.slug == slug)) { - // toast.error(`mod (${slug}) already exists`, { - // autoClose: 2500, - // closeOnClick: true, - // draggable: true, - // }); - // return; - // } - if (!packData) return; const tid = toast.loading(`Adding mod`); const res = await fetch(MOD_ENDPOINT("addMod", packData._id), { @@ -182,7 +154,7 @@ export default function PackPage() { body: JSON.stringify({ slug, version, - source: modSource, + source, }), headers: { "content-type": "application/json", @@ -211,7 +183,7 @@ export default function PackPage() { closeOnClick: true, draggable: true, }); - setModUrl({ ...modUrl, value: "" }); + // setModUrl({ ...modUrl, value: "" }); _getPacksData(); } @@ -274,7 +246,11 @@ export default function PackPage() {
Can be one of:
+