fix: missing context menu in user's avatar

This commit is contained in:
2024-09-20 07:25:07 +07:00
parent ac7ce726c5
commit 872a6cee36
3 changed files with 29 additions and 68 deletions

View File

@@ -1,8 +1,11 @@
import { appSettings, cn } from "@/commons";
import { LumeWindow } from "@/system";
import * as Avatar from "@radix-ui/react-avatar";
import { useStore } from "@tanstack/react-store";
import { Menu, MenuItem } from "@tauri-apps/api/menu";
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
import { minidenticon } from "minidenticons";
import { useMemo } from "react";
import { useCallback, useMemo } from "react";
import { useUserContext } from "./provider";
export function UserAvatar({ className }: { className?: string }) {
@@ -30,8 +33,32 @@ export function UserAvatar({ className }: { className?: string }) {
[user.pubkey],
);
const showContextMenu = useCallback(async (e: React.MouseEvent) => {
e.preventDefault();
const menuItems = await Promise.all([
MenuItem.new({
text: "View Profile",
action: () => LumeWindow.openProfile(user.pubkey),
}),
MenuItem.new({
text: "Copy Public Key",
action: async () => {
await writeText(user.pubkey);
},
}),
]);
const menu = await Menu.new({
items: menuItems,
});
await menu.popup().catch((e) => console.error(e));
}, []);
return (
<Avatar.Root
onClick={(e) => showContextMenu(e)}
className={cn(
"shrink-0 block overflow-hidden bg-neutral-200 dark:bg-neutral-800",
className,