import type { HTMLAttributes, ReactElement } from 'react'; import React, { useRef } from 'react'; import { useDeleteRequest } from '../hooks/useDeleteRequest'; import { useDuplicateRequest } from '../hooks/useDuplicateRequest'; import { useTheme } from '../hooks/useTheme'; import type { DropdownRef } from './core/Dropdown'; import { Dropdown } from './core/Dropdown'; import { HotKey } from './core/HotKey'; import { Icon } from './core/Icon'; import { useListenToTauriEvent } from '../hooks/useListenToTauriEvent'; interface Props { requestId: string; children: ReactElement>; } export function RequestActionsDropdown({ requestId, children }: Props) { const deleteRequest = useDeleteRequest(requestId); const duplicateRequest = useDuplicateRequest({ id: requestId, navigateAfter: true }); const dropdownRef = useRef(null); const { appearance, toggleAppearance } = useTheme(); useListenToTauriEvent('toggle_settings', () => { dropdownRef.current?.toggle(); }); // TODO: Put this somewhere better useListenToTauriEvent('duplicate_request', () => { duplicateRequest.mutate(); }); return ( , rightSlot: , }, { key: 'delete', label: 'Delete', onSelect: deleteRequest.mutate, variant: 'danger', leftSlot: , }, { type: 'separator', label: 'Yaak Settings' }, { key: 'appearance', label: appearance === 'dark' ? 'Light Theme' : 'Dark Theme', onSelect: toggleAppearance, leftSlot: , }, ]} > {children} ); }