From 8d3f01bb405fd72e3ec4193ecfeacc0f24479039 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Sun, 19 Mar 2023 23:41:39 -0400 Subject: [PATCH] Fix addoncard and addonlist --- renderer/src/modules/pluginmanager.js | 2 +- renderer/src/modules/thememanager.js | 2 +- renderer/src/ui/settings.js | 2 +- renderer/src/ui/settings/addoncard.jsx | 14 +++++++------- renderer/src/ui/settings/addonlist.jsx | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/renderer/src/modules/pluginmanager.js b/renderer/src/modules/pluginmanager.js index 38e74e5f..c315fd0c 100644 --- a/renderer/src/modules/pluginmanager.js +++ b/renderer/src/modules/pluginmanager.js @@ -44,7 +44,7 @@ export default new class PluginManager extends AddonManager { this.setupFunctions(); Settings.registerPanel("plugins", Strings.Panels.plugins, { order: 3, - element: () => SettingsRenderer.getAddonPanel(Strings.Panels.plugins, this.addonList, this.state, { + element: SettingsRenderer.getAddonPanel(Strings.Panels.plugins, this.addonList, this.state, { type: this.prefix, folder: this.addonFolder, onChange: this.togglePlugin.bind(this), diff --git a/renderer/src/modules/thememanager.js b/renderer/src/modules/thememanager.js index 5240eb85..dccfb3ab 100644 --- a/renderer/src/modules/thememanager.js +++ b/renderer/src/modules/thememanager.js @@ -23,7 +23,7 @@ export default new class ThemeManager extends AddonManager { const errors = super.initialize(); Settings.registerPanel("themes", Strings.Panels.themes, { order: 4, - element: () => SettingsRenderer.getAddonPanel(Strings.Panels.themes, this.addonList, this.state, { + element: SettingsRenderer.getAddonPanel(Strings.Panels.themes, this.addonList, this.state, { type: this.prefix, folder: this.addonFolder, onChange: this.toggleTheme.bind(this), diff --git a/renderer/src/ui/settings.js b/renderer/src/ui/settings.js index 8b56da87..3d6c9f4d 100644 --- a/renderer/src/ui/settings.js +++ b/renderer/src/ui/settings.js @@ -54,7 +54,7 @@ export default new class SettingsRenderer { } getAddonPanel(title, addonList, addonState, options = {}) { - return React.createElement(AddonList, Object.assign({}, { + return () => React.createElement(AddonList, Object.assign({}, { title: title, addonList: addonList, addonState: addonState diff --git a/renderer/src/ui/settings/addoncard.jsx b/renderer/src/ui/settings/addoncard.jsx index 87549226..927877cc 100644 --- a/renderer/src/ui/settings/addoncard.jsx +++ b/renderer/src/ui/settings/addoncard.jsx @@ -80,15 +80,15 @@ function buildLink(type, url) { return makeButton(Strings.Addons[type], link); } -export default function AddonCard({addon, type, disabled, enabled, onChange: parentChange, hasSettings, editAddon, deleteAddon, getSettingsPanel}) { - const [isEnabled, setEnabled] = useState(enabled); +export default function AddonCard({addon, type, disabled, enabled: initialValue, onChange: parentChange, hasSettings, editAddon, deleteAddon, getSettingsPanel}) { + const [isEnabled, setEnabled] = useState(initialValue); const onChange = useCallback(() => { setEnabled(!isEnabled); if (parentChange) parentChange(addon.id); }, [addon.id, parentChange, isEnabled]); const showSettings = useCallback(() => { - if (!hasSettings || !enabled) return; + if (!hasSettings || !isEnabled) return; const name = getString(addon.name); try { Modals.showAddonSettingsModal(name, getSettingsPanel()); @@ -97,7 +97,7 @@ export default function AddonCard({addon, type, disabled, enabled, onChange: par Toasts.show(Strings.Addons.settingsError.format({name}), {type: "error"}); Logger.stacktrace("Addon Settings", "Unable to get settings panel for " + name + ".", err); } - }, [hasSettings, enabled, addon.name, getSettingsPanel]); + }, [hasSettings, isEnabled, addon.name, getSettingsPanel]); const messageAuthor = useCallback(() => { if (!addon.authorId) return; @@ -135,18 +135,18 @@ export default function AddonCard({addon, type, disabled, enabled, onChange: par return
{linkComponents}
- {hasSettings && makeButton(Strings.Addons.addonSettings, , showSettings, {isControl: true, disabled: !enabled})} + {hasSettings && makeButton(Strings.Addons.addonSettings, , showSettings, {isControl: true, disabled: !isEnabled})} {editAddon && makeButton(Strings.Addons.editAddon, , editAddon, {isControl: true})} {deleteAddon && makeButton(Strings.Addons.deleteAddon, , deleteAddon, {isControl: true, danger: true})}
; - }, [hasSettings, editAddon, deleteAddon, addon, enabled, showSettings]); + }, [hasSettings, editAddon, deleteAddon, addon, isEnabled, showSettings]); return
{type === "plugin" ? : }
{title}
- +
{disabled &&
{`An error was encountered while trying to load this ${type}.`}
} diff --git a/renderer/src/ui/settings/addonlist.jsx b/renderer/src/ui/settings/addonlist.jsx index 9c6282ec..2b7b9084 100644 --- a/renderer/src/ui/settings/addonlist.jsx +++ b/renderer/src/ui/settings/addonlist.jsx @@ -81,7 +81,7 @@ export default function AddonList({prefix, type, title, folder, addonList, addon const [sort, setSort] = useState(getState.bind(null, type, "sort", "name")); const [ascending, setAscending] = useState(getState.bind(null, type, "ascending", true)); const [view, setView] = useState(getState.bind(null, type, "view", "list")); - const [, forceUpdate] = useReducer(x => x + 1, 0); + const [forced, forceUpdate] = useReducer(x => x + 1, 0); useEffect(() => { Events.on(`${prefix}-loaded`, forceUpdate); @@ -150,7 +150,7 @@ export default function AddonList({prefix, type, title, folder, addonList, addon const getSettings = hasSettings && addon.instance.getSettingsPanel.bind(addon.instance); return triggerEdit(addon.id)} deleteAddon={() => triggerDelete(addon.id)} key={addon.id} enabled={addonState[addon.id]} addon={addon} onChange={onChange} reload={reload} hasSettings={hasSettings} getSettingsPanel={getSettings} />; }); - }, [addonList, addonState, onChange, reload, triggerDelete, triggerEdit, type, sort, ascending, query]); + }, [addonList, addonState, onChange, reload, triggerDelete, triggerEdit, type, sort, ascending, query, forced]); // eslint-disable-line react-hooks/exhaustive-deps const hasAddonsInstalled = addonList.length !== 0; const isSearching = !!query;