@letanure/resend-cli
Version:
A command-line interface for Resend email API
45 lines • 2.16 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import React from 'react';
import { SimpleForm } from '../../../components/forms/SimpleForm.js';
import { Layout } from '../../../components/ui/layout.js';
import { config } from '../../../config/config.js';
import { useResend } from '../../../contexts/ResendProvider.js';
import { useBroadcastSelector } from '../../../hooks/index.js';
import { retrieveBroadcast } from './action.js';
import { retrieveBroadcastFields } from './fields.js';
import { retrieveBroadcastSchema } from './schema.js';
export const Form = ({ onExit }) => {
const { apiKey } = useResend();
const [selectedBroadcastId, setSelectedBroadcastId] = React.useState('');
// Get initial data from selected IDs
const initialFormData = React.useMemo(() => {
const data = {};
if (selectedBroadcastId) {
data.broadcastId = selectedBroadcastId;
}
return Object.keys(data).length > 0 ? data : undefined;
}, [selectedBroadcastId]);
// Selector for broadcasts
const broadcastSelector = useBroadcastSelector((broadcastId) => setSelectedBroadcastId(broadcastId));
// Create form fields with selector callbacks
const formFields = React.useMemo(() => {
return retrieveBroadcastFields.map((field) => {
if (field.name === 'broadcastId') {
return {
...field,
onSelectorOpen: () => broadcastSelector.openSelector(),
};
}
return field;
});
}, [broadcastSelector]);
const handleSubmit = async (data) => {
return await retrieveBroadcast(data, apiKey);
};
// Show selector when open
if (broadcastSelector.isOpen) {
return broadcastSelector.selectorComponent;
}
return (_jsx(Layout, { headerText: `${config.baseTitle} - Broadcasts - Retrieve`, showNavigationInstructions: true, navigationContext: "form-single", children: _jsx(SimpleForm, { fields: formFields, onSubmit: handleSubmit, onCancel: onExit, validateWith: retrieveBroadcastSchema, initialData: initialFormData }) }));
};
//# sourceMappingURL=Form.js.map