From c3a5da3ae637b33aa85e5c38573f4fc0bd72f27b Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 8 Jan 2018 16:00:20 +0100 Subject: [PATCH 1/6] Fix live status updates --- client/coral-embed-stream/src/actions/auth.js | 5 +++ .../coral-embed-stream/src/constants/auth.js | 1 + .../src/containers/Embed.js | 19 +++++++-- .../coral-embed-stream/src/reducers/auth.js | 42 +++++-------------- 4 files changed, 31 insertions(+), 36 deletions(-) diff --git a/client/coral-embed-stream/src/actions/auth.js b/client/coral-embed-stream/src/actions/auth.js index 64e29a31a..578ca9812 100644 --- a/client/coral-embed-stream/src/actions/auth.js +++ b/client/coral-embed-stream/src/actions/auth.js @@ -5,6 +5,11 @@ import {notify} from 'coral-framework/actions/notification'; import t from 'coral-framework/services/i18n'; import get from 'lodash/get'; +export const updateStatus = (status) => ({ + type: actions.UPDATE_STATUS, + status, +}); + export const showSignInDialog = () => ({ type: actions.SHOW_SIGNIN_DIALOG, }); diff --git a/client/coral-embed-stream/src/constants/auth.js b/client/coral-embed-stream/src/constants/auth.js index bb2ea6c15..3187873fe 100644 --- a/client/coral-embed-stream/src/constants/auth.js +++ b/client/coral-embed-stream/src/constants/auth.js @@ -54,3 +54,4 @@ export const SET_REQUIRE_EMAIL_VERIFICATION = 'SET_REQUIRE_EMAIL_VERIFICATION'; export const SET_REDIRECT_URI = 'SET_REDIRECT_URI'; export const RESET_SIGNIN_DIALOG = 'RESET_SIGNIN_DIALOG'; +export const UPDATE_STATUS = 'UPDATE_STATUS'; diff --git a/client/coral-embed-stream/src/containers/Embed.js b/client/coral-embed-stream/src/containers/Embed.js index e0b144d62..6b51bb99a 100644 --- a/client/coral-embed-stream/src/containers/Embed.js +++ b/client/coral-embed-stream/src/containers/Embed.js @@ -21,7 +21,14 @@ import t from 'coral-framework/services/i18n'; import PropTypes from 'prop-types'; import {setActiveTab} from '../actions/embed'; -const {logout, checkLogin, focusSignInDialog, blurSignInDialog, hideSignInDialog} = authActions; +const { + logout, + checkLogin, + focusSignInDialog, + blurSignInDialog, + hideSignInDialog, + updateStatus, +} = authActions; const {fetchAssetSuccess} = assetActions; class EmbedContainer extends React.Component { @@ -35,20 +42,23 @@ class EmbedContainer extends React.Component { if (props.auth.loggedIn) { const newSubscriptions = [{ document: USER_BANNED_SUBSCRIPTION, - updateQuery: () => { + updateQuery: (_, {subscriptionData: {data: {userBanned: {state}}}}) => { notify('info', t('your_account_has_been_banned')); + props.updateStatus(state.status); }, }, { document: USER_SUSPENDED_SUBSCRIPTION, - updateQuery: () => { + updateQuery: (_, {subscriptionData: {data: {userSuspended: {state}}}}) => { notify('info', t('your_account_has_been_suspended')); + props.updateStatus(state.status); }, }, { document: USERNAME_REJECTED_SUBSCRIPTION, - updateQuery: () => { + updateQuery: (_, {subscriptionData: {data: {usernameRejected: {state}}}}) => { notify('info', t('your_username_has_been_rejected')); + props.updateStatus(state.status); }, }]; @@ -260,6 +270,7 @@ const mapDispatchToProps = (dispatch) => focusSignInDialog, blurSignInDialog, hideSignInDialog, + updateStatus, }, dispatch ); diff --git a/client/coral-embed-stream/src/reducers/auth.js b/client/coral-embed-stream/src/reducers/auth.js index 156c53515..1f044a8ef 100644 --- a/client/coral-embed-stream/src/reducers/auth.js +++ b/client/coral-embed-stream/src/reducers/auth.js @@ -1,5 +1,6 @@ import * as actions from '../constants/auth'; import pym from 'coral-framework/services/pym'; +import merge from 'lodash/merge'; const initialState = { isLoading: false, @@ -227,38 +228,15 @@ export default function auth (state = initialState, action) { ...state, redirectUri: action.uri, }; - case 'APOLLO_SUBSCRIPTION_RESULT': - - // @TODO: These don't work anymore because apollo store has been decoupled - - if (action.operationName === 'UserBanned' && state.user.id === action.variables.user_id) { - return { - ...state, - user: { - ...state.user, - ...action.result.data.userBanned, - }, - }; - } - if (action.operationName === 'UserSuspended' && state.user.id === action.variables.user_id) { - return { - ...state, - user: { - ...state.user, - ...action.result.data.userSuspended, - }, - }; - } - if (action.operationName === 'UsernameRejected' && state.user.id === action.variables.user_id) { - return { - ...state, - user: { - ...state.user, - ...action.result.data.usernameRejected, - }, - }; - } - return state; + case actions.UPDATE_STATUS: { + return { + ...state, + user: { + ...state.user, + status: merge({}, state.user.status, action.status), + }, + }; + } default : return state; } From 99d66fef522e2d86a07b0eb329e76d241ac7540b Mon Sep 17 00:00:00 2001 From: Kim Gardner Date: Mon, 8 Jan 2018 11:27:25 -0500 Subject: [PATCH 2/6] Docs typo --- docs/_docs/03-02-product-guide-commenter-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/03-02-product-guide-commenter-features.md b/docs/_docs/03-02-product-guide-commenter-features.md index 7f56880db..144bdb634 100644 --- a/docs/_docs/03-02-product-guide-commenter-features.md +++ b/docs/_docs/03-02-product-guide-commenter-features.md @@ -197,4 +197,4 @@ will see a message at the top of their streams stating this. ### Ban When a commenter has been banned, they will see a message at the top of their -streams staging this. +streams stating this. From 8545be307d01ac97fe3dab4406cf79217bb04aea Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 8 Jan 2018 11:17:11 -0700 Subject: [PATCH 3/6] removed snakecase --- bin/verifications/database/action_counts.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/verifications/database/action_counts.js b/bin/verifications/database/action_counts.js index 133c1a2e3..2aa47a9a7 100644 --- a/bin/verifications/database/action_counts.js +++ b/bin/verifications/database/action_counts.js @@ -3,7 +3,6 @@ const CommentModel = require('../../../models/comment'); const ActionsService = require('../../../services/actions'); const {arrayJoinBy} = require('../../../graph/loaders/util'); const {get} = require('lodash'); -const sc = require('snake-case'); const debug = require('debug')('talk:cli:verify'); const MODELS = [ @@ -38,8 +37,8 @@ async function processBatch(Model, documents) { } // And we generate the group id. - const ACTION_TYPE = sc(actionSummary.action_type.toLowerCase()); - const GROUP_ID = sc(actionSummary.group_id.toLowerCase()); + const ACTION_TYPE = actionSummary.action_type.toLowerCase(); + const GROUP_ID = actionSummary.group_id.toLowerCase(); if (GROUP_ID.length <= 0) { continue; From 07052824d7a431975b34d9208dd535e0c2d6f8f9 Mon Sep 17 00:00:00 2001 From: okbel Date: Tue, 9 Jan 2018 10:10:37 -0300 Subject: [PATCH 4/6] updated tests --- test/e2e/page_objects/admin.js | 16 ++++++++++------ test/e2e/specs/04_userStatus.js | 19 +++++++++---------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/test/e2e/page_objects/admin.js b/test/e2e/page_objects/admin.js index 1903ae7e8..99e393cec 100644 --- a/test/e2e/page_objects/admin.js +++ b/test/e2e/page_objects/admin.js @@ -59,16 +59,20 @@ module.exports = { suspendUserDialogStep1: '.talk-admin-suspend-user-dialog-step-1', suspendUserConfirmButton: '.talk-admin-suspend-user-dialog-confirm', supendUserSendButton: '.talk-admin-suspend-user-dialog-send', - usernameDialog: '.talk-admin-reject-username-dialog', - usernameDialogStep0: '.talk-admin-reject-username-dialog-step-0', - usernameDialogStep1: '.talk-admin-reject-username-dialog-step-1', - usernameDialogButtons: '.talk-admin-reject-username-dialog-buttons', - usernameDialogSuspend: '.talk-admin-reject-username-dialog-button-k', - usernameDialogSuspensionMessage: '.talk-admin-reject-username-dialog-suspension-message', toast: '.toastify', toastClose: '.toastify__close', }, sections: { + usernameDialog: { + selector: '.talk-admin-reject-username-dialog', + elements: { + step0: '.talk-admin-reject-username-dialog-step-0', + step1: '.talk-admin-reject-username-dialog-step-1', + buttons: '.talk-admin-reject-username-dialog-buttons', + suspend: '.talk-admin-reject-username-dialog-button-k', + suspensionMessage: '.talk-admin-reject-username-dialog-suspension-message', + } + }, moderate: { selector: '.talk-admin-moderation-container', elements: { diff --git a/test/e2e/specs/04_userStatus.js b/test/e2e/specs/04_userStatus.js index ce9873f8c..f80d82651 100644 --- a/test/e2e/specs/04_userStatus.js +++ b/test/e2e/specs/04_userStatus.js @@ -63,18 +63,17 @@ module.exports = { .click('@flaggedUserRejectButton'); }, 'admin suspends the user': (client) => { - const adminPage = client.page.admin(); const community = client.page.admin().section.community; + const usernameDialog = client.page.admin().section.usernameDialog; - adminPage - .waitForElementVisible('@usernameDialog') - .waitForElementVisible('@usernameDialogButtons') - .waitForElementVisible('@usernameDialogStep0') - .waitForElementVisible('@usernameDialogSuspend') - .click('@usernameDialogSuspend') - .waitForElementVisible('@usernameDialogStep1') - .waitForElementVisible('@usernameDialogSuspend') - .click('@usernameDialogSuspend'); + usernameDialog + .waitForElementVisible('buttons') + .waitForElementVisible('@step0') + .waitForElementVisible('@suspend') + .click('@suspend') + .waitForElementVisible('@step1') + .waitForElementVisible('@suspend') + .click('@suspend'); community .waitForElementNotPresent('@flaggedUser'); From fb26d67e42d5aa615541ce9f6cdeec461566e4de Mon Sep 17 00:00:00 2001 From: okbel Date: Tue, 9 Jan 2018 10:12:26 -0300 Subject: [PATCH 5/6] updated tests --- test/e2e/page_objects/admin.js | 14 +++++++++----- test/e2e/specs/06_suspendUser.js | 17 ++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/test/e2e/page_objects/admin.js b/test/e2e/page_objects/admin.js index 99e393cec..3cb6bd4fd 100644 --- a/test/e2e/page_objects/admin.js +++ b/test/e2e/page_objects/admin.js @@ -54,15 +54,19 @@ module.exports = { moderateNav: '.talk-admin-nav-moderate', settingsButton: '.talk-admin-header-settings-button', signOutButton: '.talk-admin-header-sign-out', - suspendUserDialog: '.talk-admin-suspend-user-dialog', - suspendUserDialogStep0: '.talk-admin-suspend-user-dialog-step-0', - suspendUserDialogStep1: '.talk-admin-suspend-user-dialog-step-1', - suspendUserConfirmButton: '.talk-admin-suspend-user-dialog-confirm', - supendUserSendButton: '.talk-admin-suspend-user-dialog-send', toast: '.toastify', toastClose: '.toastify__close', }, sections: { + suspendUserDialog: { + selector: '.talk-admin-suspend-user-dialog', + elements: { + step0: '.talk-admin-suspend-user-dialog-step-0', + step1: '.talk-admin-suspend-user-dialog-step-1', + confirmButton: '.talk-admin-suspend-user-dialog-confirm', + sendButton: '.talk-admin-suspend-user-dialog-send', + } + }, usernameDialog: { selector: '.talk-admin-reject-username-dialog', elements: { diff --git a/test/e2e/specs/06_suspendUser.js b/test/e2e/specs/06_suspendUser.js index b9491a6bb..dcba97a51 100644 --- a/test/e2e/specs/06_suspendUser.js +++ b/test/e2e/specs/06_suspendUser.js @@ -83,7 +83,7 @@ module.exports = { }, 'admin suspends user': (client) => { const adminPage = client.page.admin(); - const {moderate, userDetailDrawer} = adminPage.section; + const {moderate, userDetailDrawer, suspendUserDialog} = adminPage.section; adminPage .navigate() @@ -101,14 +101,13 @@ module.exports = { .waitForElementVisible('@actionItemSuspendUser') .click('@actionItemSuspendUser'); - adminPage - .waitForElementVisible('@suspendUserDialog') - .waitForElementVisible('@suspendUserDialogStep0') - .waitForElementVisible('@suspendUserConfirmButton') - .click('@suspendUserConfirmButton') - .waitForElementVisible('@suspendUserDialogStep1') - .waitForElementVisible('@supendUserSendButton') - .click('@supendUserSendButton'); + suspendUserDialog + .waitForElementVisible('@step0') + .waitForElementVisible('@confirmButton') + .click('@confirmButton') + .waitForElementVisible('@step1') + .waitForElementVisible('@sendButton') + .click('@sendButton'); adminPage .waitForElementVisible('@toast') From 54b504eb8e07a85fd2f88387de46ace89b28fd2b Mon Sep 17 00:00:00 2001 From: okbel Date: Tue, 9 Jan 2018 10:24:58 -0300 Subject: [PATCH 6/6] typo --- test/e2e/specs/04_userStatus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/specs/04_userStatus.js b/test/e2e/specs/04_userStatus.js index f80d82651..c8c24eb78 100644 --- a/test/e2e/specs/04_userStatus.js +++ b/test/e2e/specs/04_userStatus.js @@ -67,7 +67,7 @@ module.exports = { const usernameDialog = client.page.admin().section.usernameDialog; usernameDialog - .waitForElementVisible('buttons') + .waitForElementVisible('@buttons') .waitForElementVisible('@step0') .waitForElementVisible('@suspend') .click('@suspend')