diff --git a/client/coral-admin/src/routes/Community/components/FlaggedUser.js b/client/coral-admin/src/routes/Community/components/FlaggedUser.js
index 826c17e37..00377e679 100644
--- a/client/coral-admin/src/routes/Community/components/FlaggedUser.js
+++ b/client/coral-admin/src/routes/Community/components/FlaggedUser.js
@@ -6,6 +6,7 @@ import t from 'coral-framework/services/i18n';
import { username } from 'talk-plugin-flags/helpers/flagReasons';
import ApproveButton from 'coral-admin/src/components/ApproveButton';
import RejectButton from 'coral-admin/src/components/RejectButton';
+import { isFlaggedUserDangling } from '../utils';
const shortReasons = {
[username.other]: t('community.other'),
@@ -28,8 +29,7 @@ class User extends React.Component {
render() {
const { user, viewUserDetail, selected, className } = this.props;
- const dangling =
- ['APPROVED', 'REJECTED'].indexOf(user.state.status.username.status) >= 0;
+ const dangling = isFlaggedUserDangling(user);
return (
- !['APPROVED', 'REJECTED'].includes(node.state.status.username.status)
+ node => !isFlaggedUserDangling(node)
).length;
}
@@ -50,7 +50,6 @@ class FlaggedAccountsContainer extends Component {
prev,
{ subscriptionData: { data: { usernameApproved: user } } }
) => {
- console.log(user);
return handleFlaggedUserChange(prev, user, () => {
this.props.notify('info', `user ${user.username} approved`);
});
@@ -62,7 +61,6 @@ class FlaggedAccountsContainer extends Component {
prev,
{ subscriptionData: { data: { usernameRejected: user } } }
) => {
- console.log(user);
return handleFlaggedUserChange(prev, user, () => {
this.props.notify('info', `user ${user.username} rejected`);
});
@@ -98,6 +96,15 @@ class FlaggedAccountsContainer extends Component {
componentWillUnmount() {
this.unsubscribe();
+ this.cleanUpDangling();
+ }
+
+ cleanUpDangling() {
+ if (!this.props.data.loading) {
+ this.props.data.updateQuery(query => {
+ return cleanUpDangling(query);
+ });
+ }
}
approveUser = ({ userId: id }) => {
diff --git a/client/coral-admin/src/routes/Community/graphql.js b/client/coral-admin/src/routes/Community/graphql.js
index a1dfcee03..241a1d379 100644
--- a/client/coral-admin/src/routes/Community/graphql.js
+++ b/client/coral-admin/src/routes/Community/graphql.js
@@ -1,4 +1,5 @@
import update from 'immutability-helper';
+import { isFlaggedUserDangling } from './utils';
function shouldAddFlaggedUser(root, user) {
const isEmpty = !root.flaggedUsers.nodes.length;
@@ -48,6 +49,16 @@ function decrementFlaggedUserCount(root) {
});
}
+export function cleanUpDangling(root) {
+ return update(root, {
+ flaggedUsers: {
+ nodes: {
+ $apply: nodes => nodes.filter(node => !isFlaggedUserDangling(node)),
+ },
+ },
+ });
+}
+
/**
* Assimilate flagged user changes into current store.
* @param {Object} root current state of the store
diff --git a/client/coral-admin/src/routes/Community/utils.js b/client/coral-admin/src/routes/Community/utils.js
new file mode 100644
index 000000000..42d9f5875
--- /dev/null
+++ b/client/coral-admin/src/routes/Community/utils.js
@@ -0,0 +1,3 @@
+export function isFlaggedUserDangling(user) {
+ return ['APPROVED', 'REJECTED'].includes(user.state.status.username.status);
+}