import { PluginStatus } from "@/hooks/stores"; import Modal from "@components/Modal"; import AutoHeight from "@components/AutoHeight"; import { GridCard } from "@components/Card"; import LogoBlueIcon from "@/assets/logo-blue.svg"; import LogoWhiteIcon from "@/assets/logo-white.svg"; import { ViewHeader } from "./MountMediaDialog"; import { Button } from "./Button"; import { useJsonRpc } from "@/hooks/useJsonRpc"; import { useCallback, useEffect, useState } from "react"; export default function PluginConfigureModal({ plugin, open, setOpen, }: { plugin: PluginStatus | null; open: boolean; setOpen: (open: boolean) => void; }) { return ( setOpen(false)}> ) } function Dialog({ plugin, setOpen }: { plugin: PluginStatus | null, setOpen: (open: boolean) => void }) { const [send] = useJsonRpc(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { setLoading(false); }, [plugin]) const updatePlugin = useCallback((enabled: boolean) => { if (!plugin) return; if (!enabled) { if (!window.confirm("Are you sure you want to disable this plugin?")) { return; } } setLoading(true); send("pluginUpdateConfig", { name: plugin.name, enabled }, resp => { if ("error" in resp) { setLoading(false); setError(resp.error.message); return } setOpen(false); }); }, [send, plugin, setOpen]) const uninstallPlugin = useCallback(() => { if (!plugin) return; if (!window.confirm("Are you sure you want to uninstall this plugin? This will not delete any data.")) { return; } setLoading(true); send("pluginUninstall", { name: plugin.name }, resp => { if ("error" in resp) { setLoading(false); setError(resp.error.message); return } setOpen(false); }); }, [send, plugin, setOpen]) return (
JetKVM Logo JetKVM Logo
{/* Enable/Disable toggle */}
{error &&

{error}

}

TODO: Plugin configuration goes here

) }