33TABS . firmware_flasher = {
44 releases : null ,
55 releaseChecker : new ReleaseChecker ( 'firmware' , 'https://api.github.com/repos/betaflight/betaflight/releases' ) ,
6- jenkinsLoader : new JenkinsLoader ( 'https://ci.betaflight.tech' )
6+ jenkinsLoader : new JenkinsLoader ( 'https://ci.betaflight.tech' ) ,
7+ localFileLoaded : false ,
78} ;
89
910TABS . firmware_flasher . initialize = function ( callback ) {
@@ -64,7 +65,7 @@ TABS.firmware_flasher.initialize = function (callback) {
6465
6566 $ ( 'span.progressLabel' ) . html ( '<a class="save_firmware" href="#" title="Save Firmware">Loaded Online Firmware: (' + parsed_hex . bytes_total + ' bytes)</a>' ) ;
6667
67- $ ( 'a.flash_firmware' ) . removeClass ( 'disabled' ) ;
68+ self . enableFlashing ( true ) ;
6869
6970 $ ( 'div.release_info .target' ) . text ( summary . target ) ;
7071 $ ( 'div.release_info .name' ) . text ( summary . version ) . prop ( 'href' , summary . releaseUrl ) ;
@@ -319,7 +320,10 @@ TABS.firmware_flasher.initialize = function (callback) {
319320 $ ( 'span.progressLabel' ) . text ( i18n . getMessage ( 'firmwareFlasherLoadFirmwareFile' ) ) ;
320321 $ ( 'div.git_info' ) . slideUp ( ) ;
321322 $ ( 'div.release_info' ) . slideUp ( ) ;
322- $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
323+
324+ if ( ! self . localFileLoaded ) {
325+ self . enableFlashing ( false ) ;
326+ }
323327
324328 var versions_e = $ ( 'select[name="firmware_version"]' ) . empty ( ) ;
325329 if ( target == 0 ) {
@@ -352,6 +356,9 @@ TABS.firmware_flasher.initialize = function (callback) {
352356
353357 // UI Hooks
354358 $ ( 'a.load_file' ) . click ( function ( ) {
359+ self . enableFlashing ( false ) ;
360+ self . localFileLoaded = true ;
361+
355362 analytics . setFirmwareData ( analytics . DATA . FIRMWARE_CHANNEL , undefined ) ;
356363 analytics . setFirmwareData ( analytics . DATA . FIRMWARE_SOURCE , 'file' ) ;
357364
@@ -394,7 +401,7 @@ TABS.firmware_flasher.initialize = function (callback) {
394401 if ( parsed_hex ) {
395402 analytics . setFirmwareData ( analytics . DATA . FIRMWARE_SIZE , parsed_hex . bytes_total ) ;
396403
397- $ ( 'a.flash_firmware' ) . removeClass ( 'disabled' ) ;
404+ self . enableFlashing ( true ) ;
398405
399406 $ ( 'span.progressLabel' ) . text ( i18n . getMessage ( 'firmwareFlasherFirmwareLocalLoaded' , parsed_hex . bytes_total ) ) ;
400407 } else {
@@ -415,7 +422,11 @@ TABS.firmware_flasher.initialize = function (callback) {
415422 */
416423 $ ( 'select[name="firmware_version"]' ) . change ( function ( evt ) {
417424 $ ( 'div.release_info' ) . slideUp ( ) ;
418- $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
425+
426+ if ( ! self . localFileLoaded ) {
427+ self . enableFlashing ( false ) ;
428+ }
429+
419430 let release = $ ( "option:selected" , evt . target ) . data ( "summary" ) ;
420431 let isCached = FirmwareCache . has ( release ) ;
421432 if ( evt . target . value == "0" || isCached ) {
@@ -436,6 +447,9 @@ TABS.firmware_flasher.initialize = function (callback) {
436447 } ) ;
437448
438449 $ ( 'a.load_remote_file' ) . click ( function ( evt ) {
450+ self . enableFlashing ( false ) ;
451+ self . localFileLoaded = false ;
452+
439453 analytics . setFirmwareData ( analytics . DATA . FIRMWARE_SOURCE , 'http' ) ;
440454
441455 if ( $ ( 'select[name="firmware_version"]' ) . val ( ) == "0" ) {
@@ -445,7 +459,6 @@ TABS.firmware_flasher.initialize = function (callback) {
445459
446460 function failed_to_load ( ) {
447461 $ ( 'span.progressLabel' ) . text ( i18n . getMessage ( 'firmwareFlasherFailedToLoadOnlineFirmware' ) ) ;
448- $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
449462 $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
450463 $ ( "a.load_remote_file" ) . text ( i18n . getMessage ( 'firmwareFlasherButtonLoadOnline' ) ) ;
451464 }
@@ -691,3 +704,13 @@ TABS.firmware_flasher.cleanup = function (callback) {
691704
692705 if ( callback ) callback ( ) ;
693706} ;
707+
708+ TABS . firmware_flasher . enableFlashing = function ( enabled ) {
709+ var self = this ;
710+
711+ if ( enabled ) {
712+ $ ( 'a.flash_firmware' ) . removeClass ( 'disabled' ) ;
713+ } else {
714+ $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
715+ }
716+ }
0 commit comments