From 631987c21b2ea0da09e8e8426f19b18953526714 Mon Sep 17 00:00:00 2001 From: Joacim Breiler Date: Mon, 4 Nov 2024 14:10:23 +0100 Subject: [PATCH] Add initial version for uploading additional files during install --- src/components/editormodal/EditorModal.tsx | 2 +- src/components/fields/BooleanField.tsx | 29 ++++---- src/components/fields/PinField.tsx | 8 +- src/components/fields/SelectField.tsx | 9 +-- src/components/fields/TextField.tsx | 6 +- src/components/fields/UnknownField.tsx | 4 +- src/components/installermodal/ConfirmPage.tsx | 51 ++++++++----- .../installermodal/InstallerModal.tsx | 45 ++++++++++- src/components/tooltip/ToolTip.tsx | 27 +++++++ src/pages/connection/Connection.tsx | 37 +++++++--- src/pages/wifisettings/WiFiSettings.tsx | 4 +- src/panels/firmware/Firmware.tsx | 16 +++- src/services/GitHubService.ts | 28 +++++-- src/services/InstallService.ts | 74 +++++++++++-------- .../commands/GetAccessPointListCommand.ts | 4 +- src/utils/flash.ts | 14 +++- 16 files changed, 252 insertions(+), 106 deletions(-) create mode 100644 src/components/tooltip/ToolTip.tsx diff --git a/src/components/editormodal/EditorModal.tsx b/src/components/editormodal/EditorModal.tsx index 467b7f4..ed53953 100644 --- a/src/components/editormodal/EditorModal.tsx +++ b/src/components/editormodal/EditorModal.tsx @@ -26,7 +26,7 @@ const EditorModal = ({ file, fileData, onClose, onSave }: EditorModalProps) => { const [tab, setTab] = useState(ConfigurationTab.GENERAL); return ( - + { return ( - - {label} + + {label} {helpText} - - - setValue(Boolean(event.target.checked)) - } - checked={Boolean(value)} - /> - {helpText && {helpText}} + + + + setValue(Boolean(event.target.checked)) + } + checked={Boolean(value)} + /> + ); diff --git a/src/components/fields/PinField.tsx b/src/components/fields/PinField.tsx index b1e3b99..557caa7 100644 --- a/src/components/fields/PinField.tsx +++ b/src/components/fields/PinField.tsx @@ -5,6 +5,7 @@ import { Board } from "../../model/Boards"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faWarning } from "@fortawesome/free-solid-svg-icons"; import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; +import ToolTip from "../tooltip/ToolTip"; type SelectFieldProps = { label?: string; @@ -56,10 +57,10 @@ const PinField = ({ return ( - - {label} + + {label} {helpText} - + )} - {helpText && {helpText}} {hasConflict && ( diff --git a/src/components/fields/SelectField.tsx b/src/components/fields/SelectField.tsx index f53b869..9c8bcab 100644 --- a/src/components/fields/SelectField.tsx +++ b/src/components/fields/SelectField.tsx @@ -1,5 +1,6 @@ import React, { ReactElement } from "react"; import { Col, Form, InputGroup, Row } from "react-bootstrap"; +import ToolTip from "../tooltip/ToolTip"; type Option = { name: string; @@ -29,10 +30,10 @@ const SelectField = ({ }: SelectFieldProps) => { return ( - - {label} + + {label} {helpText} - + {groupedControls && groupedControls} - - {helpText && {helpText}} ); diff --git a/src/components/fields/TextField.tsx b/src/components/fields/TextField.tsx index 7000df7..71a5be5 100644 --- a/src/components/fields/TextField.tsx +++ b/src/components/fields/TextField.tsx @@ -1,6 +1,7 @@ import React from "react"; import { Col, Form, InputGroup, Row } from "react-bootstrap"; import { ReactElement } from "react-markdown/lib/react-markdown"; +import ToolTip from "../tooltip/ToolTip"; type TextFieldProps = { label?: string; @@ -31,8 +32,8 @@ const TextField = ({ }: TextFieldProps) => { return ( - - {label} + + {label} {helpText} @@ -53,7 +54,6 @@ const TextField = ({ {unit && {unit}} {groupedControls && groupedControls} - {helpText && {helpText}} ); diff --git a/src/components/fields/UnknownField.tsx b/src/components/fields/UnknownField.tsx index e76b435..791538e 100644 --- a/src/components/fields/UnknownField.tsx +++ b/src/components/fields/UnknownField.tsx @@ -36,10 +36,10 @@ const UnknownField = ({ return (

{label}

- + {label} - + void; - onInstall: (baud: number) => Promise; + onInstall: (baud: number, files: string[]) => Promise; release: GithubRelease; manifest: GithubReleaseManifest; choice: FirmwareChoice; }; -const ConfirmPage = ({ release, choice, onInstall, onCancel }: Props) => { +const ConfirmPage = ({ + release, + choice, + manifest, + onInstall, + onCancel +}: Props) => { const [baud, setBaud] = useLocalStorage("baud", "921600"); + const [files, setFiles] = useState([]); return ( <> @@ -34,23 +42,12 @@ const ConfirmPage = ({ release, choice, onInstall, onCancel }: Props) => {

- setBaud(value)} - > - - {/*manifest.files && + {manifest.files &&
Extra Options
} + {manifest.files && Object.keys(manifest.files).map((key) => { return ( { if (value) { setFiles((files) => [ @@ -67,14 +64,30 @@ const ConfirmPage = ({ release, choice, onInstall, onCancel }: Props) => { value={files.includes(key)} /> ); - })*/} + })} + + + + setBaud(value)} + helpText="Some controllers need to be installed at a lower speed. If you are experiencing problems you can try and decrease the speed." + > -