import { ActionIcon, Box, Button, Center, Group, Space, Stack, Table, Text, Title, } from "@mantine/core"; import { useClipboard } from "@mantine/hooks"; import { useModals } from "@mantine/modals"; import moment from "moment"; import Link from "next/link"; import { useEffect, useState } from "react"; import { TbEdit, TbInfoCircle, TbLink, TbLock, TbTrash } from "react-icons/tb"; import { FormattedMessage } from "react-intl"; import Meta from "../../components/Meta"; import showShareInformationsModal from "../../components/account/showShareInformationsModal"; import showShareLinkModal from "../../components/account/showShareLinkModal"; import CenterLoader from "../../components/core/CenterLoader"; import useConfig from "../../hooks/config.hook"; import useTranslate from "../../hooks/useTranslate.hook"; import shareService from "../../services/share.service"; import { MyShare } from "../../types/share.type"; import toast from "../../utils/toast.util"; const MyShares = () => { const modals = useModals(); const clipboard = useClipboard(); const config = useConfig(); const t = useTranslate(); const [shares, setShares] = useState(); useEffect(() => { shareService.getMyShares().then((shares) => setShares(shares)); }, []); if (!shares) return ; return ( <> <FormattedMessage id="account.shares.title" /> {shares.length == 0 ? (
<FormattedMessage id="account.shares.title.empty" />
) : ( {shares.map((share) => ( ))}
{share.id}{" "} {share.security.passwordProtected && ( )} {share.name} {share.security.maxViews ? ( ) : ( share.views )} {moment(share.expiration).unix() === 0 ? ( ) : ( moment(share.expiration).format("LLL") )} { showShareInformationsModal( modals, share, parseInt(config.get("share.maxSize")), ); }} > { if (window.isSecureContext) { clipboard.copy( `${window.location.origin}/s/${share.id}`, ); toast.success(t("common.notify.copied-link")); } else { showShareLinkModal(modals, share.id); } }} > { modals.openConfirmModal({ title: t("account.shares.modal.delete.title", { share: share.id, }), children: ( ), confirmProps: { color: "red", }, labels: { confirm: t("common.button.delete"), cancel: t("common.button.cancel"), }, onConfirm: () => { shareService.remove(share.id); setShares( shares.filter((item) => item.id !== share.id), ); }, }); }} >
)} ); }; export default MyShares;