import { useEffect, useMemo, useCallback } from 'react'; import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; import { Helmet } from 'react-helmet'; import { Link } from 'react-router-dom'; import AddIcon from '@/material-icons/400-24px/add.svg?react'; import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import AntennaIcon from '@/material-icons/400-24px/wifi.svg?react'; import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react'; import { fetchAntennas } from 'mastodon/actions/antennas'; import { openModal } from 'mastodon/actions/modal'; import { Column } from 'mastodon/components/column'; import { ColumnHeader } from 'mastodon/components/column_header'; import { Dropdown } from 'mastodon/components/dropdown_menu'; import { Icon } from 'mastodon/components/icon'; import ScrollableList from 'mastodon/components/scrollable_list'; import { getOrderedAntennas } from 'mastodon/selectors/antennas'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; const messages = defineMessages({ heading: { id: 'column.antennas', defaultMessage: 'Antennas' }, create: { id: 'antennas.create_antenna', defaultMessage: 'Create antenna' }, edit: { id: 'antennas.edit', defaultMessage: 'Edit antenna' }, delete: { id: 'antennas.delete', defaultMessage: 'Delete antenna' }, more: { id: 'status.more', defaultMessage: 'More' }, }); const AntennaItem: React.FC<{ id: string; title: string; insert_feeds: boolean; isList: boolean; listTitle?: string; stl: boolean; ltl: boolean; }> = ({ id, title, insert_feeds, isList, listTitle, stl, ltl }) => { const dispatch = useAppDispatch(); const intl = useIntl(); const handleDeleteClick = useCallback(() => { dispatch( openModal({ modalType: 'CONFIRM_DELETE_ANTENNA', modalProps: { antennaId: id, }, }), ); }, [dispatch, id]); const menu = useMemo( () => [ { text: intl.formatMessage(messages.edit), to: `/antennas/${id}/edit` }, { text: intl.formatMessage(messages.delete), action: handleDeleteClick }, ], [intl, id, handleDeleteClick], ); return (
{title} {stl && ( )} {ltl && ( )} {insert_feeds && ( {isList && listTitle && ( )} {!isList && ( )} )}
); }; const Antennas: React.FC<{ multiColumn?: boolean; }> = ({ multiColumn }) => { const dispatch = useAppDispatch(); const intl = useIntl(); const antennas = useAppSelector((state) => getOrderedAntennas(state)); useEffect(() => { dispatch(fetchAntennas()); }, [dispatch]); const emptyMessage = ( <>
); return ( } /> {antennas.map((antenna) => ( ))} {intl.formatMessage(messages.heading)} ); }; // eslint-disable-next-line import/no-default-export export default Antennas;