From 48a9d6494fee275b46da5333cd4749a927a283c6 Mon Sep 17 00:00:00 2001 From: thornbill Date: Thu, 15 Jan 2026 13:40:27 -0500 Subject: [PATCH] Backport pull request #7493 from jellyfin-web/release-10.11.z Improve error handling on plugin page Original-merge: fb6250d108d88de0ee11f1bbb13f52acb6a63f30 Merged-by: thornbill Backported-by: thornbill --- src/apps/dashboard/routes/plugins/index.tsx | 304 ++++++++++---------- 1 file changed, 153 insertions(+), 151 deletions(-) diff --git a/src/apps/dashboard/routes/plugins/index.tsx b/src/apps/dashboard/routes/plugins/index.tsx index b593f2c84..c6fea6a78 100644 --- a/src/apps/dashboard/routes/plugins/index.tsx +++ b/src/apps/dashboard/routes/plugins/index.tsx @@ -98,164 +98,166 @@ export const Component = () => { className='type-interior mainAnimatedPage' > - {isError ? ( - + - {globalize.translate('PluginsLoadError')} - - ) : ( - - + {globalize.translate('TabPlugins')} + + + + + - - {globalize.translate('TabPlugins')} - - - - - - - - - - - - setStatus(PluginStatusOption.All)} - label={globalize.translate('All')} - /> - - setStatus(PluginStatusOption.Available)} - label={globalize.translate('LabelAvailable')} - /> - - setStatus(PluginStatusOption.Installed)} - label={globalize.translate('LabelInstalled')} - /> - - - - setCategory('')} - label={globalize.translate('All')} - /> - - {Object.values(PluginCategory).map(c => ( - setCategory(c.toLowerCase())} - label={globalize.translate(CATEGORY_LABELS[c as PluginCategory])} - /> - ))} - - - - - - {filteredPlugins.length > 0 ? ( - // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs - // eslint-disable-next-line @typescript-eslint/no-deprecated - - {filteredPlugins.map(plugin => ( - // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs - // eslint-disable-next-line @typescript-eslint/no-deprecated - - - - ))} - - ) : ( - - )} + - )} + + {isError ? ( + + {globalize.translate('PluginsLoadError')} + + ) : ( + <> + + + setStatus(PluginStatusOption.All)} + label={globalize.translate('All')} + /> + + setStatus(PluginStatusOption.Available)} + label={globalize.translate('LabelAvailable')} + /> + + setStatus(PluginStatusOption.Installed)} + label={globalize.translate('LabelInstalled')} + /> + + + + setCategory('')} + label={globalize.translate('All')} + /> + + {Object.values(PluginCategory).map(c => ( + setCategory(c.toLowerCase())} + label={globalize.translate(CATEGORY_LABELS[c as PluginCategory])} + /> + ))} + + + + + + {filteredPlugins.length > 0 ? ( + // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs + // eslint-disable-next-line @typescript-eslint/no-deprecated + + {filteredPlugins.map(plugin => ( + // NOTE: Legacy Grid is required due to lack of gap support in JMP on some OSs + // eslint-disable-next-line @typescript-eslint/no-deprecated + + + + ))} + + ) : ( + + )} + + + )} + );