Skip to content

Commit 973cebd

Browse files
authored
Refactor toggle button text handling and sorting logic
1 parent a77c02e commit 973cebd

1 file changed

Lines changed: 10 additions & 16 deletions

File tree

config/var/www/admin/control-panel/external-services/external-services.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)