Commit Graph
66 Commits
Author SHA1 Message Date
David Lechner fa00c0aea6 firmware/sagas: fix progress alerts
These were being replaced (dismissed then new alert) instead of updated.
2022-10-21 16:26:43 -05:00
David Lechner fc4cb8eb78 alerts: add alertsHideAlert actions
This is used instead of using toaster.dismiss() directly.
2022-10-19 18:26:37 -05:00
David Lechner 28cf87c356 alerts: allow overriding key
This adds an optional key parameter to alertsShowAlert() to allow
overriding the key. This allows us to call flashProgress using that
action instead of having to use the toaster directly.
2022-10-19 18:26:37 -05:00
David Lechner fa27649fe3 toasterTypes: change toaster to ref
Instead of rendering the toaster separate from the main index, add it
there so we can inherit all of the context providers. This requires
passing the ref object instead of the toaster instance itself, so
sagas have to be updated.
2022-10-19 18:26:37 -05:00
David Lechner e67ae1c52b use "error" when type is Error
This renames "err" to "error" when the type is Error for consistency
(fixes redux complaints about non-serializable err).
2022-10-17 13:44:21 -05:00
David Lechner db43cb3e99 remove use of deprecated DomException code property 2022-10-14 16:21:18 -05:00
David Lechner 56630ef2cf firmware/installPybricksDialog: drop support for including custom main.py
This removes the UI and internal support for selecting a file to include
as the main.py when flashing firmware. This feature was removed in the
firmware starting with firmware metadata v2.0.0 so the firmware that
ships with Pybricks code won't be able to do this in the near future.
So, it doesn't make sense to keep this feature only for old firmware.

It is still possible to replace the main.py in old firmware.zip files
and flash that way.
2022-09-14 18:12:34 -05:00
David Lechner 9811807d09 firmware: add support for firmware.metadata.json v2.0.0
This adds support for the new firmware.metadata.json v2.0.0 which drops
support for appending a main.py file to the firmware.
2022-09-14 17:58:54 -05:00
David Lechner c4d98638b1 firmware/actions: fix error type check
we need to check that it matches the error interface, not that it is
an instance of an error
2022-09-14 17:38:19 -05:00
9994e8f4b4 build(deps): bump jest and @types/jest (#1131)
* build(deps): bump jest and @types/jest

Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together.

Updates `jest` from 28.1.3 to 29.0.3
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/jest)

Updates `@types/jest` from 28.1.8 to 29.0.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/jest"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* [dependabot skip] Fix yarn.lock

* update test snapshots for jest 29

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-fix <dependabot-fix@example.com>
Co-authored-by: David Lechner <david@pybricks.com>
2022-09-13 17:06:24 +00:00
David Lechner 4e77efb34f installPybricksDialog: add feature to install custom firmware
This restores the ability to drag and drop a custom firmware file to
flash the firmware on the hub.

Fixes: https://github.com/pybricks/pybricks-code/issues/1020
2022-09-06 14:14:57 -05:00
David Lechner ebb8900efe installPybricksDialog: make use of isMounted hook
This simplifies the code a bit by using an existing hook.
2022-09-06 11:10:49 -05:00
David Lechner b447bd7a3a replace use of deprecated IToaster and IToastProps 2022-09-06 10:56:38 -05:00
David Lechner 677d285ef2 installPybricksDialog: move unsupported hubs to separate component 2022-09-03 14:06:25 -05:00
David Lechner b4e1c8293d replace use of deprecated IRef 2022-09-01 11:45:59 -05:00
David Lechner 122b37da29 firmware/sagas: handle usb error during dfu flash
Fixes: https://github.com/pybricks/pybricks-code/issues/1011
2022-08-12 18:00:57 -05:00
David Lechner 968834d84f firmware/alerts/FlashProgress: fix <div> cannot be child of <p> 2022-08-12 18:00:57 -05:00
David Lechner 90b459d5db firmware/restoreOfficialDialog: add new dialog 2022-07-27 18:17:20 -05:00
David Lechner c84afea181 style: make use of more blueprint styles
https://blueprintjs.com/docs/#core/typography

Also fix wrapping license text while we are touching this.
2022-07-27 16:55:46 -05:00
David Lechner e6609b9054 firmware/installPybricksDialog: fix <div> inside <p>
fixes:

    Warning: validateDOMNesting(...): <div> cannot appear as a descendant of <p>.

Also some other style tweaks while we are touching this.
2022-07-27 16:22:46 -05:00
David Lechner 3953816350 components/hubPicker: back state with localStorage
This saves the selected hub in localStorage. This will "remember" the
state between app launches and also synchronize the state between
various users of the component. Both of these should mean fewer clicks
required by the user.
2022-07-27 15:30:39 -05:00
David Lechner 2b7f1b1cbf firmware/sagas: show progress for BLE flashing 2022-07-27 15:19:36 -05:00
David Lechner 1148b169d5 firmware: add progress indication for DFU USB flash 2022-07-27 15:19:36 -05:00
David Lechner 8dadc8826c firmware/installPybricksDialog: increase height
This ensures the dialog doesn't change size when clicking next even
with longer translations.
2022-07-27 15:19:36 -05:00
David Lechner 4e85b5c1b8 firmware/installPybricksDialog: rename flash button
This makes it clear there are two steps, connect and then flash.
2022-07-27 15:19:36 -05:00
David Lechner 76444c032c firmware/installPybricksDialog: add warning for windows/linux usb
This warns the user before failure. Otherwise they will click the flash
button and no devices will appear in the scan dialog.
2022-07-27 15:19:36 -05:00
David Lechner e3430260f9 firmware/alerts/NoDfuHub: fix translation key 2022-07-22 14:03:33 -05:00
David Lechner d6df128860 i18n: use automatic type inference of translation keys
Finally figured out a way to make typescript strongly type translation
keys so we can avoid the tedium of creating enums of translation keys.
2022-07-22 13:48:50 -05:00
David Lechner 6d07713eb5 firmware: implement flashing via USB DFU 2022-07-21 18:36:32 -05:00
David Lechner bb6f86ff18 firmware/installPybricksDialog: add bootloader discrimination
Also fix license not showing for newer hubs.
2022-07-20 18:51:45 -05:00
David Lechner 709c3c554b bump @pybricks/firmware to 5.0.0
This contains a breaking change where main.py is now optional so we
have to handle that case.
2022-07-20 18:01:35 -05:00
David Lechner 0721a24ef8 firmware/installPybricksDialog: fix some layout issues 2022-07-20 15:24:36 -05:00
David Lechner af8a31d50c firmware: add select picker for selecting custom main.py 2022-07-20 14:25:40 -05:00
David Lechner 85deb42f76 firmware: add multi-step dialog 2022-07-20 12:32:17 -05:00
David Lechner 2e555fb9fc fix error message when flashing firmware
We missed a check for MPY ABI v6 compatibility.
2022-07-06 15:06:35 -05:00
David Lechner 90cd4865e8 Add support for MPY ABI v6.
Pybricks firmware v3.2.0b2 has updated to MicroPython 1.19 which
includes breaking changes to the MPY binary file format.
2022-07-06 12:51:01 -05:00
David Lechner 07a03d4ea7 drop FirmwareSagaContext
This context is not exclusive to the firmware sagas.
2022-03-26 16:10:28 -05:00
David Lechner c158e4f0e2 editor: add editorGetValue() saga
This is another step towards removing the 'editor' context.
2022-03-26 13:44:55 -05:00
David Lechner 5dd61fa4c3 toolbar/buttons: consolidate buttons 2022-03-25 15:54:04 -05:00
David Lechner 9f254f035f i18n: use babel-loader plugin 2022-03-25 15:54:04 -05:00
David Lechner 46faff981d toolbar: add label to buttons
This improves accessability by letting us get buttons by the label.
2022-03-16 15:24:48 -05:00
David Lechner 7726dbe01d settings: convert hubName to react hook 2022-03-15 17:25:20 -05:00
David Lechner 861ea34d86 settings: convert flashCurrentProgram to react hook 2022-03-15 16:54:49 -05:00
David Lechner 8e4045449c src: use prop unpacking pattern
This makes the code a bit shorter by not having to use `props.` all of
the time. Also make everything VoidFunctionComponent while we are
touching this.
2022-03-12 16:07:31 -06:00
David Lechner 31fb3b9e4c test: drop state from AsyncSaga constructor params
This uses the real rootReducer to populate the initial state in the test
AsyncSaga. This way we don't have to populate default values. Since it
isn't used often, we can omit the parameter and just call the updateState()
method after creating the object if modifications are needed.
2022-03-11 16:04:09 -06:00
David Lechner 569217d5dc editor: don't put editor in redux store
The redux store should not have non-serializable objects like the editor
in it.
2022-03-02 18:56:47 -06:00
David Lechner 994540e263 actions: fix missed refactoring
Missed some renames when refactoring that weren't picked up locally
for some reason.
2022-02-26 12:55:49 -06:00
David Lechner a9f4eaa32d actions: simplify usage of Matchable
This removes use of the pseudo-internal toString() function and also
removes extraneous uses of ReturnType<>. Also, a new when() method
is added to simplify additional uses.
2022-02-26 12:43:10 -06:00
David Lechner 9641898a75 actions: refactor actions
The pattern we were using for actions required actions to be defined in
three places, an enum member containing the type string, an type
definition and a function. This combines all three of these into one by
using a helper function based on the ideas from [1].

[1]: https://phryneas.de/redux-typescript-no-discriminating-union
2022-02-25 17:58:30 -06:00
David Lechner cf8744a6cd actions: drop typed dispatch
This doesn't provide much benefit and is just one more rule to remember,
so we can do without it.
2022-02-24 17:16:52 -06:00