import { PluginStatus, usePluginStore } from "@/hooks/stores"; import Modal from "@components/Modal"; import AutoHeight from "@components/AutoHeight"; import Card, { 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"; import { PluginStatusIcon } from "./PluginStatusIcon"; import { cx } from "@/cva.config"; 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); const {setIsPluginUploadModalOpen} = usePluginStore(); 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]) const uploadPlugin = useCallback(() => { setOpen(false); setIsPluginUploadModalOpen(true); }, [setIsPluginUploadModalOpen, setOpen]) return ( {plugin && <> {plugin.status} >} {/* Enable/Disable toggle */} { updatePlugin(!plugin?.enabled); }} /> Name {plugin?.name} Active Version {plugin?.version} Description {plugin?.description} Homepage {plugin?.homepage} {error && {error}} {plugin?.message && ( <> Plugin message: {plugin.message} > )} Plugin configuration coming soon { setOpen(false); }} /> ) }
{plugin.status}
{error}
Plugin message:
Plugin configuration coming soon