Changes plugin interface from 'roles' to 'enabled' method for more flexibility

This commit is contained in:
Tom Moor
2024-06-24 08:33:48 -04:00
parent 6bb8a3d935
commit 1451f70b9e
6 changed files with 19 additions and 10 deletions

View File

@@ -188,17 +188,21 @@ const useSettingsConfig = () => {
// Plugins
PluginManager.getHooks(Hook.Settings).forEach((plugin) => {
const group = plugin.value.group ?? "Integrations";
const insertIndex = plugin.value.after
? items.findIndex((i) => i.name === t(plugin.value.after!)) + 1
: items.findIndex(
(i) => i.group === t(plugin.value.group ?? "Integrations")
);
: items.findIndex((i) => i.group === t(group));
items.splice(insertIndex, 0, {
name: t(plugin.name),
path: integrationSettingsPath(plugin.id),
group: t(plugin.value.group),
path:
group === "Integrations"
? integrationSettingsPath(plugin.id)
: settingsPath(plugin.id),
group: t(group),
component: plugin.value.component,
enabled: plugin.roles?.includes(user.role) || can.update,
enabled: plugin.value.enabled
? plugin.value.enabled(team, user)
: can.update,
icon: plugin.value.icon,
} as ConfigItem);
});