import type { PropsWithChildren } from 'react'; import { useCallback } from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { setNotificationsFilter } from 'mastodon/actions/notification_groups'; import { Icon } from 'mastodon/components/icon'; import { selectSettingsNotificationsQuickFilterActive, selectSettingsNotificationsQuickFilterAdvanced, } from 'mastodon/selectors/settings'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; const tooltips = defineMessages({ mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' }, favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites', }, boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' }, polls: { id: 'notifications.filter.polls', defaultMessage: 'Poll results' }, follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' }, statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow', }, }); const BarButton: React.FC< PropsWithChildren<{ selectedFilter: string; type: string; title?: string; }> > = ({ selectedFilter, type, title, children }) => { const dispatch = useAppDispatch(); const onClick = useCallback(() => { void dispatch(setNotificationsFilter({ filterType: type })); }, [dispatch, type]); return ( ); }; export const FilterBar: React.FC = () => { const intl = useIntl(); const selectedFilter = useAppSelector( selectSettingsNotificationsQuickFilterActive, ); const advancedMode = useAppSelector( selectSettingsNotificationsQuickFilterAdvanced, ); if (advancedMode) return (
); else return (
); };