Phuedx has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/328674 )

Change subject: Make settings reducer control footer link
......................................................................

Make settings reducer control footer link

Since the footer link part of the settings system - clicking the link
opens the settings modal - it seems appropriate that it should be
controlled by state returned by the settings reducer.

Bug: T146889
Change-Id: I3a8549dbf1952cd0556f663496c55de91acaf2c0
---
M resources/ext.popups/changeListeners/footerLink.js
M resources/ext.popups/reducers/settings.js
M tests/qunit/ext.popups/changeListeners/footerLink.test.js
M tests/qunit/ext.popups/reducers/settings.test.js
4 files changed, 57 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Popups 
refs/changes/74/328674/1

diff --git a/resources/ext.popups/changeListeners/footerLink.js 
b/resources/ext.popups/changeListeners/footerLink.js
index e28e992..6218dad 100644
--- a/resources/ext.popups/changeListeners/footerLink.js
+++ b/resources/ext.popups/changeListeners/footerLink.js
@@ -63,10 +63,10 @@
                                } );
                        }
 
-                       if ( state.preview.enabled ) {
-                               $footerLink.hide();
-                       } else {
+                       if ( state.settings.shouldShowFooterLink ) {
                                $footerLink.show();
+                       } else {
+                               $footerLink.hide();
                        }
                };
        };
diff --git a/resources/ext.popups/reducers/settings.js 
b/resources/ext.popups/reducers/settings.js
index 8f2e467..4932029 100644
--- a/resources/ext.popups/reducers/settings.js
+++ b/resources/ext.popups/reducers/settings.js
@@ -11,7 +11,8 @@
                if ( state === undefined ) {
                        state = {
                                shouldShow: false,
-                               showHelp: false
+                               showHelp: false,
+                               shouldShowFooterLink: false
                        };
                }
 
@@ -37,8 +38,18 @@
                                                // If we enabled, we just hide 
directly, no help
                                                // If we disabled, keep it 
showing and let the ui show the help.
                                                shouldShow: !action.enabled,
-                                               showHelp: !action.enabled
+                                               showHelp: !action.enabled,
+
+                                               // Since the footer link is 
only ever shown to anonymous users (see
+                                               // the BOOT case below), it's 
always true here.
+                                               shouldShowFooterLink: 
!action.enabled
                                        } );
+
+                       case popups.actionTypes.BOOT:
+                               return nextState( state, {
+                                       userIsAnon: action.user.isAnon,
+                                       shouldShowFooterLink: 
action.user.isAnon && !action.isEnabled
+                               } );
                        default:
                                return state;
                }
diff --git a/tests/qunit/ext.popups/changeListeners/footerLink.test.js 
b/tests/qunit/ext.popups/changeListeners/footerLink.test.js
index e541a96..c24c8f9 100644
--- a/tests/qunit/ext.popups/changeListeners/footerLink.test.js
+++ b/tests/qunit/ext.popups/changeListeners/footerLink.test.js
@@ -17,8 +17,8 @@
                                mw.popups.changeListeners.footerLink( 
boundActions );
 
                        that.state = {
-                               preview: {
-                                       enabled: false
+                               settings: {
+                                       shouldShowFooterLink: true
                                }
                        };
 
@@ -64,7 +64,7 @@
                // ---
 
                prevState = $.extend( true, {}, this.state );
-               this.state.preview.enabled = true;
+               this.state.settings.shouldShowFooterLink = false;
 
                this.footerLinkChangeListener( prevState, this.state );
 
diff --git a/tests/qunit/ext.popups/reducers/settings.test.js 
b/tests/qunit/ext.popups/reducers/settings.test.js
index 36d14a1..e823d49 100644
--- a/tests/qunit/ext.popups/reducers/settings.test.js
+++ b/tests/qunit/ext.popups/reducers/settings.test.js
@@ -9,8 +9,41 @@
                        state,
                        {
                                shouldShow: false,
-                               showHelp: false
+                               showHelp: false,
+                               shouldShowFooterLink: false
                        }
+               );
+       } );
+
+       QUnit.test( 'BOOT', function ( assert ) {
+               var action = {
+                       type: 'BOOT',
+                       isEnabled: false,
+                       user: {
+                               isAnon: true
+                       }
+               };
+
+               assert.deepEqual(
+                       mw.popups.reducers.settings( {}, action ),
+                       {
+                               userIsAnon: true,
+                               shouldShowFooterLink: true
+                       }
+               );
+
+               // ---
+
+               // And when the user is logged out...
+               action.user.isAnon = false;
+
+               assert.deepEqual(
+                       mw.popups.reducers.settings( {}, action ),
+                       {
+                               userIsAnon: false,
+                               shouldShowFooterLink: false
+                       },
+                       'If the user is logged in, then it doesn\'t signal that 
the footer link should be shown.'
                );
        } );
 
@@ -64,7 +97,8 @@
                        mw.popups.reducers.settings( {}, action( false, true ) 
),
                        {
                                shouldShow: false,
-                               showHelp: false
+                               showHelp: false,
+                               shouldShowFooterLink: false
                        },
                        'It should hide the settings dialog and help when we 
enable.'
                );
@@ -73,7 +107,8 @@
                        mw.popups.reducers.settings( {}, action( true, false ) 
),
                        {
                                shouldShow: true,
-                               showHelp: true
+                               showHelp: true,
+                               shouldShowFooterLink: true
                        },
                        'It should keep the settings showing and show the help 
when we disable.'
                );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3a8549dbf1952cd0556f663496c55de91acaf2c0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Popups
Gerrit-Branch: mpga
Gerrit-Owner: Phuedx <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to