From 46a0f51d71f6286b8c4070b58d7d1b2c10a1eda7 Mon Sep 17 00:00:00 2001 From: Nar Cuenca Date: Wed, 10 Jan 2024 11:35:26 +0800 Subject: [PATCH 1/7] fix: optimize how the options are created --- .../Meta/ItemSettings/settings/ItemParent.js | 90 ++++++++----------- 1 file changed, 35 insertions(+), 55 deletions(-) diff --git a/src/apps/content-editor/src/app/views/ItemEdit/Meta/ItemSettings/settings/ItemParent.js b/src/apps/content-editor/src/app/views/ItemEdit/Meta/ItemSettings/settings/ItemParent.js index ec84a04117..7588498f53 100644 --- a/src/apps/content-editor/src/app/views/ItemEdit/Meta/ItemSettings/settings/ItemParent.js +++ b/src/apps/content-editor/src/app/views/ItemEdit/Meta/ItemSettings/settings/ItemParent.js @@ -1,6 +1,6 @@ import { memo, Fragment, useState, useEffect } from "react"; -import { connect } from "react-redux"; -import debounce from "lodash/debounce"; +import { connect, useSelector } from "react-redux"; +import { debounce, uniqBy } from "lodash"; import { notify } from "shell/store/notifications"; import { Select, Option } from "@zesty-io/core/Select"; @@ -18,6 +18,7 @@ export const ItemParent = connect((state) => { })( memo( function ItemParent(props) { + const items = useSelector((state) => state.content); const [loading, setLoading] = useState(false); const [parent, setParent] = useState({ meta: { @@ -27,7 +28,7 @@ export const ItemParent = connect((state) => { }); const [parents, setParents] = useState( - parentOptions(props.currentItemLangID, props.path, props.content) + parentOptions(props.currentItemLangID, props.path, items, "useState") ); const onSearch = debounce((term) => { @@ -37,7 +38,7 @@ export const ItemParent = connect((state) => { setLoading(false); setParents( parentOptions(props.currentItemLangID, props.path, { - ...props.content, + ...items, ...res?.data, }) ); @@ -89,7 +90,7 @@ export const ItemParent = connect((state) => { // Try to preselect parent if (parentZUID && parentZUID != "0" && parentZUID !== null) { - const item = props.content[parentZUID]; + const item = items[parentZUID]; if (item && item.meta && item.meta.ZUID && item.meta.path) { setParent(item); } else { @@ -108,7 +109,7 @@ export const ItemParent = connect((state) => { */ setParents( parentOptions(props.currentItemLangID, props.path, { - ...props.content, + ...items, [res.data[0].meta.ZUID]: res.data[0], }) ); @@ -177,7 +178,7 @@ export const ItemParent = connect((state) => { } /> - {parents.map((item) => ( + {parents?.map((item) => (