Merge "phpunit: Don't override --bootstrap if supplied"
[mediawiki.git] / resources / src / mediawiki.special.unwatchedPages / unwatchedPages.js
blob6d05b24cc7a80cbf92bec3649e7c0af52d004c82
1 /*!
2  * JavaScript for Special:UnwatchedPages
3  */
4 ( function () {
5         $( () => {
6                 $( 'a.mw-watch-link' ).on( 'click', function ( e ) {
7                         const api = new mw.Api(),
8                                 $link = $( this ),
9                                 $subjectLink = $link.closest( 'li' ).children( 'a' ).eq( 0 ),
10                                 titleParam = mw.util.getParamValue( 'title', $link.attr( 'href' ) ),
11                                 // nice format
12                                 title = mw.Title.newFromText( titleParam ).toText();
13                         $link.addClass( 'mw-watch-link-disabled' );
15                         // Preload the notification module for mw.notify
16                         mw.loader.load( 'mediawiki.notification' );
18                         let promise;
19                         // Use the class to determine whether to watch or unwatch
20                         // eslint-disable-next-line no-jquery/no-class-state
21                         if ( !$subjectLink.hasClass( 'mw-watched-item' ) ) {
22                                 $link.text( mw.msg( 'watching' ) );
23                                 promise = api.watch( title ).done( () => {
24                                         $subjectLink.addClass( 'mw-watched-item' );
25                                         $link.text( mw.msg( 'unwatch' ) );
26                                         mw.notify( mw.msg( 'addedwatchtext-short', title ) );
27                                 } ).fail( ( code, data ) => {
28                                         $link.text( mw.msg( 'watch' ) );
29                                         mw.notify( api.getErrorMessage( data ), { type: 'error' } );
30                                 } );
31                         } else {
32                                 $link.text( mw.msg( 'unwatching' ) );
33                                 promise = api.unwatch( title ).done( () => {
34                                         $subjectLink.removeClass( 'mw-watched-item' );
35                                         $link.text( mw.msg( 'watch' ) );
36                                         mw.notify( mw.msg( 'removedwatchtext-short', title ) );
37                                 } ).fail( ( code, data ) => {
38                                         $link.text( mw.msg( 'unwatch' ) );
39                                         mw.notify( api.getErrorMessage( data ), { type: 'error' } );
40                                 } );
41                         }
43                         promise.always( () => {
44                                 $link.removeClass( 'mw-watch-link-disabled' );
45                         } );
47                         e.preventDefault();
48                 } );
49         } );
50 }() );