From 59df695530c48356a277fea0659f1d5d6e2c3bed Mon Sep 17 00:00:00 2001 From: jknapp Date: Fri, 23 Jan 2026 19:12:18 -0800 Subject: [PATCH] Fix browser phone init not starting on mobile (window.load not firing) The window.load event was never firing on mobile tablets, preventing the browser phone from initializing. Changed to poll for Twilio SDK availability instead of waiting for window.load event. Co-Authored-By: Claude Opus 4.5 --- admin/class-twp-admin.php | 46 ++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/admin/class-twp-admin.php b/admin/class-twp-admin.php index 8643b44..7c278ba 100644 --- a/admin/class-twp-admin.php +++ b/admin/class-twp-admin.php @@ -8253,20 +8253,40 @@ class TWP_Admin { // Check if SDK loaded and initialize debugLog('jQuery ready'); + + // Don't wait for window.load - it may not fire on mobile + // Instead, poll for Twilio SDK availability + var sdkCheckAttempts = 0; + var maxSdkCheckAttempts = 50; // 5 seconds max + + function checkAndInitialize() { + sdkCheckAttempts++; + debugLog('SDK check #' + sdkCheckAttempts + ': ' + (typeof Twilio)); + + if (typeof Twilio !== 'undefined' && Twilio.Device) { + console.log('Twilio SDK loaded successfully'); + debugLog('SDK OK, initializing...'); + initializeBrowserPhone(); + } else if (sdkCheckAttempts < maxSdkCheckAttempts) { + // Keep checking every 100ms + setTimeout(checkAndInitialize, 100); + } else { + showError('Twilio Voice SDK failed to load. Please check your internet connection and try refreshing the page.'); + console.error('Twilio SDK not found after ' + sdkCheckAttempts + ' attempts.'); + debugLog('SDK FAILED after ' + sdkCheckAttempts + ' attempts'); + } + } + + // Start checking after a brief delay + setTimeout(checkAndInitialize, 500); + + // Also keep the window.load as backup for desktop $(window).on('load', function() { - debugLog('Window loaded'); - setTimeout(function() { - debugLog('Checking Twilio: ' + (typeof Twilio)); - if (typeof Twilio === 'undefined') { - showError('Twilio Voice SDK failed to load. Please check your internet connection and try refreshing the page.'); - console.error('Twilio SDK not found. Script may be blocked or failed to load.'); - debugLog('SDK FAILED'); - } else { - console.log('Twilio SDK loaded successfully'); - debugLog('SDK OK, initializing...'); - initializeBrowserPhone(); - } - }, 1000); + debugLog('Window loaded (backup)'); + if (typeof Twilio !== 'undefined' && !device) { + debugLog('Backup init triggered'); + initializeBrowserPhone(); + } }); // Clean up on page unload