@@ -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