kopia lustrzana https://gitlab.com/soapbox-pub/soapbox
Refactor PlatformFilters code
rodzic
01436f31df
commit
0d69d27b1c
|
@ -27,6 +27,7 @@ const messages = defineMessages({
|
||||||
media: { id: 'column.explore.filters.media', defaultMessage: 'Media:' },
|
media: { id: 'column.explore.filters.media', defaultMessage: 'Media:' },
|
||||||
language: { id: 'column.explore.filters.language', defaultMessage: 'Language:' },
|
language: { id: 'column.explore.filters.language', defaultMessage: 'Language:' },
|
||||||
platforms: { id: 'column.explore.filters.platforms', defaultMessage: 'Platforms:' },
|
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.' },
|
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' },
|
createYourFilter: { id: 'column.explore.filters.create_your_filter', defaultMessage: 'Create your filter' },
|
||||||
resetFilter: { id: 'column.explore.filters.reset', defaultMessage: 'Reset Filters' },
|
resetFilter: { id: 'column.explore.filters.reset', defaultMessage: 'Reset Filters' },
|
||||||
|
@ -112,20 +113,25 @@ const PlatformFilters = () => {
|
||||||
const filterList = useAppSelector((state: RootState) => state.search_filter);
|
const filterList = useAppSelector((state: RootState) => state.search_filter);
|
||||||
|
|
||||||
const handleProtocolFilter = (e: React.ChangeEvent<HTMLInputElement>) => {
|
const handleProtocolFilter = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
const protocol = filterList.slice(1, 4).find((filter) => (filter.name.toLowerCase() === e.target.name.toLowerCase()),
|
|
||||||
)?.value;
|
|
||||||
const isChecked = e.target.checked;
|
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);
|
toast.error(messages.atLeast);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (protocol) {
|
if (!protocol) {
|
||||||
dispatch(selectProtocol(protocol));
|
console.error(intl.formatMessage(messages.platformsError, { name: e.target.name }));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dispatch(selectProtocol(protocol));
|
||||||
};
|
};
|
||||||
|
|
||||||
const CustomCheckBox = ({ protocolN } : { protocolN: string }) => {
|
const CustomCheckBox = ({ protocolN } : { protocolN: string }) => {
|
||||||
|
|
|
@ -388,6 +388,7 @@
|
||||||
"column.explore.filters.no_replies": "No Replies:",
|
"column.explore.filters.no_replies": "No Replies:",
|
||||||
"column.explore.filters.nostr": "Nostr",
|
"column.explore.filters.nostr": "Nostr",
|
||||||
"column.explore.filters.platforms": "Platforms:",
|
"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.remove_filter": "Remove filter: {name}",
|
||||||
"column.explore.filters.reset": "Reset Filters",
|
"column.explore.filters.reset": "Reset Filters",
|
||||||
"column.explore.media_filters.all": "All",
|
"column.explore.media_filters.all": "All",
|
||||||
|
|
Ładowanie…
Reference in New Issue