import { useEffect, useState } from "react"; import DataTable from "@/components/ui/data-table"; import { Button } from "@/components/ui/button"; import { MoreHorizontal } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { ColumnDef } from "@tanstack/react-table"; import { invoke } from "@tauri-apps/api/core"; import Drawer from "@/components/Drawer"; import { Alias } from "@/state/models"; import { useStore } from "@/state/store"; function deleteAlias(name: string, refreshAliases: () => void) { invoke("delete_alias", { name: name }) .then(() => { refreshAliases(); }) .catch(() => { console.error("Failed to delete alias"); }); } function AddAlias({ onAdd: onAdd }: { onAdd?: () => void }) { let [name, setName] = useState(""); let [value, setValue] = useState(""); // simple form to add aliases return (

Add alias

Add a new alias to your shell

{ e.preventDefault(); invoke("set_alias", { name: name, value: value }) .then(() => { console.log("Added alias"); if (onAdd) onAdd(); }) .catch(() => { console.error("Failed to add alias"); }); }} > setName(e.target.value)} placeholder="Alias name" /> setValue(e.target.value)} placeholder="Alias value" />
); } export default function Aliases() { const aliases = useStore((state) => state.aliases); const refreshAliases = useStore((state) => state.refreshAliases); let [aliasDrawerOpen, setAliasDrawerOpen] = useState(false); const columns: ColumnDef[] = [ { accessorKey: "name", header: "Name", }, { accessorKey: "value", header: "Value", }, { id: "actions", cell: ({ row }: any) => { const alias = row.original; return ( Actions deleteAlias(alias.name, refreshAliases)} > Delete ); }, }, ]; useEffect(() => { refreshAliases(); }, []); return (

Aliases

Aliases allow you to condense long commands into short, easy-to-remember commands.

Add } > { refreshAliases(); setAliasDrawerOpen(false); }} />
); }