import { Avatar, Tooltip } from "@mui/joy"; import classNames from "classnames"; import copy from "copy-to-clipboard"; import { useEffect } from "react"; import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import { absolutifyLink } from "@/helpers/utils"; import { useUserStore, useViewStore } from "@/stores"; import { Shortcut } from "@/types/proto/api/v1/shortcut_service"; import { convertVisibilityFromPb } from "@/utils/visibility"; import Icon from "./Icon"; import LinkFavicon from "./LinkFavicon"; import ShortcutActionsDropdown from "./ShortcutActionsDropdown"; import VisibilityIcon from "./VisibilityIcon"; interface Props { shortcut: Shortcut; } const ShortcutCard = (props: Props) => { const { shortcut } = props; const { t } = useTranslation(); const userStore = useUserStore(); const viewStore = useViewStore(); const creator = userStore.getUserById(shortcut.creatorId); const shortcutLink = absolutifyLink(`/s/${shortcut.name}`); useEffect(() => { userStore.getOrFetchUserById(shortcut.creatorId); }, []); const handleCopyButtonClick = () => { copy(shortcutLink); toast.success("Shortcut link copied to clipboard."); }; return (
{shortcut.link}
{shortcut.tags.map((tag) => { return ( viewStore.setFilter({ tag: tag })} > #{tag} ); })} {shortcut.tags.length === 0 && No tags}
viewStore.setFilter({ visibility: shortcut.visibility })} > {t(`shortcut.visibility.${convertVisibilityFromPb(shortcut.visibility).toLowerCase()}.self`)}
{t("shortcut.visits", { count: shortcut.viewCount })}
); }; export default ShortcutCard;