Files
desktop/app/hooks/useDialogContextMenu.tsx
rosetta 83f38dc63f 'init'
2026-01-30 05:01:05 +02:00

60 lines
2.1 KiB
TypeScript

import { IconBell, IconBellOff, IconPin, IconPinnedOff } from "@tabler/icons-react";
import { useContextMenu } from "../providers/ContextMenuProvider/useContextMenu"
import { useRosettaColors } from "./useRosettaColors";
import { useDialogState } from "../providers/DialogStateProvider.tsx/useDialogState";
export function useDialogContextMenu() : {
openContextMenu: (dialog_id: string) => void;
} {
const openContext = useContextMenu();
const colors = useRosettaColors();
const {muted, pinned, muteToggle, pinToggle} = useDialogState();
const openContextMenu = (dialog_id: string) => {
openContext([
{
label: 'Unmute',
action: () => {
muteToggle(dialog_id);
},
icon: <IconBell color={colors.success} size={14}></IconBell>,
cond: async () => {
return muted.includes(dialog_id) === true;
}
},
{
label: 'Mute',
action: () => {
muteToggle(dialog_id);
},
icon: <IconBellOff color={colors.error} size={14}></IconBellOff>,
cond: async () => {
return muted.includes(dialog_id) === false;
}
},
{
label: 'Pin',
action: () => {
pinToggle(dialog_id);
},
icon: <IconPin color={colors.success} size={14}></IconPin>,
cond: async () => {
return pinned.includes(dialog_id) === false;
}
},
{
label: 'Unpin',
action: () => {
pinToggle(dialog_id);
},
icon: <IconPinnedOff color={colors.error} size={14}></IconPinnedOff>,
cond: async () => {
return pinned.includes(dialog_id) === true;
}
}
], true, true);
}
return {
openContextMenu
}
}