From 5f3da9a09af6ab4037b3cba00894b32c710b986e Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Thu, 18 Jan 2018 16:08:46 +0100 Subject: [PATCH] Ignore own updates --- .../routes/Community/containers/FlaggedAccounts.js | 10 +++++----- .../src/routes/Community/containers/FlaggedUser.js | 7 +++++++ client/coral-admin/src/routes/Community/graphql.js | 11 ++++++++++- models/user.js | 2 ++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/routes/Community/containers/FlaggedAccounts.js b/client/coral-admin/src/routes/Community/containers/FlaggedAccounts.js index 40ca16b6e..7f5bcae14 100644 --- a/client/coral-admin/src/routes/Community/containers/FlaggedAccounts.js +++ b/client/coral-admin/src/routes/Community/containers/FlaggedAccounts.js @@ -11,7 +11,7 @@ import { viewUserDetail } from '../../../actions/userDetail'; import { getDefinitionName } from 'coral-framework/utils'; import { appendNewNodes } from 'plugin-api/beta/client/utils'; import update from 'immutability-helper'; -import { handleFlaggedUserChange, cleanUpDangling } from '../graphql'; +import { handleFlaggedUsernameChange, cleanUpDangling } from '../graphql'; import { notify } from 'coral-framework/actions/notification'; import { isFlaggedUserDangling } from '../utils'; @@ -39,7 +39,7 @@ class FlaggedAccountsContainer extends Component { prev, { subscriptionData: { data: { usernameFlagged: user } } } ) => { - return handleFlaggedUserChange(prev, user, () => { + return handleFlaggedUsernameChange(prev, user, () => { this.props.notify('info', `user ${user.username} flagged`); }); }, @@ -50,7 +50,7 @@ class FlaggedAccountsContainer extends Component { prev, { subscriptionData: { data: { usernameApproved: user } } } ) => { - return handleFlaggedUserChange(prev, user, () => { + return handleFlaggedUsernameChange(prev, user, () => { this.props.notify('info', `user ${user.username} approved`); }); }, @@ -61,7 +61,7 @@ class FlaggedAccountsContainer extends Component { prev, { subscriptionData: { data: { usernameRejected: user } } } ) => { - return handleFlaggedUserChange(prev, user, () => { + return handleFlaggedUsernameChange(prev, user, () => { this.props.notify('info', `user ${user.username} rejected`); }); }, @@ -72,7 +72,7 @@ class FlaggedAccountsContainer extends Component { prev, { subscriptionData: { data: { usernameChanged: user } } } ) => { - return handleFlaggedUserChange(prev, user, () => { + return handleFlaggedUsernameChange(prev, user, () => { this.props.notify('info', `user ${user.username} changed`); }); }, diff --git a/client/coral-admin/src/routes/Community/containers/FlaggedUser.js b/client/coral-admin/src/routes/Community/containers/FlaggedUser.js index cf6075796..c51ecc0dc 100644 --- a/client/coral-admin/src/routes/Community/containers/FlaggedUser.js +++ b/client/coral-admin/src/routes/Community/containers/FlaggedUser.js @@ -22,6 +22,13 @@ export default withFragments({ status { username { status + history { + status + assigned_by { + id + } + created_at + } } banned { status diff --git a/client/coral-admin/src/routes/Community/graphql.js b/client/coral-admin/src/routes/Community/graphql.js index 241a1d379..d497a9d99 100644 --- a/client/coral-admin/src/routes/Community/graphql.js +++ b/client/coral-admin/src/routes/Community/graphql.js @@ -66,7 +66,16 @@ export function cleanUpDangling(root) { * @param {function} notify callback to show notification * @return {Object} next state of the store */ -export function handleFlaggedUserChange(root, user, notify) { +export function handleFlaggedUsernameChange(root, user, notify) { + // Check if change came from current user, if so ignore it. + const lastChange = + user.state.status.username.history[ + user.state.status.username.history.length - 1 + ]; + if (lastChange.assigned_by.id === root.me.id) { + return root; + } + if (!hasFlaggedUser(root, user)) { switch (user.state.status.username.status) { case 'SET': diff --git a/models/user.js b/models/user.js index 2aae9c4d3..5925003df 100644 --- a/models/user.js +++ b/models/user.js @@ -209,9 +209,11 @@ const UserSchema = new Schema( delete ret.__v; delete ret._id; delete ret.password; + /* delete ret.status.username.history; delete ret.status.banned.history; delete ret.status.suspension.history; + */ delete ret.tokens; }, },