@@ -21,9 +21,16 @@ hqDefine("cloudcare/js/formplayer/app", function () {
21
21
var FormplayerFrontend = new Marionette . Application ( ) ;
22
22
23
23
FormplayerFrontend . on ( "before:start" , function ( app , options ) {
24
+ const xsrfRequest = new $ . Deferred ( ) ;
25
+ this . xsrfRequest = xsrfRequest . promise ( ) ;
24
26
// Make a get call if the csrf token isn't available when the page loads.
25
27
if ( $ . cookie ( 'XSRF-TOKEN' ) === undefined ) {
26
- $ . get ( { url : options . formplayer_url + '/serverup' , global : false , xhrFields : { withCredentials : true } } ) ;
28
+ $ . get (
29
+ { url : options . formplayer_url + '/serverup' , global : false , xhrFields : { withCredentials : true } }
30
+ ) . always ( ( ) => { xsrfRequest . resolve ( ) ; } ) ;
31
+ } else {
32
+ // resolve immediately
33
+ xsrfRequest . resolve ( ) ;
27
34
}
28
35
var RegionContainer = Marionette . View . extend ( {
29
36
el : "#menu-container" ,
@@ -300,7 +307,6 @@ hqDefine("cloudcare/js/formplayer/app", function () {
300
307
hqRequire ( [ "cloudcare/js/formplayer/apps/api" ] , function ( AppsAPI ) {
301
308
AppsAPI . primeApps ( user . restoreAs , options . apps ) ;
302
309
} ) ;
303
-
304
310
$ . when ( FormplayerUtils . getSavedDisplayOptions ( ) ) . done ( function ( savedDisplayOptions ) {
305
311
savedDisplayOptions = _ . pick (
306
312
savedDisplayOptions ,
@@ -315,7 +321,10 @@ hqDefine("cloudcare/js/formplayer/app", function () {
315
321
} ) ;
316
322
317
323
FormplayerFrontend . getChannel ( ) . request ( 'gridPolyfillPath' , options . gridPolyfillPath ) ;
318
- $ . when ( FormplayerFrontend . getChannel ( ) . request ( "appselect:apps" ) ) . done ( function ( appCollection ) {
324
+ $ . when (
325
+ FormplayerFrontend . getChannel ( ) . request ( "appselect:apps" ) ,
326
+ FormplayerFrontend . xsrfRequest
327
+ ) . done ( function ( appCollection ) {
319
328
var appId ;
320
329
var apps = appCollection . toJSON ( ) ;
321
330
if ( Backbone . history ) {
0 commit comments