Commit Graph
482 Commits
Author SHA1 Message Date
David Lechner f9c1f7084c drop FileSaver
browser-fs-access already includes fallbacks to the file storage api
so we don't have to provide our own.
2022-03-16 14:59:10 -05:00
David Lechner 6062517dec fileStorage/sagas: use pythonFileMimeType
Missed an instance where text/x-python was hard-coded.
2022-03-16 13:22:42 -05:00
David Lechner f17e32af61 settings/SettingsDrawer: work around tooltip bug 2022-03-16 13:07:10 -05:00
David Lechner aafdca3991 typo 2022-03-16 10:25:08 -05:00
David Lechner cb3f22fc9b settings/SettingsDrawer: do not focus hub name label 2022-03-15 21:49:34 -05:00
David Lechner 675d01013d utils/react: drop preventFocusOnClick
We can fix this better with css tweaks.
2022-03-15 21:39:24 -05:00
David Lechner 644ac4cb5e licenses/LicenseDialog: use Tree instead of ButtonGroup 2022-03-15 20:13:49 -05:00
David Lechner 57cd40d9dd licenses: finish NonIdealState TODO 2022-03-15 18:49:12 -05:00
David Lechner d1090d01d6 licenses: replace sagas/reducers with useFetch hook 2022-03-15 18:37:06 -05:00
David Lechner a4660e979c settings: switch to useTernaryDarkMode
useDarkMode kept reverting back to the system default during development
2022-03-15 17:40:46 -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 d18ad41e39 settings: add about dialog button test 2022-03-15 15:53:03 -05:00
David Lechner 6cfc37b947 settings: use react hook for showDocs setting
The moves the setting from redux state to a react hook.
2022-03-15 15:35:45 -05:00
David Lechner 9518a21241 settings: replace darkMode with useDarkMode hook
This is a minor breaking change for users that don't have dark mode
set to the default value since the localStorage key has changed (hard-
coded in 3rd party library).
2022-03-14 16:39:17 -05:00
David Lechner 187a973fa3 app: fix terminal padding background color 2022-03-14 13:26:51 -05:00
David Lechner a92a989ded app: useLocalStorage
This simplifies the code a bit by using the useLocalStorage hook.
2022-03-14 12:55:38 -05:00
David Lechner 6c55588d7a app: fix layout
The explorer was getting pushed off of the screen when typing long lines
in the editor.
2022-03-14 12:39:42 -05:00
David Lechner c75f3720f5 editor: drop EditorContext
We want to rely less on directly accessing the editor object.
2022-03-12 18:29:56 -06:00
David Lechner ceeb34436f monaco-extension: add types for internal methods 2022-03-12 18:18:17 -06:00
David Lechner ecbcb09846 hub/ReplButton: convert to function component 2022-03-12 16:18:38 -06: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 228ba4ebb8 toolbar: change button order
The flash and bluetooth buttons are moved to the left. This way, the
run button is closer to the text editor.
2022-03-12 15:47:47 -06:00
David Lechner cf8438c689 toolbar: drop open and saveAs buttons
These have been replace by the explorer.
2022-03-12 15:45:36 -06:00
David Lechner a2ccd3afdb utils/react: add pointerEventsNone helper
This should prevent some unnecessary rerendering by not creating a new
inline object.
2022-03-12 15:26:48 -06:00
David Lechner c51669c357 fix deps in hotkeys memos 2022-03-12 15:19:50 -06:00
David Lechner 8d4b42875a settings: fix use of deprecated Drawer.SIZE_* 2022-03-12 15:19:50 -06:00
David Lechner de7e046d31 avoid lambda props
This fixes the simple cases of callback props using lambda functions.
This will prevent rerendering in some cases since a new callback
function is not created on each call.
2022-03-12 15:19:50 -06:00
David Lechner c229d407cf utils/react: add preventDefault helpers
These can be used instead of always having to add a comment explaining
what preventDefault does in a given context.
2022-03-12 14:57:30 -06:00
David Lechner d8f958d18e explorer: implement file renaming 2022-03-12 14:45:06 -06:00
David Lechner 33974c52b3 fileStorage: add rename file actions 2022-03-12 14:18:02 -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 93111b6af4 explorer: implement import action 2022-03-11 15:41:16 -06:00
David Lechner 7b095765ac pybricksMicropython/lib: add pythonFileExtensionRegex
This can be reused in code to work with file names.
2022-03-11 15:41:16 -06:00
David Lechner e36a30de4c pybricksMicropython/lib: add module
This creates a new module for dealing with stuff specific to Pybricks
MicroPython.
2022-03-11 15:41:16 -06:00
David Lechner 38b9bb6656 explorer: confirm file deletion
Since deleting files cannot be undone, we need to be extra sure before
actually deleting the file.
2022-03-10 13:48:57 -06:00
David Lechner a995c52e04 notifications: add helper function to simplify tests
This reduces duplicate code and uses more of the real implementation.
2022-03-10 13:48:11 -06:00
David Lechner 63fc715f20 fileStorage: add didDeleteFile and didFailToDeleteFile actions
This will allow handling errors if removing a file from storage fails.
2022-03-10 13:45:10 -06:00
David Lechner 96f0dd16fd explorer: create new file wizard 2022-03-10 02:22:29 -06:00
David Lechner fd120bb5a6 fileStorage: fix incorrect suggested file name 2022-03-10 02:10:34 -06:00
David Lechner ddbf3a20f4 explorer: add more UI tests 2022-03-10 02:02:20 -06:00
David Lechner b37209683b test: extend testRender to return spy on dispatch 2022-03-10 02:00:14 -06:00
David Lechner 41fc961661 fileStorage: implement delete action 2022-03-10 01:02:18 -06:00
David Lechner 03d12feb89 explorer: add basic file explorer
This is the beginnings of a file explorer. Most actions are not yet
implemented.
2022-03-09 20:54:04 -06:00
David Lechner 6afee4b6d6 test: add testRender()
This adds a testRender() helper function to simplify UI tests. Instead
of mocking the redux store, we use the real thing.
2022-03-09 17:24:46 -06:00
David Lechner 1469d2146e app: rework service worker registration
- registration is moved from top-level index to app/sagas.
- mock implementation is provided for tests
- actions are renamed to include "app" prefix
- actions are changed to not use non-serializable arguments
- reducers are changed to not use non-serializable state
2022-03-09 15:48:30 -06:00
David Lechner 907826cf0e app: rework BeforeInstallPromptEvent
This removed passing the BeforeInstallPromptEvent as an action argument
(action arguments should be serializable). Instead the saga just keeps
a reference to the event and actions are used only to resolve the state
of the UI.
2022-03-08 13:37:43 -06:00
David Lechner 7884f047b5 service-worker: rename actions
This adds a prefix to the actions so that we won't have to use aliases.
2022-03-07 17:46:26 -06:00
David Lechner d767ca0784 notifications/sagas: fix rename in comment
This was missed when actions were refactored to remove ActionType enums.
2022-03-05 12:39:30 -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