import type { GrpcRequest, HttpRequest, WebsocketRequest } from '@yaakapp-internal/models'; import { patchModel } from '@yaakapp-internal/models'; import React, { useCallback } from 'react'; import { useHttpAuthenticationConfig } from '../hooks/useHttpAuthenticationConfig'; import { Checkbox } from './core/Checkbox'; import type { DropdownItem } from './core/Dropdown'; import { Dropdown } from './core/Dropdown'; import { Icon } from './core/Icon'; import { IconButton } from './core/IconButton'; import { HStack } from './core/Stacks'; import { DynamicForm } from './DynamicForm'; import { EmptyStateText } from './EmptyStateText'; interface Props { request: HttpRequest | GrpcRequest | WebsocketRequest; } export function HttpAuthenticationEditor({ request }: Props) { const authConfig = useHttpAuthenticationConfig( request.authenticationType, request.authentication, request.id, ); const handleChange = useCallback( (authentication: Record) => patchModel(request, { authentication }), [request], ); if (authConfig.data == null) { return No Authentication {request.authenticationType}; } return (
handleChange({ ...request.authentication, disabled: !disabled })} title="Enabled" /> {authConfig.data.actions && authConfig.data.actions.length > 0 && ( ({ label: a.label, leftSlot: a.icon ? : null, onSelect: () => a.call(request), }), )} > )}
); }