@@ -577,15 +577,10 @@ export class ExternalServicesManager {
577577 // Wire up toggle all button
578578 const toggleBtn = categoryHeader . querySelector ( ".category-toggle-all-btn" ) ;
579579 const areAllCategoryServicesEnabled = ( ) => categoryCheckboxes . every ( cb => cb . checked ) ;
580- const ensureToggleTextElement = ( ) => {
581- let toggleTextEl = toggleBtn . querySelector ( ".toggle-all-text" ) ;
582- if ( ! toggleTextEl ) {
583- toggleTextEl = document . createElement ( "span" ) ;
584- toggleTextEl . className = "toggle-all-text" ;
585- toggleBtn . appendChild ( toggleTextEl ) ;
586- }
587- return toggleTextEl ;
588- } ;
580+ const toggleTextEl = toggleBtn . querySelector ( ".toggle-all-text" ) ;
581+ if ( ! toggleTextEl ) {
582+ throw new Error ( "Expected .toggle-all-text span in category toggle button." ) ;
583+ }
589584 const updateToggleButtonState = ( ) => {
590585 const allEnabled = areAllCategoryServicesEnabled ( ) ;
591586 const actionText = allEnabled ? "Disable All" : "Enable All" ;
@@ -1080,6 +1075,8 @@ export class ExternalServicesManager {
10801075 * @param {Function } requestFn - Async function that performs the actual request
10811076 * @returns {Promise } Resolves when request completes
10821077 */
1078+ // NOTE: constructor should initialize all stateful request-management fields, including:
1079+ // this.inFlightRequests = {};
10831080 async queueRequest ( requestFn ) {
10841081 return new Promise ( ( resolve , reject ) => {
10851082 const executeRequest = async ( ) => {
@@ -1121,10 +1118,6 @@ export class ExternalServicesManager {
11211118 * @returns {Promise<Object> } Promise resolving to service data (from cache or parsed JSON response)
11221119 */
11231120 async fetchServiceData ( fetchFn , serviceKey ) {
1124- // Initialize in-flight request map lazily if not already set
1125- if ( ! this . inFlightRequests ) {
1126- this . inFlightRequests = { } ;
1127- }
11281121
11291122 // Check cache first - no need to queue if cached
11301123 let data = this . getCachedService ( serviceKey ) ;
@@ -1419,12 +1412,13 @@ export class ExternalServicesManager {
14191412 } ) ;
14201413
14211414 const ordered = [ ] ;
1422-
1415+ const sortServiceKeys = ( a , b ) => a . localeCompare ( b ) ;
1416+
14231417 // First: known categories in configured display order.
14241418 CATEGORY_ORDER . forEach ( ( category ) => {
14251419 const keys = servicesByCategory . get ( category ) ;
14261420 if ( keys && keys . length > 0 ) {
1427- ordered . push ( ...keys . sort ( ( a , b ) => a . localeCompare ( b ) ) ) ;
1421+ ordered . push ( ...keys . sort ( sortServiceKeys ) ) ;
14281422 servicesByCategory . delete ( category ) ;
14291423 }
14301424 } ) ;
@@ -1434,7 +1428,7 @@ export class ExternalServicesManager {
14341428 . sort ( ( a , b ) => a . localeCompare ( b ) )
14351429 . forEach ( ( category ) => {
14361430 const keys = servicesByCategory . get ( category ) || [ ] ;
1437- ordered . push ( ...keys . sort ( ( a , b ) => a . localeCompare ( b ) ) ) ;
1431+ ordered . push ( ...keys . sort ( sortServiceKeys ) ) ;
14381432 } ) ;
14391433
14401434 return ordered ;
0 commit comments