import { Edit3Icon, MoreVerticalIcon, TrashIcon, PlusIcon } from "lucide-react"; import { observer } from "mobx-react-lite"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { shortcutServiceClient } from "@/grpcweb"; import useAsyncEffect from "@/hooks/useAsyncEffect"; import { cn } from "@/lib/utils"; import { userStore } from "@/store/v2"; import memoFilterStore from "@/store/v2/memoFilter"; import { Shortcut } from "@/types/proto/api/v1/shortcut_service"; import { useTranslate } from "@/utils/i18n"; import showCreateShortcutDialog from "../CreateShortcutDialog"; import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover"; const emojiRegex = /^(\p{Emoji_Presentation}|\p{Emoji}\uFE0F)$/u; // Helper function to extract shortcut ID from resource name // Format: users/{user}/shortcuts/{shortcut} const getShortcutId = (name: string): string => { const parts = name.split("/"); return parts.length === 4 ? parts[3] : ""; }; const ShortcutsSection = observer(() => { const t = useTranslate(); const shortcuts = userStore.state.shortcuts; useAsyncEffect(async () => { await userStore.fetchShortcuts(); }, []); const handleDeleteShortcut = async (shortcut: Shortcut) => { const confirmed = window.confirm("Are you sure you want to delete this shortcut?"); if (confirmed) { await shortcutServiceClient.deleteShortcut({ name: shortcut.name }); await userStore.fetchShortcuts(); } }; return (
{t("common.create")}