import { useRef, RefObject, ChangeEvent, MutableRefObject } from 'react'; import { UncontrolledTooltip } from 'reactstrap'; import ServersImporter from '../services/ServersImporter'; import { ServerData } from '../data'; type Ref = RefObject | MutableRefObject; export interface ImportServersBtnProps { onImport?: () => void; onImportError?: () => void; } interface ImportServersBtnConnectProps extends ImportServersBtnProps { createServers: (servers: ServerData[]) => void; fileRef: Ref; } const ImportServersBtn = ({ importServersFromFile }: ServersImporter) => ({ createServers, fileRef, onImport = () => {}, onImportError = () => {}, }: ImportServersBtnConnectProps) => { const ref = fileRef ?? useRef(); const onChange = async ({ target }: ChangeEvent) => importServersFromFile(target.files?.[0]) .then(createServers) .then(onImport) .then(() => { // Reset input after processing file (target as { value: string | null }).value = null; }) .catch(onImportError); return ( <> You can create servers by importing a CSV file with columns name, apiKey and url. ); }; export default ImportServersBtn;