import { useState } from "react"; import { useTranslation } from "react-i18next"; import useNavigateTo from "@/hooks/useNavigateTo"; import { useShortcutStore, useUserStore } from "@/stores"; import { Shortcut } from "@/types/proto/api/v1/shortcut_service"; import { Role } from "@/types/proto/api/v1/user_service"; import { showCommonDialog } from "./Alert"; import CreateShortcutDrawer from "./CreateShortcutDrawer"; import GenerateQRCodeDialog from "./GenerateQRCodeDialog"; import Icon from "./Icon"; import Dropdown from "./common/Dropdown"; interface Props { shortcut: Shortcut; } const ShortcutActionsDropdown = (props: Props) => { const { shortcut } = props; const { t } = useTranslation(); const navigateTo = useNavigateTo(); const shortcutStore = useShortcutStore(); const currentUser = useUserStore().getCurrentUser(); const [showEditDrawer, setShowEditDrawer] = useState(false); const [showQRCodeDialog, setShowQRCodeDialog] = useState(false); const havePermission = currentUser.role === Role.ADMIN || shortcut.creatorId === currentUser.id; const handleDeleteShortcutButtonClick = (shortcut: Shortcut) => { showCommonDialog({ title: "Delete Shortcut", content: `Are you sure to delete shortcut \`${shortcut.name}\`? You cannot undo this action.`, style: "danger", onConfirm: async () => { await shortcutStore.deleteShortcut(shortcut.id); }, }); }; const gotoAnalytics = () => { navigateTo(`/shortcut/${shortcut.id}#analytics`); }; return ( <> {havePermission && ( )} {havePermission && ( )} } > {showEditDrawer && ( setShowEditDrawer(false)} onConfirm={() => setShowEditDrawer(false)} /> )} {showQRCodeDialog && setShowQRCodeDialog(false)} />} ); }; export default ShortcutActionsDropdown;