From dedd9d52c23f1795f948d97c0fc2458f698f0a5f Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Wed, 5 Jun 2024 15:38:06 +0200 Subject: [PATCH] Group multiple useSelect to one in the dynamic segment from This is just a tiny optimization I did when debugging the acceptance test, and I decided to keep it. [MAILPOET-6054] --- .../assets/js/src/segments/dynamic/form.tsx | 43 ++++++------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/mailpoet/assets/js/src/segments/dynamic/form.tsx b/mailpoet/assets/js/src/segments/dynamic/form.tsx index 369a1035bb..4aa3d70f53 100644 --- a/mailpoet/assets/js/src/segments/dynamic/form.tsx +++ b/mailpoet/assets/js/src/segments/dynamic/form.tsx @@ -18,13 +18,7 @@ import { isFormValid } from './validator'; import { PrivacyProtectionNotice } from './privacy-protection-notice'; import { storeName } from './store'; -import { - FilterRow, - FilterValue, - GroupFilterValue, - Segment, - SubscriberCount, -} from './types'; +import { FilterValue } from './types'; interface Props { isNewSegment: boolean; @@ -45,36 +39,23 @@ const FilterAfter = Hooks.applyFilters( ); export function Form({ isNewSegment, newsletterId }: Props): JSX.Element { - const segment: Segment = useSelect( - (select) => select(storeName).getSegment(), - [], - ); + const { segment, segmentFilters, subscriberCount, filterRows, errors } = + useSelect((select) => { + const segmentData = select(storeName).getSegment(); + return { + segment: segmentData, + segmentFilters: select(storeName).getAvailableFilters(), + subscriberCount: select(storeName).getSubscriberCount(), + filterRows: select(storeName).findFiltersValueForSegment(segmentData), + errors: select(storeName).getErrors(), + }; + }, []); const segmentFiltersCount = segment.filters.length; const segmentFiltersLimitReached = MailPoet.capabilities.segmentFilters.value > 0 && // 0 is unlimited segmentFiltersCount >= MailPoet.capabilities.segmentFilters.value; - const segmentFilters: GroupFilterValue[] = useSelect( - (select) => select(storeName).getAvailableFilters(), - [], - ); - - const filterRows: FilterRow[] = useSelect( - (select) => select(storeName).findFiltersValueForSegment(segment), - [segment], - ); - - const subscriberCount: SubscriberCount = useSelect( - (select) => select(storeName).getSubscriberCount(), - [], - ); - - const errors: string[] = useSelect( - (select) => select(storeName).getErrors(), - [], - ); - const { updateSegment, updateSegmentFilter, handleSave } = useDispatch(storeName);