summaryrefslogtreecommitdiff
path: root/frontend/src/components/settings
diff options
context:
space:
mode:
authorbotato <63275405+botatooo@users.noreply.github.com>2022-07-01 23:43:17 +0000
committerGitHub <noreply@github.com>2022-07-01 16:43:17 -0700
commit4daf028e7acb49932e274ad5c32cd98045c7474a (patch)
treefa75d035d90d30d3cb7e2ecd17cb3f8e8f67b168 /frontend/src/components/settings
parent934a50f683f579695292f88437d91d4fce2f4edc (diff)
downloaddecky-loader-4daf028e7acb49932e274ad5c32cd98045c7474a.tar.gz
decky-loader-4daf028e7acb49932e274ad5c32cd98045c7474a.zip
Uninstall functionality (#97)
* feat: POC uninstallation feature * Fixes, placeholder * bugfix: wrong function call * add oncancel and change function called * clean up plugin uninstall code * bugfix, uninstall in store * Limit scope of feature branch * feat: PluginLoader.unloadPlugin * problematic logs
Diffstat (limited to 'frontend/src/components/settings')
-rw-r--r--frontend/src/components/settings/index.tsx6
-rw-r--r--frontend/src/components/settings/pages/PluginList.tsx32
2 files changed, 38 insertions, 0 deletions
diff --git a/frontend/src/components/settings/index.tsx b/frontend/src/components/settings/index.tsx
index d4799fa9..f9c84c7b 100644
--- a/frontend/src/components/settings/index.tsx
+++ b/frontend/src/components/settings/index.tsx
@@ -1,6 +1,7 @@
import { SidebarNavigation } from 'decky-frontend-lib';
import GeneralSettings from './pages/GeneralSettings';
+import PluginList from './pages/PluginList';
export default function SettingsPage() {
return (
@@ -13,6 +14,11 @@ export default function SettingsPage() {
content: <GeneralSettings />,
route: '/decky/settings/general',
},
+ {
+ title: 'Plugins',
+ content: <PluginList />,
+ route: '/decky/settings/plugins',
+ },
]}
/>
);
diff --git a/frontend/src/components/settings/pages/PluginList.tsx b/frontend/src/components/settings/pages/PluginList.tsx
new file mode 100644
index 00000000..4fd2c063
--- /dev/null
+++ b/frontend/src/components/settings/pages/PluginList.tsx
@@ -0,0 +1,32 @@
+import { DialogButton, staticClasses } from 'decky-frontend-lib';
+import { FaTrash } from 'react-icons/fa';
+
+export default function PluginList() {
+ const plugins = window.DeckyPluginLoader?.getPlugins();
+
+ if (plugins.length === 0) {
+ return (
+ <div>
+ <p>No plugins installed</p>
+ </div>
+ );
+ }
+
+ return (
+ <ul style={{ listStyleType: 'none' }}>
+ {window.DeckyPluginLoader?.getPlugins().map(({ name }) => (
+ <li style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>
+ <span>{name}</span>
+ <div className={staticClasses.Title} style={{ marginLeft: 'auto', boxShadow: 'none' }}>
+ <DialogButton
+ style={{ height: '40px', width: '40px', padding: '10px 12px' }}
+ onClick={() => window.DeckyPluginLoader.uninstall_plugin(name)}
+ >
+ <FaTrash />
+ </DialogButton>
+ </div>
+ </li>
+ ))}
+ </ul>
+ );
+}