* Remove unnecessary console.log
* Create a global appMachine
* Strip authMachine of side-effects
* Replace react-bound authMachine use with XState actor use
* Fix import goof
* Register auth commands directly!
* Don't provide anything to settingsMachine from React
* Remove unecessary async
* Make it possible to load project settings via a sent event, without React
* Make settingsMachine ready to be an actor
* Remove settingsLoader use
* Replace all useSettingsAuthContext use with direct actor use
* Add logic to clear project settings, fmt
* fmt
* Clear and load project settings from routeLoaders, but using actor
* Remove useRefreshSettings
* Restore use of useToken() that wasn't working for some reason
* Migrate useFileSystemWatcher use to RouteProvider
* Surface wasm_bindgen unavailable error to console
* Remove unnecessary use of Jest settings wrappers
* Replace dynamic import with actor.getSnapshot
* Migrate system theme and theme color watching from useEffects to actors/actions
* Migrate cursor color effect
* Remove unused code that is now in RouteProvider
* Migrate route commands registration further down for now, out of SettingsAuthProvider
* Migrate settings command registration out of SettingsAuthProvider.tsx
* Delete SettingsAuthProvider.tsx!
* Remove unused settingsLoader!
* fmt and remove comments
* Use actor for routeLoader
* Fix project read error due to uninitialized WASM
* Fix user settings load error due to uninitialized WASM
* Move settingsActor into appActor as a spawned child
* Trying to fix unit tests
* Remove unused imports and demo window attachments
* fmt
* Fix testing issues caused by circular dependency
* Add `setThemeColor` to a few actions list it was missing from
* fmt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* Fix "Execute AST" action in browser, where currentProject is `undefined`
* Update commands list when currentProject changes
* Fix `clearProjectSettings`, which was passing along non-settings context
* Fix onboarding test that actually needed the onboarding initially dismissed
* Add scrollIntoView to make this test more reliable
* @lf94's feedback I missed
I got distracted by a million other things last week
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)"
This reverts commit 129226c6ef
.
* fmt
* revert bad snapshot
* Fix up camera movement test locator
* Fix test that was flipping the user settings without waiting
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
105 lines
3.3 KiB
TypeScript
105 lines
3.3 KiB
TypeScript
import ReactDOM from 'react-dom/client'
|
|
import './index.css'
|
|
import reportWebVitals from './reportWebVitals'
|
|
import toast, { Toaster } from 'react-hot-toast'
|
|
import { Router } from './Router'
|
|
import { HotkeysProvider } from 'react-hotkeys-hook'
|
|
import ModalContainer from 'react-modal-promise'
|
|
import { isDesktop } from 'lib/isDesktop'
|
|
import { AppStreamProvider } from 'AppState'
|
|
import { ToastUpdate } from 'components/ToastUpdate'
|
|
import { markOnce } from 'lib/performance'
|
|
import { AUTO_UPDATER_TOAST_ID } from 'lib/constants'
|
|
import { initializeWindowExceptionHandler } from 'lib/exceptions'
|
|
import { initPromise } from 'lang/wasm'
|
|
import { appActor } from 'machines/appMachine'
|
|
import { reportRejection } from 'lib/trap'
|
|
|
|
markOnce('code/willAuth')
|
|
initializeWindowExceptionHandler()
|
|
|
|
// uncomment for xstate inspector
|
|
// import { DEV } from 'env'
|
|
// import { inspect } from '@xstate/inspect'
|
|
// if (DEV)
|
|
// inspect({
|
|
// iframe: false,
|
|
// })
|
|
|
|
// Don't start the app machine until all these singletons
|
|
// are initialized, and the wasm module is loaded.
|
|
initPromise
|
|
.then(() => {
|
|
appActor.start()
|
|
})
|
|
.catch(reportRejection)
|
|
|
|
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
|
|
|
|
root.render(
|
|
<HotkeysProvider>
|
|
<AppStreamProvider>
|
|
<Router />
|
|
<Toaster
|
|
position="bottom-center"
|
|
toastOptions={{
|
|
style: {
|
|
borderRadius: '3px',
|
|
maxInlineSize: 'min(480px, 100%)',
|
|
},
|
|
className:
|
|
'bg-chalkboard-10 dark:bg-chalkboard-90 text-chalkboard-110 dark:text-chalkboard-10 rounded-sm border-chalkboard-20/50 dark:border-chalkboard-80/50',
|
|
success: {
|
|
iconTheme: {
|
|
primary: 'oklch(89% 0.16 143.4deg)',
|
|
secondary: 'oklch(48.62% 0.1654 142.5deg)',
|
|
},
|
|
// We shouldn't have a different duration in tests than prod, it might
|
|
// lead to issues.
|
|
duration: 1500,
|
|
},
|
|
}}
|
|
/>
|
|
<ModalContainer />
|
|
</AppStreamProvider>
|
|
</HotkeysProvider>
|
|
)
|
|
|
|
// If you want to start measuring performance in your app, pass a function
|
|
// to log results (for example: reportWebVitals(console.log))
|
|
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
|
reportWebVitals()
|
|
|
|
if (isDesktop()) {
|
|
// Listen for update download progress to begin
|
|
// to show a loading toast.
|
|
window.electron.onUpdateDownloadStart(() => {
|
|
const message = `Downloading app update...`
|
|
console.log(message)
|
|
toast.loading(message, { id: AUTO_UPDATER_TOAST_ID })
|
|
})
|
|
// Listen for update download errors to show
|
|
// an error toast and clear the loading toast.
|
|
window.electron.onUpdateError(({ error }) => {
|
|
console.error(error)
|
|
toast.error('An error occurred while downloading the update.', {
|
|
id: AUTO_UPDATER_TOAST_ID,
|
|
})
|
|
})
|
|
window.electron.onUpdateDownloaded(({ version, releaseNotes }) => {
|
|
const message = `A new update (${version}) was downloaded and will be available next time you open the app.`
|
|
console.log(message)
|
|
toast.custom(
|
|
ToastUpdate({
|
|
version,
|
|
releaseNotes,
|
|
onRestart: () => {
|
|
window.electron.appRestart()
|
|
},
|
|
onDismiss: () => {},
|
|
}),
|
|
{ duration: 30000, id: AUTO_UPDATER_TOAST_ID }
|
|
)
|
|
})
|
|
}
|