mediawiki.page.watch.ajax: Disable watch link while waiting for API response
authorBartosz Dziewoński <matma.rex@gmail.com>
Sat, 17 May 2014 13:55:08 +0000 (15:55 +0200)
committerTimo Tijhof <krinklemail@gmail.com>
Mon, 19 May 2014 14:43:30 +0000 (16:43 +0200)
Previously clicking the watch link several times in a row would fire
several requests to the API, and the final result would depend on the
order in which they arrived. Let's not allow that.

This also removes the special-case for the 'loading' class, it is now
always added or removed.

Change-Id: Ib91ec8505d04945dc77e48ab70b5c94e3da47d9c

resources/src/mediawiki.page/mediawiki.page.watch.ajax.js
skins/vector/components/watchstar.less

index 3b0aeee..15e9aba 100644 (file)
                        $li.prop( 'id', 'ca-' + action );
                }
 
-               // Special case for vector icon
-               if ( $li.hasClass( 'icon' ) ) {
-                       if ( state === 'loading' ) {
-                               $link.addClass( 'loading' );
-                       } else {
-                               $link.removeClass( 'loading' );
-                       }
+               if ( state === 'loading' ) {
+                       $link.addClass( 'loading' );
+               } else {
+                       $link.removeClass( 'loading' );
                }
        }
 
 
                        $link = $( this );
 
+                       if ( $link.hasClass( 'loading' ) ) {
+                               return;
+                       }
+
                        updateWatchLink( $link, action, 'loading' );
 
                        api = new mw.Api();
index 1a6d1fc..a389ed6 100644 (file)
@@ -36,6 +36,8 @@
        .rotation(700ms);
        /* Suppress the hilarious rotating focus outline on Firefox */
        outline: none;
+       cursor: default;
+       pointer-events: none;
        background-position: 50% 60%;
        -webkit-transform-origin: 50% 57%;
        transform-origin: 50% 57%;