import { Tooltip } from "@mui/joy"; import copy from "copy-to-clipboard"; import { useState } from "react"; import { toast } from "react-hot-toast"; import { shortcutService } from "../services"; import { useAppSelector } from "../stores"; import { absolutifyLink } from "../helpers/utils"; import { showCommonDialog } from "./Alert"; import Icon from "./Icon"; import Dropdown from "./common/Dropdown"; import CreateShortcutDialog from "./CreateShortcutDialog"; interface Props { shortcutList: Shortcut[]; } const ShortcutListView: React.FC = (props: Props) => { const { shortcutList } = props; const user = useAppSelector((state) => state.user.user as User); const [editingShortcutId, setEditingShortcutId] = useState(); const havePermission = (shortcut: Shortcut) => { return user.role === "ADMIN" || shortcut.creatorId === user.id; }; const handleCopyButtonClick = (shortcut: Shortcut) => { copy(absolutifyLink(`/s/${shortcut.name}`)); toast.success("Shortcut link copied to clipboard."); }; const handleDeleteShortcutButtonClick = (shortcut: Shortcut) => { showCommonDialog({ title: "Delete Shortcut", content: `Are you sure to delete shortcut \`${shortcut.name}\` in this workspace?`, style: "danger", onConfirm: async () => { await shortcutService.deleteShortcutById(shortcut.id); }, }); }; return ( <>
{shortcutList.map((shortcut) => { return (

handleCopyButtonClick(shortcut)}> o/ {shortcut.name}

} >
{shortcut.description &&

{shortcut.description}

} {/* TODO(steven): display shortcut's tags later */} {shortcut.tags.length > 0 && false && (
{shortcut.tags.map((tag) => { return ( #{tag} ); })}
)}
{shortcut.view}
); })}
{editingShortcutId && ( setEditingShortcutId(undefined)} onConfirm={() => setEditingShortcutId(undefined)} /> )} ); }; export default ShortcutListView;