import { IconButton } from "./button"; import { ErrorBoundary } from "./error"; import styles from "./mask.module.scss"; import DownloadIcon from "../icons/download.svg"; import EditIcon from "../icons/edit.svg"; import AddIcon from "../icons/add.svg"; import CloseIcon from "../icons/close.svg"; import DeleteIcon from "../icons/delete.svg"; import EyeIcon from "../icons/eye.svg"; import CopyIcon from "../icons/copy.svg"; import { Plugin, usePluginStore } from "../store/plugin"; import { Input, List, ListItem, Modal, Popover, Select, showConfirm, } from "./ui-lib"; import Locale from "../locales"; import { useNavigate } from "react-router-dom"; import { useEffect, useState } from "react"; import { Path } from "../constant"; import { nanoid } from "nanoid"; export function PluginPage() { const navigate = useNavigate(); const pluginStore = usePluginStore(); const plugins = pluginStore.getAll(); const [editingPluginId, setEditingPluginId] = useState(); const editingPlugin = pluginStore.get(editingPluginId); const closePluginModal = () => setEditingPluginId(undefined); return (
{Locale.Plugin.Page.Title}
{Locale.Plugin.Page.SubTitle(plugins.length)}
} bordered onClick={() => navigate(-1)} />
{plugins.map((m) => (
{m.title}@{m.version}
{`${Locale.Plugin.Item.Info(m.content.length)} / / `}
{m.builtin ? ( } text={Locale.Plugin.Item.View} onClick={() => setEditingPluginId(m.id)} /> ) : ( } text={Locale.Plugin.Item.Edit} onClick={() => setEditingPluginId(m.id)} /> )} {!m.builtin && ( } text={Locale.Plugin.Item.Delete} onClick={async () => { if ( await showConfirm(Locale.Plugin.Item.DeleteConfirm) ) { pluginStore.delete(m.id); } }} /> )}
))}
{editingPlugin && (
} text={Locale.Plugin.EditModal.Download} key="export" bordered onClick={() => downloadAs( JSON.stringify(editingPlugin), `${editingPlugin.name}.json`, ) } />, } bordered text={Locale.Plugin.EditModal.Clone} onClick={() => { navigate(Path.Plugins); pluginStore.create(editingPlugin); setEditingPluginId(undefined); }} />, ]} > PluginConfig
)}
); }