From 6cb673baac99ddba34dafae91464bd7b8e4dd46b Mon Sep 17 00:00:00 2001 From: Guido X Jansen Date: Sat, 7 Mar 2026 13:29:33 +0100 Subject: [PATCH] fix(plugins): defensive null checks for settingsSchema and dependents (#197) The API may not return settingsSchema or dependents fields. Use optional chaining and nullish coalescing to prevent Object.keys() and .length crashes on undefined values. --- src/components/admin/plugins/plugin-card.tsx | 2 +- src/components/admin/plugins/plugin-settings-modal.tsx | 2 +- src/hooks/admin/use-plugin-management.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/admin/plugins/plugin-card.tsx b/src/components/admin/plugins/plugin-card.tsx index 8c064f4..e472a66 100644 --- a/src/components/admin/plugins/plugin-card.tsx +++ b/src/components/admin/plugins/plugin-card.tsx @@ -69,7 +69,7 @@ export function PluginCard({
- {Object.keys(plugin.settingsSchema).length > 0 && ( + {Object.keys(plugin.settingsSchema ?? {}).length > 0 && (
- {Object.entries(plugin.settingsSchema).map(([key, schema]) => ( + {Object.entries(plugin.settingsSchema ?? {}).map(([key, schema]) => ( { - return plugin.dependents.map((depId) => { + return (plugin.dependents ?? []).map((depId) => { const dep = plugins.find((p) => p.id === depId) return dep?.displayName ?? depId }) } const handleToggle = async (plugin: Plugin) => { - if (plugin.enabled && plugin.dependents.length > 0) { + if (plugin.enabled && (plugin.dependents?.length ?? 0) > 0) { const dependentNames = findDependentNames(plugin) setDependencyWarning({ plugin, dependents: dependentNames }) return -- 2.51.2