mediawiki.api: Simplify mw.Api constructor
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 10 Jul 2018 04:14:28 +0000 (21:14 -0700)
committerKrinkle <krinklemail@gmail.com>
Tue, 10 Jul 2018 17:02:20 +0000 (17:02 +0000)
* Use a different variable for the argument and the created
  'defaults' object for this instance.

* Don't modify the given object (it could previously modify
  the 'ajax.url' property).

* Make the 'useUS' logic more explicit and merge it with the
  'ajax.url'  handling, that it previously reacted to.

Change-Id: Ib1f50876359152935b8cb9b021ea0a95915808e2

resources/src/mediawiki.api/index.js

index 0038ed8..51f359c 100644 (file)
         *  each individual request by passing them to #get or #post (or directly #ajax) later on.
         */
        mw.Api = function ( options ) {
-               options = options || {};
+               var defaults = $.extend( {}, options ),
+                       setsUrl = options && options.ajax && options.ajax.url !== undefined;
+
+               defaults.parameters = $.extend( {}, defaultOptions.parameters, defaults.parameters );
+               defaults.ajax = $.extend( {}, defaultOptions.ajax, defaults.ajax );
 
                // Force a string if we got a mw.Uri object
-               if ( options.ajax && options.ajax.url !== undefined ) {
-                       options.ajax.url = String( options.ajax.url );
+               if ( setsUrl ) {
+                       defaults.ajax.url = String( defaults.ajax.url );
+               }
+               if ( defaults.useUS === undefined ) {
+                       defaults.useUS = !setsUrl;
                }
 
-               options = $.extend( { useUS: !options.ajax || !options.ajax.url }, options );
-
-               options.parameters = $.extend( {}, defaultOptions.parameters, options.parameters );
-               options.ajax = $.extend( {}, defaultOptions.ajax, options.ajax );
-
-               this.defaults = options;
+               this.defaults = defaults;
                this.requests = [];
        };