diff --git a/apps/meteor/client/views/admin/ABAC/ABACSettingTab/SettingField.tsx b/apps/meteor/client/views/admin/ABAC/ABACSettingTab/SettingField.tsx index 6d743296c7316..aafc46fd41b84 100644 --- a/apps/meteor/client/views/admin/ABAC/ABACSettingTab/SettingField.tsx +++ b/apps/meteor/client/views/admin/ABAC/ABACSettingTab/SettingField.tsx @@ -1,4 +1,4 @@ -import type { ISettingColor, SettingEditor, SettingValue } from '@rocket.chat/core-typings'; +import type { SettingEditor, SettingValue } from '@rocket.chat/core-typings'; import { isSettingColor, isSetting } from '@rocket.chat/core-typings'; import { useDebouncedCallback } from '@rocket.chat/fuselage-hooks'; import { useSettingsDispatch, useSettingStructure } from '@rocket.chat/ui-contexts'; @@ -57,14 +57,17 @@ function SettingField({ className = undefined, settingId, sectionChanged }: Sett const [value, setValue] = useState(setting.value); const [editor, setEditor] = useState(isSettingColor(setting) ? setting.editor : undefined); + const editorValue = useMemo(() => { + return isSettingColor(setting) ? setting.editor : undefined; + }, [setting]); + useEffect(() => { setValue(setting.value); }, [setting.value]); useEffect(() => { - setEditor(isSettingColor(setting) ? setting.editor : undefined); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [(setting as ISettingColor).editor]); + setEditor(editorValue); + }, [editorValue]); const onChangeValue = useCallback( (value: SettingValue) => { @@ -84,13 +87,12 @@ function SettingField({ className = undefined, settingId, sectionChanged }: Sett const onResetButtonClick = useCallback(() => { setValue(setting.value); - setEditor(isSettingColor(setting) ? setting.editor : undefined); + setEditor(editorValue); update({ value: persistedSetting.packageValue, ...(isSettingColor(persistedSetting) && { editor: persistedSetting.packageEditor }), }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [setting.value, (setting as ISettingColor).editor, update, persistedSetting]); + }, [setting.value, editorValue, update, persistedSetting]); const { _id, readonly, type, packageValue, i18nLabel, i18nDescription, alert } = setting; diff --git a/apps/meteor/client/views/admin/settings/Setting/Setting.tsx b/apps/meteor/client/views/admin/settings/Setting/Setting.tsx index ad9bce8f25568..1e6bdaeb00b44 100644 --- a/apps/meteor/client/views/admin/settings/Setting/Setting.tsx +++ b/apps/meteor/client/views/admin/settings/Setting/Setting.tsx @@ -1,4 +1,4 @@ -import type { ISettingColor, SettingEditor, SettingValue } from '@rocket.chat/core-typings'; +import type { SettingEditor, SettingValue } from '@rocket.chat/core-typings'; import { isSettingColor, isSetting } from '@rocket.chat/core-typings'; import { Box, Button, Tag } from '@rocket.chat/fuselage'; import { useDebouncedCallback } from '@rocket.chat/fuselage-hooks'; @@ -64,14 +64,17 @@ function Setting({ className = undefined, settingId, sectionChanged }: SettingPr const [value, setValue] = useState(setting.value); const [editor, setEditor] = useState(isSettingColor(setting) ? setting.editor : undefined); + const editorValue = useMemo(() => { + return isSettingColor(setting) ? setting.editor : undefined; + }, [setting]); + useEffect(() => { setValue(setting.value); }, [setting.value]); useEffect(() => { - setEditor(isSettingColor(setting) ? setting.editor : undefined); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [(setting as ISettingColor).editor]); + setEditor(editorValue); + }, [editorValue]); const onChangeValue = useCallback( (value: SettingValue) => { @@ -91,13 +94,12 @@ function Setting({ className = undefined, settingId, sectionChanged }: SettingPr const onResetButtonClick = useCallback(() => { setValue(setting.value); - setEditor(isSettingColor(setting) ? setting.editor : undefined); + setEditor(editorValue); update({ value: persistedSetting.packageValue, ...(isSettingColor(persistedSetting) && { editor: persistedSetting.packageEditor }), }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [setting.value, (setting as ISettingColor).editor, update, persistedSetting]); + }, [setting.value, editorValue, update, persistedSetting]); const { _id, readonly, type, packageValue, i18nLabel, i18nDescription, alert } = setting;