WMDE-leszek has submitted this change and it was merged.

Change subject: If the slider fails to load then fail nicely!
......................................................................


If the slider fails to load then fail nicely!

If something goes wrong with the initial api rquest the
slider would either load in a broken state or say that
it is loading forever.

Now a message will be displayed to the user as well
as the error logged to the console.

Change-Id: Id763f31432feb7bd0e9ecbbeb2dd40f7ca6acaaf
---
M .jshintrc
M extension.json
M i18n/en.json
M i18n/qqq.json
M modules/ext.RevisionSlider.fetchRevisions.js
M modules/ext.RevisionSlider.init.js
6 files changed, 36 insertions(+), 12 deletions(-)

Approvals:
  WMDE-leszek: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/.jshintrc b/.jshintrc
index eb08746..1dea050 100755
--- a/.jshintrc
+++ b/.jshintrc
@@ -1,6 +1,7 @@
 {
        // Enforcing
        "bitwise": true,
+       "devel": true,
        "eqeqeq": true,
        "es3": true,
        "latedef": true,
diff --git a/extension.json b/extension.json
index 48e85a2..db56c80 100755
--- a/extension.json
+++ b/extension.json
@@ -27,11 +27,15 @@
                                "modules/ext.RevisionSlider.css"
                        ],
                        "dependencies": [
+                               "mediawiki.jqueryMsg",
                                "ext.RevisionSlider.Slider",
                                "ext.RevisionSlider.Revision",
                                "ext.RevisionSlider.RevisionList",
                                "ext.RevisionSlider.fetchRevisions"
                        ],
+                       "messages": [
+                               "revisionslider-loading-failed"
+                       ],
                        "position": "top"
                },
                "ext.RevisionSlider.rainbow": {
diff --git a/i18n/en.json b/i18n/en.json
index 06afc0e..8506a59 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -9,5 +9,6 @@
     "revisionslider-beta-feature-message": "Revision Slider",
     "revisionslider-beta-feature-description": "Show a revision slider when 
comparing two revisions of a page.",
     "revisionslider-loading-placeholder": "The revision slider is loading.",
+    "revisionslider-loading-failed": "The revision slider failed to load.",
     "revisionslider-loading-noscript": "As you have JavaScript disabled the 
revision slider will not be able to load."
 }
\ No newline at end of file
diff --git a/i18n/qqq.json b/i18n/qqq.json
index f884f42..7914ff3 100755
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -9,5 +9,6 @@
        "revisionslider-beta-feature-message": "Label for the revision slider 
Beta Feature.",
        "revisionslider-beta-feature-description": "Description for the 
revision slider Beta Feature, describing the feature that will be enabled.",
        "revisionslider-loading-placeholder": "Message shown while the 
RevisionSlider is still loading on a diff page. Once loaded the message is 
removed.",
+       "revisionslider-loading-failed": "Message shown if the RevisionSlider 
fails to initially load.",
        "revisionslider-loading-noscript": "Message shown while the 
RevisionSlider is trying to load but when JavaScript is disabled and thus it 
will not be successful."
 }
diff --git a/modules/ext.RevisionSlider.fetchRevisions.js 
b/modules/ext.RevisionSlider.fetchRevisions.js
index 933cf23..d07fc52 100644
--- a/modules/ext.RevisionSlider.fetchRevisions.js
+++ b/modules/ext.RevisionSlider.fetchRevisions.js
@@ -4,7 +4,7 @@
        /**
         * Fetches up to 500 revisions at a time
         *
-        * @param {{}} options - Options containing success callback, pageName 
and startId
+        * @param {{}} options - Options containing success /error callback, 
pageName and startId
         */
        mw.libs.revisionSlider.fetchRevisions = function ( options ) {
                $.ajax( {
@@ -20,7 +20,8 @@
                                'continue': '',
                                rvlimit: 500
                        },
-                       success: options.success
+                       success: options.success,
+                       error: options.error
                } );
        };
 }( mediaWiki, jQuery ) );
diff --git a/modules/ext.RevisionSlider.init.js 
b/modules/ext.RevisionSlider.init.js
index bbfdb45..0738f29 100755
--- a/modules/ext.RevisionSlider.init.js
+++ b/modules/ext.RevisionSlider.init.js
@@ -8,21 +8,37 @@
                                startId: mw.config.get( 'wgCurRevisionId' ),
 
                                success: function ( data ) {
-                                       var revs = data.query.pages[ 0 
].revisions,
+                                       var revs,
                                                revisionList,
                                                $container,
                                                slider;
-                                       if ( !revs ) {
-                                               return;
+
+                                       try {
+                                               revs = data.query.pages[ 0 
].revisions;
+                                               if ( !revs ) {
+                                                       return;
+                                               }
+                                               revs.reverse();
+
+                                               revisionList = new 
mw.libs.revisionSlider.RevisionList( revs );
+                                               $container = $( 
'#revision-slider-container' );
+                                               slider = new 
mw.libs.revisionSlider.Slider( revisionList );
+                                               slider.getView().render( 
$container );
+
+                                               $( 
'#revision-slider-placeholder' ).remove();
+                                       } catch ( err ) {
+                                               $( 
'#revision-slider-placeholder' )
+                                                       .html( mw.message( 
'revisionslider-loading-failed' ).text() );
+                                               console.log( err );
+                                               mw.track( 
'counter.MediaWiki.RevisionSlider.error.init' );
                                        }
-                                       revs.reverse();
 
-                                       revisionList = new 
mw.libs.revisionSlider.RevisionList( revs );
-                                       $container = $( 
'#revision-slider-container' );
-                                       slider = new 
mw.libs.revisionSlider.Slider( revisionList );
-                                       slider.getView().render( $container );
-
-                                       $( '#revision-slider-placeholder' 
).remove();
+                               },
+                               error: function ( err ) {
+                                       $( '#revision-slider-placeholder' )
+                                               .html( mw.message( 
'revisionslider-loading-failed' ).text() );
+                                       console.log( err );
+                                       mw.track( 
'counter.MediaWiki.RevisionSlider.error.init' );
                                }
                        } );
                } );

-- 
To view, visit https://gerrit.wikimedia.org/r/288181
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id763f31432feb7bd0e9ecbbeb2dd40f7ca6acaaf
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de>
Gerrit-Reviewer: Jakob <jakob.warkot...@wikimedia.de>
Gerrit-Reviewer: Kai Nissen (WMDE) <kai.nis...@wikimedia.de>
Gerrit-Reviewer: Siebrand <siebr...@kitano.nl>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: WMDE-Fisch <christoph.fisc...@wikimedia.de>
Gerrit-Reviewer: WMDE-leszek <leszek.mani...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to