@@ -20,14 +20,18 @@ widgetsHelper.firstGetAvailableWidgetsCall = null;
2020 */
2121widgetsHelper . getAvailableWidgets = function ( callback ) {
2222
23+ function resetFirstGetAvailableWidgetsCall ( promise ) {
24+ if ( widgetsHelper . firstGetAvailableWidgetsCall === promise ) {
25+ widgetsHelper . firstGetAvailableWidgetsCall = null ;
26+ }
27+ }
28+
2329 if ( ! widgetsHelper . availableWidgets && widgetsHelper . firstGetAvailableWidgetsCall ) {
24- widgetsHelper . firstGetAvailableWidgetsCall . then ( function ( ) {
30+ return widgetsHelper . firstGetAvailableWidgetsCall . then ( function ( ) {
2531 if ( callback ) {
2632 callback ( widgetsHelper . availableWidgets ) ;
2733 }
2834 } ) ;
29-
30- return widgetsHelper . firstGetAvailableWidgetsCall ;
3135 }
3236
3337 function mergeCategoriesAndSubCategories ( availableWidgets )
@@ -97,15 +101,25 @@ widgetsHelper.getAvailableWidgets = function (callback) {
97101 function ( data ) {
98102 widgetsHelper . availableWidgets = mergeCategoriesAndSubCategories ( data ) ;
99103
104+ resetFirstGetAvailableWidgetsCall ( promise ) ;
100105 resolve ( ) ;
101106 }
102107 ) ;
103108 ajaxRequest . setErrorCallback ( function ( deferred , status ) {
104- if ( status == 'abort' || ! deferred || deferred . status < 400 || deferred . status >= 600 ) {
109+ resetFirstGetAvailableWidgetsCall ( promise ) ;
110+
111+ if ( status == 'abort' ) {
112+ reject ( new Error ( 'Loading widget metadata was aborted' ) ) ;
105113 return ;
106114 }
115+
116+ if ( ! deferred || deferred . status < 400 || deferred . status >= 600 ) {
117+ reject ( new Error ( 'Loading widget metadata failed' ) ) ;
118+ return ;
119+ }
120+
107121 $ ( '#loadingError' ) . show ( ) ;
108- reject ( ) ;
122+ reject ( new Error ( 'Loading widget metadata failed' ) ) ;
109123 } ) ;
110124 ajaxRequest . send ( ) ;
111125 return ;
@@ -118,13 +132,11 @@ widgetsHelper.getAvailableWidgets = function (callback) {
118132 widgetsHelper . firstGetAvailableWidgetsCall = promise ;
119133 }
120134
121- promise . then ( function ( ) {
135+ return promise . then ( function ( ) {
122136 if ( callback ) {
123137 callback ( widgetsHelper . availableWidgets ) ;
124138 }
125139 } ) ;
126-
127- return promise ;
128140} ;
129141
130142/**
0 commit comments