Merge branch 'master' into refactor-configure

This commit is contained in:
Chi Vinh Le
2017-11-23 13:27:18 +01:00
3 changed files with 65 additions and 28 deletions
+39 -14
View File
@@ -8,10 +8,13 @@ const program = require('./commander');
const inquirer = require('inquirer');
const UsersService = require('../services/users');
const UserModel = require('../models/user');
const CommentModel = require('../models/comment');
const ActionModel = require('../models/action');
const USER_ROLES = require('../models/enum/user_roles');
const mongoose = require('../services/mongoose');
const util = require('./util');
const Table = require('cli-table');
const databaseVerifications = require('./verifications/database');
const validateRequired = (msg = 'Field is required', len = 1) => (input) => {
if (input && input.length >= len) {
@@ -122,26 +125,48 @@ async function createUser(options) {
} catch (err) {
console.error(err);
util.shutdown();
util.shutdown(1);
}
}
/**
* Deletes a user.
*/
function deleteUser(userID) {
UserModel
.findOneAndRemove({
id: userID
})
.then(() => {
console.log('Deleted user');
util.shutdown();
})
.catch((err) => {
console.error(err);
util.shutdown();
});
async function deleteUser(userID) {
try {
// Find the user we're removing.
const user = await UserModel.findOne({id: userID});
if (!user) {
throw new Error(`user with id ${userID} not found`);
}
// Remove all the user's actions.
await ActionModel
.where({user_id: user.id})
.setOptions({multi: true})
.remove();
// Remove all the user's comments.
await CommentModel
.where({author_id: user.id})
.setOptions({multi: true})
.remove();
// Update the counts that might have changed.
for (const verification of databaseVerifications) {
await verification({fix: true, limit: Infinity, batch: 1000});
}
// Remove the user.
await user.remove();
util.shutdown();
} catch (err) {
console.error(err);
util.shutdown(1);
}
}
/**
@@ -2,9 +2,22 @@
margin-top: 6px;
}
.viewAllButton {
.viewAllButtonContainer {
position: absolute;
right: 0px;
width: 100%;
display: flex;
justify-content: center;
margin-top: -11px;
z-index: 10;
}
.viewAllButton {
composes: buttonReset from "coral-framework/styles/reset.css";
background-color: #4D8FCC;
color: white;
padding: 4px 8px;
border-radius: 2px;
}
.tabPanel {
@@ -26,4 +39,4 @@
margin-top: 28px;
padding-bottom: 50px;
min-height: 600px;
}
}
@@ -13,7 +13,7 @@ import t, {timeago} from 'coral-framework/services/i18n';
import CommentBox from 'talk-plugin-commentbox/CommentBox';
import QuestionBox from '../../../components/QuestionBox';
import {isCommentActive} from 'coral-framework/utils';
import {Button, Tab, TabCount, TabPane} from 'coral-ui';
import {Tab, TabCount, TabPane} from 'coral-ui';
import cn from 'classnames';
import {getTopLevelParent, attachCommentToParent} from '../../../graphql/utils';
@@ -58,6 +58,7 @@ class Stream extends React.Component {
loadNewReplies,
auth: {user},
emit,
viewAllComments,
} = this.props;
// even though the permalinked comment is the highlighted one, we're displaying its parent + replies
@@ -76,6 +77,14 @@ class Stream extends React.Component {
return (
<div className={cn('talk-stream-highlighted-container', styles.highlightedContainer)}>
<div className={cn('talk-stream-show-all-comments-button-container', styles.viewAllButtonContainer)}>
<button
className={cn('talk-stream-show-all-comments-button', styles.viewAllButton)}
onClick={viewAllComments}
>
{t('framework.show_all_comments')}
</button>
</div>
<Comment
data={data}
root={root}
@@ -208,7 +217,6 @@ class Stream extends React.Component {
postComment,
notify,
updateItem,
viewAllComments,
auth: {loggedIn, user},
editName,
} = this.props;
@@ -233,15 +241,6 @@ class Stream extends React.Component {
return (
<div id="stream" className={styles.root}>
{highlightedComment &&
<Button
cStyle="darkGrey"
className={cn('talk-stream-show-all-comments-button', styles.viewAllButton)}
onClick={viewAllComments}
>
{t('framework.show_all_comments')}
</Button>}
{open
? <div id="commentBox">
<InfoBox