@@ -2,47 +2,27 @@ export default async function ({ addon, console }) {
22 if ( addon . tab . editorMode === "editor" ) return ;
33
44 const projectId = location . pathname . split ( "/" ) [ 2 ] ;
5- const thumb = document . createElement ( "img" ) ;
6- thumb . src = `https://uploads.scratch.mit.edu/get_image/project/ ${ projectId } _480x360.png` ;
7- thumb . classList = "sa- project-thumb loading" ;
8- thumb . draggable = false ;
5+ document . documentElement . style . setProperty (
6+ "--sa-player-thumb-src" ,
7+ `url(https://uploads.scratch.mit.edu/get_image/ project/ ${ projectId } _480x360.png)`
8+ ) ;
99
1010 const stageWrapper = await addon . tab . waitForElement ( 'div[class*="stage-wrapper_stage-wrapper_"]' ) ;
1111 addon . tab . redux . initialize ( ) ;
12-
13- // It's possible this runs after the project loads even without dynamic enable
14- if ( addon . tab . redux . state ?. scratchGui ?. projectState ?. loadingState === "SHOWING_WITH_ID" ) return ;
15- // Second check in case of a URL change
16- if ( addon . tab . editorMode === "editor" ) return ;
17-
18- const alerts = document . querySelector ( ".project-info-alerts" ) ;
1912 const controls = stageWrapper . querySelector ( 'div[class^="controls_controls-container_"]' ) ;
13+ // Ensure the project has not already loaded when disabling the controls
14+ if ( addon . tab . redux . state ?. scratchGui ?. projectState ?. loadingState === "SHOWING_WITH_ID" ) return ;
2015 controls . classList . add ( "sa-controls-disabled" ) ;
21-
2216 const loaderBackground = stageWrapper . querySelector ( '[class*="loader_background_"]' ) ;
23- stageWrapper . insertBefore ( thumb , loaderBackground ) ;
24- alerts . style . display = "none" ;
2517 loaderBackground . classList . add ( "sa-loader-background" ) ;
2618
2719 addon . tab . addEventListener ( "urlChange" , ( ) => {
2820 loaderBackground . classList . add ( "sa-loader-background" ) ;
2921 } ) ;
3022
31- function handleStateChange ( e ) {
23+ addon . tab . redux . addEventListener ( "statechanged" , ( e ) => {
3224 if ( e . detail . action . type === "scratch-gui/project-changed/SET_PROJECT_CHANGED" ) {
33- // Move the thumbnail after the project loads
34- thumb . classList . remove ( "loading" ) ;
3525 controls . classList . remove ( "sa-controls-disabled" ) ;
36- const stage = document . querySelector ( 'div[class*="stage_stage"]' ) ;
37- const greenFlagOverlay = stage . querySelector ( '[class*="stage_green-flag-overlay-wrapper_"]' ) ;
38- stage . insertBefore ( thumb , greenFlagOverlay ) ;
39- alerts . style . display = "flex" ;
40- }
41- if ( e . detail . action . type === "scratch-gui/vm-status/SET_STARTED_STATE" ) {
42- thumb . remove ( ) ;
43- addon . tab . redux . removeEventListener ( "statechanged" , handleStateChange ) ;
4426 }
45- }
46-
47- addon . tab . redux . addEventListener ( "statechanged" , handleStateChange ) ;
27+ } ) ;
4828}
0 commit comments