import { t, Trans } from "@lingui/macro" import { Group, Indicator, Popover, TagsInput } from "@mantine/core" import { markEntriesUpToEntry, markEntry, starEntry, tagEntry } from "app/entries/thunks" import { useAppDispatch, useAppSelector } from "app/store" import { type Entry } from "app/types" import { ActionButton } from "components/ActionButton" import { useActionButton } from "hooks/useActionButton" import { useMobile } from "hooks/useMobile" import { TbArrowBarToDown, TbExternalLink, TbEyeCheck, TbEyeOff, TbShare, TbStar, TbStarOff, TbTag } from "react-icons/tb" import { ShareButtons } from "./ShareButtons" interface FeedEntryFooterProps { entry: Entry } export function FeedEntryFooter(props: FeedEntryFooterProps) { const sharingSettings = useAppSelector(state => state.user.settings?.sharingSettings) const tags = useAppSelector(state => state.user.tags) const mobile = useMobile() const { spacing } = useActionButton() const dispatch = useAppDispatch() const showSharingButtons = sharingSettings && Object.values(sharingSettings).some(v => v) const readStatusButtonClicked = async () => await dispatch( markEntry({ entry: props.entry, read: !props.entry.read, }) ) const onTagsChange = async (values: string[]) => await dispatch( tagEntry({ entryId: +props.entry.id, tags: values, }) ) return ( {props.entry.markable && ( : } label={props.entry.read ? Keep unread : Mark as read} onClick={readStatusButtonClicked} /> )} : } label={props.entry.starred ? Unstar : Star} onClick={async () => await dispatch( starEntry({ entry: props.entry, starred: !props.entry.starred, }) ) } /> {showSharingButtons && ( } label={Share} /> )} {tags && ( } label={Tags} /> )} } label={Open link} /> } label={Mark as read up to here} onClick={async () => await dispatch(markEntriesUpToEntry(props.entry))} /> ) }