import React, { useState } from "react"; import { RqbitDesktopConfig } from "./configuration"; import { Button, Form, Modal } from "react-bootstrap"; import { ErrorComponent } from "./rqbit-webui-src/rqbit-web"; import { invokeAPI } from "./api"; import { ErrorDetails } from "./rqbit-webui-src/api-types"; export const ConfigModal: React.FC<{ handleOk: (config: RqbitDesktopConfig) => void, initialConfig: RqbitDesktopConfig, }> = ({ handleOk, initialConfig }) => { const [config, setConfig] = useState(initialConfig); const [error, setError] = useState(null); const handleInputChange = (e: any) => { const name: string = e.target.name; const value: any = e.target.value; const [mainField, subField] = name.split('.', 2); if (subField) { setConfig((prevConfig: any) => ({ ...prevConfig, [mainField]: { ...prevConfig[mainField], [subField]: value, }, })); } else { setConfig((prevConfig) => ({ ...prevConfig, [name]: value, })); } }; const handleToggleChange = (e: any) => { const name: string = e.target.name; const [mainField, subField] = name.split('.', 2); if (subField) { setConfig((prevConfig: any) => ({ ...prevConfig, [mainField]: { ...prevConfig[mainField], [subField]: !prevConfig[mainField][subField], }, })); } else { setConfig((prevConfig: any) => ({ ...prevConfig, [name]: !prevConfig[name], })); } }; const handleOkClick = () => { setError(null); invokeAPI<{}>("config_change", { config }).then( () => handleOk(config), (e: ErrorDetails) => { setError({ text: "Error saving configuration", details: e, }); } ) }; return ( Configure Rqbit desktop
Default Download Location
DHT config Persistence Filename
TCP Listener config TCP Listen Min Port TCP Listen Max Port
Session persistence Persistence Filename
Peer connection options Peer Options Connect Timeout Peer Options Read Write Timeout
HTTP API config HTTP API Listen Address
); };