This fixes a problem where having a non-default locale set during the initial load would display the blocks in the default toolbox in the wrong language, because the toolbox recycling toggle in setLocale does not work on initial load because there is no editing target to refresh.
This fixes the issue where you could not see any new variables or custom block callers, as well as fixing the issue where the toolbox did not update from then on.
Need to store the rendered xml because the props can change while the blocks tab is hidden, but we re-render based on what was rendered, not the previous props (which may not have been rendered).
This is similar to the `ThrottledPropertyHOC` in that there may be prop changes that do not get rendered, but in this case for a different reason.
This increases the performance of switching between code and other editor tabs, as well as improving the "See Inside" performance. It makes switching to the code tab as fast as switching between sprites.
Listen to the new project changed event from the VM and keep track of the state in Redux. Update it as appropriate.
Known issue is that the project is marked as "changed" immediately after it's loaded. This is due to asynchronous event emitting while the project data is loaded, and needs an update to the VM to fix.
* Connection Modal loads its own data
* Connection does not update flyout status buttons
* WIP moving connection modal into redux
* Lint fix and remove unused prop
* Close modal even if exception on disconnect
* Handle recordSoundCallback from blocks
* Set custom field type for sounds menu
* Add record… item to sounds menu
* Use localized string and ID for ‘record…’ option
* Add integration test
* Don’t use custom field for sounds menu
* Use callback as the value of the ‘record…’ menu item
Workspace update errors can be partially recovered from. This allows
the gui to "successfully" load on projects that pass vm validation and
loading but throw an error in scratch-blocks. Logging the error instead
of throwing it allows the gui and vm to finish updating for the
workspace change. This allows the VM to behave normally even if the
scratch-blocks workspace rendering is incomplete.
In `blocks.jsx` only call setLocale if visible. Depends on `getLocale` being added to VM to know when global locale changed while not visible making the VM out of sync.