From 1ae6519209c9bf079d8dff80d5bceb5a847b08b1 Mon Sep 17 00:00:00 2001 From: Jesse Bofill Date: Mon, 6 Oct 2025 14:29:39 -0600 Subject: implement frontend diisable functions/ modal --- .../src/components/modals/PluginDisablelModal.tsx | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 frontend/src/components/modals/PluginDisablelModal.tsx (limited to 'frontend/src/components/modals') diff --git a/frontend/src/components/modals/PluginDisablelModal.tsx b/frontend/src/components/modals/PluginDisablelModal.tsx new file mode 100644 index 00000000..89cda293 --- /dev/null +++ b/frontend/src/components/modals/PluginDisablelModal.tsx @@ -0,0 +1,46 @@ +import { ConfirmModal, Spinner } from '@decky/ui'; +import { FC, useState } from 'react'; + +import { disablePlugin, uninstallPlugin } from '../../plugin'; + +interface PluginUninstallModalProps { + name: string; + title: string; + buttonText: string; + description: string; + closeModal?(): void; +} + +const PluginDisableModal: FC = ({ name, title, buttonText, description, closeModal }) => { + const [disabling, setDisabling] = useState(false); + return ( + { + setDisabling(true); + await disablePlugin(name); + + //not sure about this yet + + // uninstalling a plugin resets the hidden setting for it server-side + // we invalidate here so if you re-install it, you won't have an out-of-date hidden filter + await DeckyPluginLoader.frozenPluginsService.invalidate(); + await DeckyPluginLoader.hiddenPluginsService.invalidate(); + closeModal?.(); + }} + bOKDisabled={disabling} + bCancelDisabled={disabling} + strTitle={ +
+ {title} + {disabling && } +
+ } + strOKButtonText={buttonText} + > + {description} +
+ ); +}; + +export default PluginDisableModal; -- cgit v1.2.3