11import { RemixApp } from '@remix-ui/app'
22import axios from 'axios'
3- import React , { useState , useEffect , useRef , useContext } from 'react'
4- import { FormattedMessage , useIntl } from 'react-intl'
3+ import React , { useState , useEffect , useRef } from 'react'
54import { useTracking , TrackingProvider } from '../contexts/TrackingContext'
65import { TrackingFunction } from '../utils/TrackingFunction'
76import * as packageJson from '../../../../../package.json'
7+ import * as remixDesktopPackageJson from '../../../../../apps/remixdesktop/package.json'
88import { fileSystem , fileSystems } from '../files/fileSystem'
99import { indexedDBFileSystem } from '../files/filesystems/indexedDB'
1010import { localStorageFS } from '../files/filesystems/localStorage'
@@ -28,6 +28,7 @@ export const Preload = (props: PreloadProps) => {
2828 const remixFileSystems = useRef < fileSystems > ( new fileSystems ( ) )
2929 const remixIndexedDB = useRef < fileSystem > ( new indexedDBFileSystem ( ) )
3030 const localStorageFileSystem = useRef < fileSystem > ( new localStorageFS ( ) )
31+ const version = isElectron ( ) ? remixDesktopPackageJson . version : packageJson . version
3132 // url parameters to e2e test the fallbacks and error warnings
3233 const testmigrationFallback = useRef < boolean > (
3334 window . location . hash . includes ( 'e2e_testmigration_fallback=true' ) && window . location . host === '127.0.0.1:8080' && window . location . protocol === 'http:'
@@ -95,14 +96,20 @@ export const Preload = (props: PreloadProps) => {
9596 }
9697 }
9798
98- useEffect ( ( ) => {
99- if ( isElectron ( ) ) {
99+ useEffect ( ( ) => {
100+ // Remove pre-splash as soon as React preloader mounts
101+ try {
102+ const splash = document . getElementById ( 'pre-splash' )
103+ if ( splash && splash . parentNode ) splash . parentNode . removeChild ( splash )
104+ } catch ( _ ) { /* noop */ }
105+
106+ if ( isElectron ( ) ) {
100107 loadAppComponent ( )
101108 return
102109 }
103110 async function loadStorage ( ) {
104- ; ( await remixFileSystems . current . addFileSystem ( remixIndexedDB . current ) ) || trackMatomoEvent ?.( { category : 'Storage' , action : 'error' , name : 'indexedDB not supported' , isClick : false } )
105- ; ( await remixFileSystems . current . addFileSystem ( localStorageFileSystem . current ) ) || trackMatomoEvent ?.( { category : 'Storage' , action : 'error' , name : 'localstorage not supported' , isClick : false } )
111+ ; ( await remixFileSystems . current . addFileSystem ( remixIndexedDB . current ) ) || trackMatomoEvent ?.( { category : 'Storage' , action : 'error' , name : 'indexedDB not supported' , isClick : false } )
112+ ; ( await remixFileSystems . current . addFileSystem ( localStorageFileSystem . current ) ) || trackMatomoEvent ?.( { category : 'Storage' , action : 'error' , name : 'localstorage not supported' , isClick : false } )
106113 await testmigration ( )
107114 remixIndexedDB . current . loaded && ( await remixIndexedDB . current . checkWorkspaces ( ) )
108115 localStorageFileSystem . current . loaded && ( await localStorageFileSystem . current . checkWorkspaces ( ) )
@@ -125,89 +132,82 @@ export const Preload = (props: PreloadProps) => {
125132 } catch ( e ) {
126133 console . log ( e )
127134 }
135+
128136 return ( ) => {
129137 abortController . abort ( ) ;
130138 } ;
131139 } , [ ] )
132140
133141 return (
134142 < >
135- < div className = "preload-container" >
136- < div className = "preload-logo pb-4" >
137- { logo }
138- < div className = "info-secondary splash" >
139- REMIX IDE
140- < br />
141- < span className = "version" > v{ packageJson . version } </ span >
143+ < div className = "preload-container" >
144+ < div className = "preload-main" >
145+ < div className = "preload-logo text-center" >
146+ < img src = "assets/img/remix-logo-blue.png" alt = "Remix logo" width = "64" height = "64" />
147+ < div className = "preload-title" > REMIX IDE</ div >
148+ < div className = "preload-sub" > < span className = "version" > v{ version } </ span > </ div >
142149 </ div >
143- </ div >
144- { ! supported ? (
145- < div className = "preload-info-container alert alert-warning" >
146- Your browser does not support any of the filesystems required by Remix. Either change the settings in your browser or use a supported browser.
147- </ div >
148- ) : null }
149- { error ? (
150- < div className = "preload-info-container alert alert-danger text-start" >
151- An unknown error has occurred while loading the application.
152- < br > </ br >
153- Doing a hard refresh might fix this issue:< br > </ br >
154- < div className = "pt-2" >
155- Windows:< br > </ br > - Chrome: CTRL + F5 or CTRL + Reload Button
156- < br > </ br > - Firefox: CTRL + SHIFT + R or CTRL + F5< br > </ br >
157- </ div >
158- < div className = "pt-2" >
159- MacOS:< br > </ br > - Chrome & FireFox : CMD + SHIFT + R or SHIFT + Reload Button < br > </ br >
150+ { ! supported ? (
151+ < div className = "preload-info-container alert alert-warning" >
152+ Your browser does not support any of the filesystems required by Remix. Either change the settings in your browser or use a supported browser.
160153 </ div >
161- < div className = "pt-2" >
162- Linux:< br > </ br > - Chrome & FireFox : CTRL + SHIFT + R < br > </ br >
154+ ) : null }
155+ { error ? (
156+ < div className = "preload-info-container alert alert-danger text-start" >
157+ An unknown error has occurred while loading the application.
158+ < br > </ br >
159+ Doing a hard refresh might fix this issue:< br > </ br >
160+ < div className = "pt-2" >
161+ Windows:< br > </ br > - Chrome: CTRL + F5 or CTRL + Reload Button
162+ < br > </ br > - Firefox: CTRL + SHIFT + R or CTRL + F5< br > </ br >
163+ </ div >
164+ < div className = "pt-2" >
165+ MacOS:< br > </ br > - Chrome & FireFox : CMD + SHIFT + R or SHIFT + Reload Button < br > </ br >
166+ </ div >
167+ < div className = "pt-2" >
168+ Linux:< br > </ br > - Chrome & FireFox : CTRL + SHIFT + R < br > </ br >
169+ </ div >
163170 </ div >
164- </ div >
165- ) : null }
166- { showDownloader ? (
167- < div className = "preload-info-container alert alert-info" >
168- This app will be updated now. Please download a backup of your files now to make sure you don't lose your work.
169- < br > </ br >
170- You don't need to do anything else, your files will be available when the app loads.
171- < div
172- onClick = { async ( ) => {
173- await downloadBackup ( )
174- } }
175- data-id = "downloadbackup- btn"
176- className = "btn btn-primary mt-1"
177- >
178- download backup
179- </ div >
180- < div
181- onClick = { async ( ) => {
182- await migrateAndLoad ( )
183- } }
184- data-id = "skipbackup- btn"
185- className = "btn btn-primary mt-1"
186- >
187- skip backup
171+ ) : null }
172+ { showDownloader ? (
173+ < div className = "preload-info-container alert alert-info" >
174+ This app will be updated now. Please download a backup of your files now to make sure you don't lose your work.
175+ < br > </ br >
176+ You don't need to do anything else, your files will be available when the app loads.
177+ < div
178+ onClick = { async ( ) => {
179+ await downloadBackup ( )
180+ } }
181+ data-id = "downloadbackup-btn"
182+ className = " btn btn-primary mt-1 "
183+ >
184+ download backup
185+ </ div >
186+ < div
187+ onClick = { async ( ) => {
188+ await migrateAndLoad ( )
189+ } }
190+ data-id = "skipbackup-btn"
191+ className = " btn btn-primary mt-1 "
192+ >
193+ skip backup
194+ </ div >
188195 </ div >
189- </ div >
190- ) : null }
191- { supported && ! error && ! showDownloader ? (
192- < div >
193- < div className = 'text-center' >
194- < i className = "fas fa-spinner fa-spin fa-2x" > </ i >
196+ ) : null }
197+ { supported && ! error && ! showDownloader ? (
198+ < div className = 'text-center' style = { { marginTop : '16px' } } >
199+ < div className = "pre-splash-spinner" role = "progressbar" aria-label = "Loading" > </ div >
195200 </ div >
196- { tip && < div className = 'remix_tips text-center mt-3' >
197- < div > < b > DID YOU KNOW</ b > </ div >
198- < span > { tip } </ span >
199- </ div > }
200- </ div >
201- ) : null }
201+ ) : null }
202+ </ div >
203+ < div className = "preload-bottom opt-out" >
204+ { tip && < div className = 'remix_tips text-center mt-3' >
205+ < div > < b > DID YOU KNOW</ b > </ div >
206+ < span > { tip } </ span >
207+ </ div > }
208+ </ div >
202209 </ div >
203210 </ >
204211 )
205212}
206213
207- const logo = (
208- < svg id = "Ebene_2" data-name = "Ebene 2" xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 105 100" >
209- < path d = "M91.84,35a.09.09,0,0,1-.1-.07,41,41,0,0,0-79.48,0,.09.09,0,0,1-.1.07C9.45,35,1,35.35,1,42.53c0,8.56,1,16,6,20.32,2.16,1.85,5.81,2.3,9.27,2.22a44.4,44.4,0,0,0,6.45-.68.09.09,0,0,0,.06-.15A34.81,34.81,0,0,1,17,45c0-.1,0-.21,0-.31a35,35,0,0,1,70,0c0,.1,0,.21,0,.31a34.81,34.81,0,0,1-5.78,19.24.09.09,0,0,0,.06.15,44.4,44.4,0,0,0,6.45.68c3.46.08,7.11-.37,9.27-2.22,5-4.27,6-11.76,6-20.32C103,35.35,94.55,35,91.84,35Z" />
210- < path d = "M52,74,25.4,65.13a.1.1,0,0,0-.1.17L51.93,91.93a.1.1,0,0,0,.14,0L78.7,65.3a.1.1,0,0,0-.1-.17L52,74A.06.06,0,0,1,52,74Z" />
211- < path d = "M75.68,46.9,82,45a.09.09,0,0,0,.08-.09,29.91,29.91,0,0,0-.87-6.94.11.11,0,0,0-.09-.08l-6.43-.58a.1.1,0,0,1-.06-.18l4.78-4.18a.13.13,0,0,0,0-.12,30.19,30.19,0,0,0-3.65-6.07.09.09,0,0,0-.11,0l-5.91,2a.1.1,0,0,1-.12-.14L72.19,23a.11.11,0,0,0,0-.12,29.86,29.86,0,0,0-5.84-4.13.09.09,0,0,0-.11,0l-4.47,4.13a.1.1,0,0,1-.17-.07l.09-6a.1.1,0,0,0-.07-.1,30.54,30.54,0,0,0-7-1.47.1.1,0,0,0-.1.07l-2.38,5.54a.1.1,0,0,1-.18,0l-2.37-5.54a.11.11,0,0,0-.11-.06,30,30,0,0,0-7,1.48.12.12,0,0,0-.07.1l.08,6.05a.09.09,0,0,1-.16.07L37.8,18.76a.11.11,0,0,0-.12,0,29.75,29.75,0,0,0-5.83,4.13.11.11,0,0,0,0,.12l2.59,5.6a.11.11,0,0,1-.13.14l-5.9-2a.11.11,0,0,0-.12,0,30.23,30.23,0,0,0-3.62,6.08.11.11,0,0,0,0,.12l4.79,4.19a.1.1,0,0,1-.06.17L23,37.91a.1.1,0,0,0-.09.07A29.9,29.9,0,0,0,22,44.92a.1.1,0,0,0,.07.1L28.4,47a.1.1,0,0,1,0,.18l-5.84,3.26a.16.16,0,0,0,0,.11,30.17,30.17,0,0,0,2.1,6.76c.32.71.67,1.4,1,2.08a.1.1,0,0,0,.06,0L52,68.16H52l26.34-8.78a.1.1,0,0,0,.06-.05,30.48,30.48,0,0,0,3.11-8.88.1.1,0,0,0-.05-.11l-5.83-3.26A.1.1,0,0,1,75.68,46.9Z" />
212- </ svg >
213- )
0 commit comments