@@ -11492,6 +11492,9 @@ document.addEventListener("DOMContentLoaded", async function(event) {
1149211492 }
1149311493
1149411494 var serverFallbackUndoState = null ;
11495+ var serverFallbackHealthCheckTimer = null ;
11496+ var serverFallbackAutoClearTimer = null ;
11497+ var serverFallbackAutoClearUntil = 0 ;
1149511498
1149611499 function getServerFallbackInputState ( ) {
1149711500 return {
@@ -11544,6 +11547,50 @@ document.addEventListener("DOMContentLoaded", async function(event) {
1154411547 return banner ;
1154511548 }
1154611549
11550+ function hideServerFallbackBanner ( ) {
11551+ var banner = getServerFallbackBanner ( ) ;
11552+ if ( banner ) {
11553+ banner . classList . remove ( "show" ) ;
11554+ banner . classList . remove ( "success" ) ;
11555+ }
11556+ if ( serverFallbackAutoClearTimer ) {
11557+ clearTimeout ( serverFallbackAutoClearTimer ) ;
11558+ serverFallbackAutoClearTimer = null ;
11559+ }
11560+ }
11561+
11562+ function requestDockTransportHealth ( callback ) {
11563+ if ( typeof chrome === "undefined" || ! chrome . runtime || typeof chrome . runtime . sendMessage !== "function" ) {
11564+ return ;
11565+ }
11566+ chrome . runtime . sendMessage ( { cmd : "getDockTransportHealth" } , function ( response ) {
11567+ if ( typeof callback === "function" ) {
11568+ callback ( response ) ;
11569+ }
11570+ } ) ;
11571+ }
11572+
11573+ function scheduleServerFallbackAutoClear ( ) {
11574+ if ( serverFallbackAutoClearTimer ) {
11575+ clearTimeout ( serverFallbackAutoClearTimer ) ;
11576+ }
11577+ serverFallbackAutoClearUntil = Date . now ( ) + 30000 ;
11578+ serverFallbackAutoClearTimer = setTimeout ( function checkDockTransport ( ) {
11579+ requestDockTransportHealth ( function ( response ) {
11580+ var health = response && response . dockTransportHealth ;
11581+ if ( health && health . fakeMessageTransportReady ) {
11582+ hideServerFallbackBanner ( ) ;
11583+ return ;
11584+ }
11585+ if ( Date . now ( ) < serverFallbackAutoClearUntil ) {
11586+ serverFallbackAutoClearTimer = setTimeout ( checkDockTransport , 2000 ) ;
11587+ } else {
11588+ serverFallbackAutoClearTimer = null ;
11589+ }
11590+ } ) ;
11591+ } , 2000 ) ;
11592+ }
11593+
1154711594 function showServerFallbackBanner ( health , customMessage , success , hideEnableButton , showUndoButton ) {
1154811595 var banner = getServerFallbackBanner ( ) ;
1154911596 if ( ! banner ) {
@@ -11594,9 +11641,12 @@ document.addEventListener("DOMContentLoaded", async function(event) {
1159411641 banner . classList . remove ( "success" ) ;
1159511642 }
1159611643 banner . classList . add ( "show" ) ;
11644+ if ( ! success ) {
11645+ scheduleServerFallbackAutoClear ( ) ;
11646+ }
1159711647 }
1159811648
11599- function maybePromptServerFallbackAfterFakeMessage ( response ) {
11649+ function maybePromptServerFallbackAfterFakeMessage ( response , afterGrace ) {
1160011650 var health = response && response . dockTransportHealth ;
1160111651 if ( ! health ) {
1160211652 return ;
@@ -11606,6 +11656,18 @@ document.addEventListener("DOMContentLoaded", async function(event) {
1160611656 return ;
1160711657 }
1160811658 if ( health . fakeMessageTransportReady ) {
11659+ hideServerFallbackBanner ( ) ;
11660+ return ;
11661+ }
11662+ if ( ! afterGrace ) {
11663+ if ( serverFallbackHealthCheckTimer ) {
11664+ clearTimeout ( serverFallbackHealthCheckTimer ) ;
11665+ }
11666+ serverFallbackHealthCheckTimer = setTimeout ( function ( ) {
11667+ requestDockTransportHealth ( function ( updatedResponse ) {
11668+ maybePromptServerFallbackAfterFakeMessage ( updatedResponse , true ) ;
11669+ } ) ;
11670+ } , 3000 ) ;
1160911671 return ;
1161011672 }
1161111673 if ( health . serverFallbackEnabled ) {
0 commit comments