From 0d69d27b1cfd3decc984c2cd8e562df123292a1b Mon Sep 17 00:00:00 2001 From: danidfra Date: Tue, 11 Mar 2025 03:27:58 -0300 Subject: [PATCH] Refactor PlatformFilters code --- src/features/explore/components/filters.tsx | 18 ++++++++++++------ src/locales/en.json | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/features/explore/components/filters.tsx b/src/features/explore/components/filters.tsx index 4b09c1262..a5abfbc5e 100644 --- a/src/features/explore/components/filters.tsx +++ b/src/features/explore/components/filters.tsx @@ -27,6 +27,7 @@ const messages = defineMessages({ media: { id: 'column.explore.filters.media', defaultMessage: 'Media:' }, language: { id: 'column.explore.filters.language', defaultMessage: 'Language:' }, platforms: { id: 'column.explore.filters.platforms', defaultMessage: 'Platforms:' }, + platformsError: { id: 'column.explore.filters.platforms.error', defaultMessage: 'Protocol not found for: {name}' }, atLeast: { id: 'column.explore.filters.atLeast', defaultMessage: 'At least one platform must remain selected.' }, createYourFilter: { id: 'column.explore.filters.create_your_filter', defaultMessage: 'Create your filter' }, resetFilter: { id: 'column.explore.filters.reset', defaultMessage: 'Reset Filters' }, @@ -112,20 +113,25 @@ const PlatformFilters = () => { const filterList = useAppSelector((state: RootState) => state.search_filter); const handleProtocolFilter = (e: React.ChangeEvent) => { - const protocol = filterList.slice(1, 4).find((filter) => (filter.name.toLowerCase() === e.target.name.toLowerCase()), - )?.value; const isChecked = e.target.checked; + const matchingFilter = filterList.slice(1, 4).find( + (filter) => filter.name.toLowerCase() === e.target.name.toLowerCase(), + ); - const checkedCount = filterList.slice(1, 4).filter((filter) => filter.status === true).length === 1; + const protocol = matchingFilter?.value; + const isLastChecked = filterList.slice(1, 4).filter((filter) => filter.status).length === 1; - if (!isChecked && checkedCount) { + if (!isChecked && isLastChecked) { toast.error(messages.atLeast); return; } - if (protocol) { - dispatch(selectProtocol(protocol)); + if (!protocol) { + console.error(intl.formatMessage(messages.platformsError, { name: e.target.name })); + return; } + + dispatch(selectProtocol(protocol)); }; const CustomCheckBox = ({ protocolN } : { protocolN: string }) => { diff --git a/src/locales/en.json b/src/locales/en.json index 970f6dc2c..461e3bd1c 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -388,6 +388,7 @@ "column.explore.filters.no_replies": "No Replies:", "column.explore.filters.nostr": "Nostr", "column.explore.filters.platforms": "Platforms:", + "column.explore.filters.platforms.error": "Protocol not found for: {name}", "column.explore.filters.remove_filter": "Remove filter: {name}", "column.explore.filters.reset": "Reset Filters", "column.explore.media_filters.all": "All",