Skip to content

Commit 11834cc

Browse files
authored
Update external-services.js
1 parent a97021e commit 11834cc

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

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

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ export class ExternalServicesManager {
391391
* @returns {Object} Services object with every known key set to true
392392
*/
393393
buildAllServicesEnabledMap() {
394-
const serviceDefinitions = this.getServiceDefinitions();
394+
return this.createAllServicesEnabledMap();
395395
const services = {};
396396
Object.keys(serviceDefinitions).forEach(key => {
397397
services[key] = true;
@@ -765,7 +765,11 @@ export class ExternalServicesManager {
765765
this.applyPreferenceChanges(currentPreferences, safeChanges);
766766

767767
// Save preferences to local storage (avoid tamper-prone cookie storage)
768-
window.localStorage.setItem('servicePreferences', JSON.stringify(currentPreferences));
768+
try {
769+
window.localStorage.setItem('servicePreferences', JSON.stringify(currentPreferences));
770+
} catch (storageError) {
771+
throw new Error('Unable to save preferences: browser storage is full or disabled.');
772+
}
769773
this.applyPreferenceChanges(services, safeChanges);
770774

771775
// Clear pending changes
@@ -795,7 +799,7 @@ export class ExternalServicesManager {
795799
this.resetSaveButtonContent(saveButton);
796800
}, 2000);
797801

798-
this.showNotification('Failed to save preferences', 'error');
802+
this.showNotification(error && error.message ? error.message : 'Failed to save preferences', 'error');
799803
}
800804
}
801805

@@ -1318,7 +1322,14 @@ export class ExternalServicesManager {
13181322
loadServicePreferences() {
13191323
try {
13201324
// Try to load from local storage
1321-
const storedPrefs = window.localStorage.getItem('servicePreferences');
1325+
let storedPrefs = null;
1326+
try {
1327+
storedPrefs = window.localStorage.getItem('servicePreferences');
1328+
} catch (storageError) {
1329+
console.error('Failed to access localStorage for service preferences:', storageError);
1330+
return null;
1331+
}
1332+
13221333
if (storedPrefs) {
13231334
try {
13241335
const parsed = JSON.parse(storedPrefs);
@@ -1422,7 +1433,7 @@ export class ExternalServicesManager {
14221433
container.insertBefore(reorderInstructions, container.firstChild);
14231434
}
14241435

1425-
let cachedCardOrder = null;
1436+
this.cachedCardOrder = null;
14261437

14271438
serviceCards.forEach((card) => {
14281439
card.draggable = true;
@@ -1436,7 +1447,7 @@ export class ExternalServicesManager {
14361447

14371448
card.addEventListener('dragstart', (e) => {
14381449
draggedElement = card;
1439-
cachedCardOrder = Array.from(container.querySelectorAll('.external-service-card'));
1450+
this.cachedCardOrder = Array.from(container.querySelectorAll('.external-service-card'));
14401451
card.classList.add('dragging');
14411452
if (e.dataTransfer) {
14421453
e.dataTransfer.effectAllowed = 'move';
@@ -1481,7 +1492,10 @@ export class ExternalServicesManager {
14811492
if (targetCard && targetCard !== draggedElement) {
14821493
targetCard.classList.remove('drag-over');
14831494

1484-
const allCards = cachedCardOrder || Array.from(container.querySelectorAll('.external-service-card'));
1495+
if (!cachedCardOrder) {
1496+
return;
1497+
}
1498+
const allCards = cachedCardOrder;
14851499
const draggedIndex = allCards.indexOf(draggedElement);
14861500
const targetIndex = allCards.indexOf(targetCard);
14871501

0 commit comments

Comments
 (0)