import { Button, FormControl, FormLabel, Heading, HStack, Input, SimpleGrid, } from "@hope-ui/solid" import { createSignal } from "solid-js" import { FolderChooseInput, MaybeLoading } from "~/components" import { useFetch, useManageTitle, useT, useUtil } from "~/hooks" import { Group, SettingItem, PResp } from "~/types" import { handleResp, notify, r } from "~/utils" import { Item } from "./SettingItem" const OtherSettings = () => { const t = useT() useManageTitle("manage.sidemenu.other") const [uri, setUri] = createSignal("") const [secret, setSecret] = createSignal("") const [qbitUrl, setQbitUrl] = createSignal("") const [qbitSeedTime, setQbitSeedTime] = createSignal("") const [transmissionUrl, setTransmissionUrl] = createSignal("") const [transmissionSeedTime, setTransmissionSeedTime] = createSignal("") const [pan115TempDir, set115TempDir] = createSignal("") const [pikpakTempDir, setPikPakTempDir] = createSignal("") const [thunderTempDir, setThunderTempDir] = createSignal("") const [token, setToken] = createSignal("") const [settings, setSettings] = createSignal([]) const [settingsLoading, settingsData] = useFetch( (): PResp => r.get(`/admin/setting/list?groups=${Group.ARIA2},${Group.SINGLE}`), ) const [setAria2Loading, setAria2] = useFetch( (): PResp => r.post("/admin/setting/set_aria2", { uri: uri(), secret: secret() }), ) const [setQbitLoading, setQbit] = useFetch( (): PResp => r.post("/admin/setting/set_qbit", { url: qbitUrl(), seedtime: qbitSeedTime(), }), ) const [setTransmissionLoading, setTransmission] = useFetch( (): PResp => r.post("/admin/setting/set_transmission", { uri: transmissionUrl(), seedtime: transmissionSeedTime(), }), ) const [set115Loading, set115] = useFetch( (): PResp => r.post("/admin/setting/set_115", { temp_dir: pan115TempDir(), }), ) const [setPikPakLoading, setPikPak] = useFetch( (): PResp => r.post("/admin/setting/set_pikpak", { temp_dir: pikpakTempDir(), }), ) const [setThunderLoading, setThunder] = useFetch( (): PResp => r.post("/admin/setting/set_thunder", { temp_dir: thunderTempDir(), }), ) const [setTokenLoading, setTokenRequest] = useFetch( (): PResp => r.post("/admin/setting/set_token", { token: token() }), ) const refresh = async () => { const resp = await settingsData() handleResp(resp, (data) => { setUri(data.find((i) => i.key === "aria2_uri")?.value || "") setSecret(data.find((i) => i.key === "aria2_secret")?.value || "") setToken(data.find((i) => i.key === "token")?.value || "") setQbitUrl(data.find((i) => i.key === "qbittorrent_url")?.value || "") setQbitSeedTime( data.find((i) => i.key === "qbittorrent_seedtime")?.value || "", ) setTransmissionUrl( data.find((i) => i.key === "transmission_uri")?.value || "", ) setTransmissionSeedTime( data.find((i) => i.key === "transmission_seedtime")?.value || "", ) set115TempDir(data.find((i) => i.key === "115_temp_dir")?.value || "") setPikPakTempDir( data.find((i) => i.key === "pikpak_temp_dir")?.value || "", ) setThunderTempDir( data.find((i) => i.key === "thunder_temp_dir")?.value || "", ) setSettings(data) }) } refresh() const [resetTokenLoading, resetToken] = useFetch( (): PResp => r.post("/admin/setting/reset_token"), ) const { copy } = useUtil() return ( {t("settings_other.aria2")} i.key === "aria2_uri")!} value={uri()} onChange={(str) => setUri(str)} /> i.key === "aria2_secret")!} value={secret()} onChange={(str) => setSecret(str)} /> {t("settings_other.qbittorrent")} i.key === "qbittorrent_url")!} value={qbitUrl()} onChange={(str) => setQbitUrl(str)} /> i.key === "qbittorrent_seedtime")!} value={qbitSeedTime()} onChange={(str) => setQbitSeedTime(str)} /> {t("settings_other.transmission")} i.key === "transmission_uri")!} value={transmissionUrl()} onChange={(str) => setTransmissionUrl(str)} /> i.key === "transmission_seedtime")!} value={transmissionSeedTime()} onChange={(str) => setTransmissionSeedTime(str)} /> {t("settings_other.115")} {t(`settings.115_temp_dir`)} set115TempDir(path)} /> {t("settings_other.pikpak")} {t(`settings.pikpak_temp_dir`)} setPikPakTempDir(path)} /> {t("settings_other.thunder")} {t(`settings.thunder_temp_dir`)} setThunderTempDir(path)} /> {t("settings.token")} setToken(e.target.value as string)} /> ) } export default OtherSettings