import { ActionIcon, Box, Group, MediaQuery, Skeleton, Table, Text, } from "@mantine/core"; import { useClipboard } from "@mantine/hooks"; import { useModals } from "@mantine/modals"; import moment from "moment"; import { TbLink, TbTrash } from "react-icons/tb"; import { FormattedMessage } from "react-intl"; import useConfig from "../../../hooks/config.hook"; import useTranslate from "../../../hooks/useTranslate.hook"; import { MyShare } from "../../../types/share.type"; import { byteToHumanSizeString } from "../../../utils/fileSize.util"; import toast from "../../../utils/toast.util"; import showShareLinkModal from "../../account/showShareLinkModal"; const ManageShareTable = ({ shares, deleteShare, isLoading, }: { shares: MyShare[]; deleteShare: (share: MyShare) => void; isLoading: boolean; }) => { const modals = useModals(); const clipboard = useClipboard(); const config = useConfig(); const t = useTranslate(); return ( {isLoading ? skeletonRows : shares.map((share) => ( ))}
{share.id} {share.name} {share.creator ? ( share.creator.username ) : ( Anonymous )} {share.views} {byteToHumanSizeString(share.size)} {moment(share.expiration).unix() === 0 ? "Never" : moment(share.expiration).format("LLL")} { if (window.isSecureContext) { clipboard.copy( `${window.location.origin}/s/${share.id}`, ); toast.success(t("common.notify.copied-link")); } else { showShareLinkModal(modals, share.id); } }} > deleteShare(share)} >
); }; const skeletonRows = [...Array(10)].map((v, i) => ( )); export default ManageShareTable;