import { useCallback } from 'react'; import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; import { Link } from 'react-router-dom'; import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { dismissSuggestion } from 'mastodon/actions/suggestions'; import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; import { FollowButton } from 'mastodon/components/follow_button'; import { IconButton } from 'mastodon/components/icon_button'; import { domain } from 'mastodon/initial_state'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; const messages = defineMessages({ dismiss: { id: 'follow_suggestions.dismiss', defaultMessage: "Don't show again", }, }); type SuggestionSource = | 'friends_of_friends' | 'similar_to_recently_followed' | 'featured' | 'most_followed' | 'most_interactions'; export const Card: React.FC<{ id: string; source: SuggestionSource }> = ({ id, source, }) => { const intl = useIntl(); const account = useAppSelector((state) => state.accounts.get(id)); const dispatch = useAppDispatch(); const handleDismiss = useCallback(() => { void dispatch(dismissSuggestion({ accountId: id })); }, [id, dispatch]); let label; switch (source) { case 'friends_of_friends': label = ( ); break; case 'similar_to_recently_followed': label = ( ); break; case 'featured': label = ( ); break; case 'most_followed': label = ( ); break; case 'most_interactions': label = ( ); break; } if (!account) { return null; } return (
{label}
); };