From 223887616d4983a31248256938b2f1c3e65c7ba3 Mon Sep 17 00:00:00 2001 From: Dan Zajdband Date: Mon, 14 Nov 2016 16:20:56 -0500 Subject: [PATCH 01/10] feature(coral-admin): Add users role change --- client/coral-admin/src/actions/community.js | 10 +- client/coral-admin/src/constants/community.js | 1 + .../src/containers/Community/Community.js | 4 + .../src/containers/Community/Table.js | 94 +++++++++++++------ client/coral-admin/src/reducers/community.js | 9 +- client/coral-admin/src/translations.js | 12 ++- package.json | 1 + routes/api/user/index.js | 14 ++- 8 files changed, 108 insertions(+), 37 deletions(-) diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index 06c8ab0f6..d35cf0614 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -5,7 +5,8 @@ import { FETCH_COMMENTERS_SUCCESS, FETCH_COMMENTERS_FAILURE, SORT_UPDATE, - COMMENTERS_NEW_PAGE + COMMENTERS_NEW_PAGE, + SET_ROLE } from '../constants/community'; import {base, getInit, handleResp} from '../helpers/response'; @@ -40,3 +41,10 @@ export const newPage = () => ({ type: COMMENTERS_NEW_PAGE }); +export const setRole = (id, role) => dispatch => { + return fetch(`${base}/user/${id}/role`, getInit('POST', { role })) + .then(() => { + return dispatch({ type: SET_ROLE, id, role }); + }) + +} diff --git a/client/coral-admin/src/constants/community.js b/client/coral-admin/src/constants/community.js index e628a14d6..2ea77ea77 100644 --- a/client/coral-admin/src/constants/community.js +++ b/client/coral-admin/src/constants/community.js @@ -3,3 +3,4 @@ export const FETCH_COMMENTERS_SUCCESS = 'FETCH_COMMENTERS_SUCCESS'; export const FETCH_COMMENTERS_FAILURE = 'FETCH_COMMENTERS_FAILURE'; export const SORT_UPDATE = 'SORT_UPDATE'; export const COMMENTERS_NEW_PAGE = 'COMMENTERS_NEW_PAGE'; +export const SET_ROLE = 'SET_ROLE'; diff --git a/client/coral-admin/src/containers/Community/Community.js b/client/coral-admin/src/containers/Community/Community.js index 8e0b955a4..fb6f5df8c 100644 --- a/client/coral-admin/src/containers/Community/Community.js +++ b/client/coral-admin/src/containers/Community/Community.js @@ -19,6 +19,10 @@ const tableHeaders = [ { title: lang.t('community.account_creation_date'), field: 'created_at' + }, + { + title: lang.t('community.newsroom_role'), + field: 'role' } ]; diff --git a/client/coral-admin/src/containers/Community/Table.js b/client/coral-admin/src/containers/Community/Table.js index a15a88723..66dbc894b 100644 --- a/client/coral-admin/src/containers/Community/Table.js +++ b/client/coral-admin/src/containers/Community/Table.js @@ -1,34 +1,66 @@ -import React from 'react'; +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { SelectField, Option } from 'react-mdl-selectfield'; import styles from './Community.css'; +import I18n from 'coral-framework/i18n/i18n'; +import translations from '../../translations'; +import { setRole } from '../../actions/community'; -const Table = ({headers, data, onHeaderClickHandler}) => ( - - - - {headers.map((header, i) =>( - - ))} - - - - {data.map((row, i)=> ( - - - - - ))} - -
onHeaderClickHandler({field: header.field})}> - {header.title} -
- {row.displayName} - {row.profiles.map(({id}) => id)} - - {row.created_at} -
-); +const lang = new I18n(translations); -export default Table; +class Table extends Component { + + constructor (props) { + super(props); + this.onRoleChange = this.onRoleChange.bind(this); + } + + onRoleChange (id, role) { + this.props.dispatch(setRole(id, role)); + } + + render () { + const { headers, commenters, onHeaderClickHandler } = this.props; + + return ( + + + + {headers.map((header, i) =>( + + ))} + + + + {commenters.map((row, i)=> ( + + + + + + ))} + +
onHeaderClickHandler({field: header.field})}> + {header.title} +
+ {row.displayName} + {row.profiles.map(({id}) => id)} + + {row.created_at} + + this.onRoleChange(row.id, role)}> + + + + +
+ ); + } +} + +export default connect(state => ({ commenters: state.community.get('commenters') }))(Table); diff --git a/client/coral-admin/src/reducers/community.js b/client/coral-admin/src/reducers/community.js index 8d5dfd2c3..3421a079c 100644 --- a/client/coral-admin/src/reducers/community.js +++ b/client/coral-admin/src/reducers/community.js @@ -4,7 +4,8 @@ import { FETCH_COMMENTERS_REQUEST, FETCH_COMMENTERS_FAILURE, FETCH_COMMENTERS_SUCCESS, - SORT_UPDATE + SORT_UPDATE, + SET_ROLE } from '../constants/community'; const initialState = Map({ @@ -37,6 +38,12 @@ export default function community (state = initialState, action) { }) .set('commenters', commenters); // Sets to normal array } + case SET_ROLE: + const commenters = state.get('commenters'); + const idx = commenters.findIndex(el => el.id === action.id); + + commenters[idx].roles[0] = action.role + return state.set('commenters', commenters); case SORT_UPDATE : return state .set('field', action.sort.field) diff --git a/client/coral-admin/src/translations.js b/client/coral-admin/src/translations.js index 67a8142fd..fa655294a 100644 --- a/client/coral-admin/src/translations.js +++ b/client/coral-admin/src/translations.js @@ -2,7 +2,11 @@ export default { en: { 'community': { username_and_email: 'Username and Email', - account_creation_date: 'Account Creation Date' + account_creation_date: 'Account Creation Date', + newsroom_role: 'Newsroom Role', + admin: 'Administrator', + moderator: 'Moderator', + role: 'Select role...' }, 'modqueue': { 'pending': 'pending', @@ -30,7 +34,11 @@ export default { es: { 'community': { username_and_email: 'Usuario y E-mail', - account_creation_date: 'Fecha de creación de la cuenta' + account_creation_date: 'Fecha de creación de la cuenta', + newsroom_role: 'Rol en la redacción', + admin: 'Administrador', + moderator: 'Moderador', + role: 'Select role...' }, 'modqueue': { 'pending': 'pendiente', diff --git a/package.json b/package.json index cbdaad174..a36fcbd3a 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "mongoose": "^4.6.5", "morgan": "^1.7.0", "prompt": "^1.0.0", + "react-mdl-selectfield": "^0.2.0", "uuid": "^2.0.3" }, "devDependencies": { diff --git a/routes/api/user/index.js b/routes/api/user/index.js index 18872eab7..4665f4e52 100644 --- a/routes/api/user/index.js +++ b/routes/api/user/index.js @@ -40,11 +40,13 @@ router.get('/', (req, res, next) => { ]) .then(([data, count]) => { const users = data.map((user) => { - const {displayName, created_at} = user; + const {id, displayName, created_at} = user; return { + id, displayName, created_at, - profiles: user.toObject().profiles + profiles: user.toObject().profiles, + roles: user.toObject().roles }; }); @@ -60,4 +62,12 @@ router.get('/', (req, res, next) => { .catch(next); }); +router.post('/:user_id/role', (req, res, next) => { + User.addRoleToUser(req.params.user_id, req.body.role) + .then(role => { + res.send(role); + }) + .catch(next); +}); + module.exports = router; From 9c41adf224f59cc3db1a175127758c3a82609442 Mon Sep 17 00:00:00 2001 From: Dan Zajdband Date: Mon, 14 Nov 2016 16:44:21 -0500 Subject: [PATCH 02/10] Added enum check for the user model --- models/user.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models/user.js b/models/user.js index c0a846f1a..12f939e72 100644 --- a/models/user.js +++ b/models/user.js @@ -24,7 +24,10 @@ const UserSchema = new mongoose.Schema({ required: true } }], - roles: [String] + roles: { + type: [{ type: String, enum: ['admin', 'moderator'] }], + + } }, { timestamps: { createdAt: 'created_at', From e53ac55e6b242272e39350ba76c74dc6bad346d5 Mon Sep 17 00:00:00 2001 From: Dan Zajdband Date: Mon, 14 Nov 2016 17:03:31 -0500 Subject: [PATCH 03/10] Linting --- client/coral-admin/src/actions/community.js | 9 ++++----- client/coral-admin/src/containers/Community/Table.js | 12 ++++++------ client/coral-admin/src/reducers/community.js | 4 ++-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index d35cf0614..7a4112f8b 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -42,9 +42,8 @@ export const newPage = () => ({ }); export const setRole = (id, role) => dispatch => { - return fetch(`${base}/user/${id}/role`, getInit('POST', { role })) + return fetch(`${base}/user/${id}/role`, getInit('POST', {role})) .then(() => { - return dispatch({ type: SET_ROLE, id, role }); - }) - -} + return dispatch({type: SET_ROLE, id, role}); + }); +}; diff --git a/client/coral-admin/src/containers/Community/Table.js b/client/coral-admin/src/containers/Community/Table.js index 66dbc894b..97848bc9a 100644 --- a/client/coral-admin/src/containers/Community/Table.js +++ b/client/coral-admin/src/containers/Community/Table.js @@ -1,10 +1,10 @@ -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { SelectField, Option } from 'react-mdl-selectfield'; +import React, {Component} from 'react'; +import {connect} from 'react-redux'; +import {SelectField, Option} from 'react-mdl-selectfield'; import styles from './Community.css'; import I18n from 'coral-framework/i18n/i18n'; import translations from '../../translations'; -import { setRole } from '../../actions/community'; +import {setRole} from '../../actions/community'; const lang = new I18n(translations); @@ -20,7 +20,7 @@ class Table extends Component { } render () { - const { headers, commenters, onHeaderClickHandler } = this.props; + const {headers, commenters, onHeaderClickHandler} = this.props; return ( @@ -63,4 +63,4 @@ class Table extends Component { } } -export default connect(state => ({ commenters: state.community.get('commenters') }))(Table); +export default connect(state => ({commenters: state.community.get('commenters')}))(Table); diff --git a/client/coral-admin/src/reducers/community.js b/client/coral-admin/src/reducers/community.js index 3421a079c..d8fe88dbc 100644 --- a/client/coral-admin/src/reducers/community.js +++ b/client/coral-admin/src/reducers/community.js @@ -38,11 +38,11 @@ export default function community (state = initialState, action) { }) .set('commenters', commenters); // Sets to normal array } - case SET_ROLE: + case SET_ROLE : const commenters = state.get('commenters'); const idx = commenters.findIndex(el => el.id === action.id); - commenters[idx].roles[0] = action.role + commenters[idx].roles[0] = action.role; return state.set('commenters', commenters); case SORT_UPDATE : return state From 44292a81ad86844c22bab6a028ec90c52fdd33b5 Mon Sep 17 00:00:00 2001 From: David Jay Date: Mon, 14 Nov 2016 17:09:20 -0500 Subject: [PATCH 04/10] Moving init and responsehandler to shared functions, updating all routes to return valid JSON. --- client/coral-framework/store/actions/items.js | 82 ++++++------------- routes/api/comments/index.js | 4 +- .../coral-framework/store/itemActions.spec.js | 5 +- 3 files changed, 32 insertions(+), 59 deletions(-) diff --git a/client/coral-framework/store/actions/items.js b/client/coral-framework/store/actions/items.js index 648a1d95e..2e7dca70f 100644 --- a/client/coral-framework/store/actions/items.js +++ b/client/coral-framework/store/actions/items.js @@ -8,6 +8,23 @@ export const ADD_ITEM = 'ADD_ITEM'; export const UPDATE_ITEM = 'UPDATE_ITEM'; export const APPEND_ITEM_ARRAY = 'APPEND_ITEM_ARRAY'; +const getInit = (method, body) => { + const headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }; + + const init = {method, headers}; + if (method.toLowerCase() !== 'get') { + init.body = JSON.stringify(body); + } + + return init; +}; + +const responseHandler = response => { + return response.ok ? response.json() : Promise.reject(`${response.status} ${response.statusText}`); +}; /** * Action creators */ @@ -79,12 +96,8 @@ export const appendItemArray = (id, property, value, add_to_front, item_type) => */ export function getStream (assetId) { return (dispatch) => { - return fetch(`/api/v1/stream?asset_id=${assetId}`) - .then( - response => { - return response.ok ? response.json() : Promise.reject(`${response.status} ${response.statusText}`); - } - ) + return fetch(`/api/v1/stream?asset_id=${assetId}`, getInit('GET')) + .then(responseHandler) .then((json) => { /* Add items to the store */ @@ -148,13 +161,8 @@ export function getStream (assetId) { export function getItemsArray (ids) { return (dispatch) => { - return fetch(`/v1/item/${ids}`) - .then( - response => { - return response.ok ? response.json() - : Promise.reject(`${response.status } ${ response.statusText}`); - } - ) + return fetch(`/v1/item/${ids}`, getInit('GET')) + .then(responseHandler) .then((json) => { for (let i = 0; i < json.items.length; i++) { dispatch(addItem(json.items[i])); @@ -183,20 +191,8 @@ export function postItem (item, type, id) { if (id) { item.id = id; } - let options = { - method: 'POST', - body: JSON.stringify(item), - headers: { - 'Content-Type':'application/json' - } - }; - return fetch(`/api/v1/${type}`, options) - .then( - response => { - return response.ok ? response.json() - : Promise.reject(`${response.status} ${response.statusText}`); - } - ) + return fetch(`/api/v1/${type}`, getInit('POST', item)) + .then(responseHandler) .then((json) => { dispatch(addItem({...item, id:json.id}, type)); return json.id; @@ -227,21 +223,9 @@ export function postAction (item_id, action_type, user_id, item_type) { action_type, user_id }; - const options = { - method: 'POST', - headers: { - 'Content-Type':'application/json' - }, - body: JSON.stringify(action) - }; - return fetch(`/api/v1/${item_type}/${item_id}/actions`, options) - .then( - response => { - return response.ok ? response.json() - : Promise.reject(`${response.status} ${response.statusText}`); - } - ); + return fetch(`/api/v1/${item_type}/${item_id}/actions`, getInit('POST', action)) + .then(responseHandler); }; } @@ -266,20 +250,8 @@ export function deleteAction (item_id, action_type, user_id, item_type) { action_type, user_id }; - const options = { - method: 'DELETE', - headers: { - 'Content-Type':'application/json' - }, - body: JSON.stringify(action) - }; - return fetch(`/api/v1/${item_type}/${item_id}/actions`, options) - .then( - response => { - return response.ok ? response.text() - : Promise.reject(`${response.status} ${response.statusText}`); - } - ); + return fetch(`/api/v1/${item_type}/${item_id}/actions`, getInit('DELETE', action)) + .then(responseHandler); }; } diff --git a/routes/api/comments/index.js b/routes/api/comments/index.js index eabb1be7b..4954563cb 100644 --- a/routes/api/comments/index.js +++ b/routes/api/comments/index.js @@ -126,7 +126,7 @@ router.delete('/:comment_id', (req, res, next) => { Comment .removeById(req.params.comment_id) .then(() => { - res.status(201).send('OK. Removed'); + res.status(201).send({}); }) .catch(error => { next(error); @@ -137,7 +137,7 @@ router.delete('/:comment_id/actions', (req, res, next) => { Comment .removeAction(req.params.comment_id, req.body.user_id, req.body.action_type) .then(() => { - res.status(201).send('OK. Removed'); + res.status(201).sent({}); }) .catch(error => { next(error); diff --git a/tests/client/coral-framework/store/itemActions.spec.js b/tests/client/coral-framework/store/itemActions.spec.js index 33fe15cab..4dbba5e82 100644 --- a/tests/client/coral-framework/store/itemActions.spec.js +++ b/tests/client/coral-framework/store/itemActions.spec.js @@ -119,6 +119,7 @@ describe('itemActions', () => { { method: 'POST', headers: { + 'Accept': 'application/json', 'Content-Type':'application/json' }, body: JSON.stringify(item.data) @@ -166,11 +167,11 @@ describe('itemActions', () => { describe('deleteAction', () => { it ('should remove an action', () => { - fetchMock.delete('*', 'Action removed.'); + fetchMock.delete('*', {}); return actions.deleteAction('abc', 'flag', '123', 'comments')(store.dispatch) .then(response => { expect(fetchMock.calls().matched[0][0]).to.equal('/api/v1/comments/abc/actions'); - expect(response).to.equal('Action removed.'); + expect(response).to.deep.equal({}); }); }); From 366e072280cdf89a1bd7fc103f500e485f0b6f5e Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 14 Nov 2016 23:35:33 -0300 Subject: [PATCH 05/10] Linting Issues --- client/coral-admin/src/reducers/community.js | 3 ++- models/user.js | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/coral-admin/src/reducers/community.js b/client/coral-admin/src/reducers/community.js index d8fe88dbc..a42252805 100644 --- a/client/coral-admin/src/reducers/community.js +++ b/client/coral-admin/src/reducers/community.js @@ -38,12 +38,13 @@ export default function community (state = initialState, action) { }) .set('commenters', commenters); // Sets to normal array } - case SET_ROLE : + case SET_ROLE : { const commenters = state.get('commenters'); const idx = commenters.findIndex(el => el.id === action.id); commenters[idx].roles[0] = action.role; return state.set('commenters', commenters); + } case SORT_UPDATE : return state .set('field', action.sort.field) diff --git a/models/user.js b/models/user.js index 12f939e72..c6197a220 100644 --- a/models/user.js +++ b/models/user.js @@ -24,10 +24,9 @@ const UserSchema = new mongoose.Schema({ required: true } }], - roles: { - type: [{ type: String, enum: ['admin', 'moderator'] }], - - } + roles: { + type: [{type: String, enum: ['admin', 'moderator']}] + } }, { timestamps: { createdAt: 'created_at', From 27261cc515942d8cacafcbcfc73ef0a6f970a700 Mon Sep 17 00:00:00 2001 From: Dan Zajdband Date: Tue, 15 Nov 2016 12:37:05 -0500 Subject: [PATCH 06/10] Added fix for returning a new array --- client/coral-admin/src/reducers/community.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/reducers/community.js b/client/coral-admin/src/reducers/community.js index d8fe88dbc..215063f0f 100644 --- a/client/coral-admin/src/reducers/community.js +++ b/client/coral-admin/src/reducers/community.js @@ -43,7 +43,7 @@ export default function community (state = initialState, action) { const idx = commenters.findIndex(el => el.id === action.id); commenters[idx].roles[0] = action.role; - return state.set('commenters', commenters); + return state.set('commenters', commenters.map(id => id)); case SORT_UPDATE : return state .set('field', action.sort.field) From 2438161ad957a728d81d0b5c6ec8926203905845 Mon Sep 17 00:00:00 2001 From: Dan Zajdband Date: Tue, 15 Nov 2016 12:54:25 -0500 Subject: [PATCH 07/10] Removed extra return --- client/coral-admin/src/reducers/community.js | 1 - 1 file changed, 1 deletion(-) diff --git a/client/coral-admin/src/reducers/community.js b/client/coral-admin/src/reducers/community.js index 7ff8514fd..81a09a1cc 100644 --- a/client/coral-admin/src/reducers/community.js +++ b/client/coral-admin/src/reducers/community.js @@ -44,7 +44,6 @@ export default function community (state = initialState, action) { commenters[idx].roles[0] = action.role; return state.set('commenters', commenters.map(id => id)); - return state.set('commenters', commenters); } case SORT_UPDATE : return state From fbf27a9d75f849f74c20e4ff080715b255cb5b8a Mon Sep 17 00:00:00 2001 From: David Jay Date: Tue, 15 Nov 2016 14:24:38 -0500 Subject: [PATCH 08/10] Resolving 500 error when deleting an action. --- client/coral-framework/store/actions/items.js | 3 ++- models/comment.js | 8 ++++---- routes/api/comments/index.js | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/client/coral-framework/store/actions/items.js b/client/coral-framework/store/actions/items.js index 2e7dca70f..25aa5d54e 100644 --- a/client/coral-framework/store/actions/items.js +++ b/client/coral-framework/store/actions/items.js @@ -248,7 +248,8 @@ export function deleteAction (item_id, action_type, user_id, item_type) { return () => { const action = { action_type, - user_id + user_id, + item_id }; return fetch(`/api/v1/${item_type}/${item_id}/actions`, getInit('DELETE', action)) diff --git a/models/comment.js b/models/comment.js index 492c06e9c..d17e98860 100644 --- a/models/comment.js +++ b/models/comment.js @@ -194,12 +194,12 @@ CommentSchema.statics.removeById = function(id) { * @param {String} action_type the type of the action to be removed * @param {String} user_id the id of the user performing the action */ -CommentSchema.statics.removeAction = function(id, user_id, action_type) { +CommentSchema.statics.removeAction = function(item_id, user_id, action_type) { return Action.remove({ - action_type: action_type, + action_type, item_type: 'comment', - item_id: id, - user_id: user_id + item_id, + user_id }); }; diff --git a/routes/api/comments/index.js b/routes/api/comments/index.js index 4954563cb..05ad75b72 100644 --- a/routes/api/comments/index.js +++ b/routes/api/comments/index.js @@ -135,9 +135,9 @@ router.delete('/:comment_id', (req, res, next) => { router.delete('/:comment_id/actions', (req, res, next) => { Comment - .removeAction(req.params.comment_id, req.body.user_id, req.body.action_type) + .removeAction(req.params.item_id, req.body.user_id, req.body.action_type) .then(() => { - res.status(201).sent({}); + res.status(201).send({}); }) .catch(error => { next(error); From d1ea85468e1bb5128d31ecfc3366fd23512aa139 Mon Sep 17 00:00:00 2001 From: David Jay Date: Tue, 15 Nov 2016 14:46:08 -0500 Subject: [PATCH 09/10] Addressing issue when deleting actions. --- client/coral-framework/store/actions/items.js | 3 +-- routes/api/comments/index.js | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/coral-framework/store/actions/items.js b/client/coral-framework/store/actions/items.js index 25aa5d54e..2e7dca70f 100644 --- a/client/coral-framework/store/actions/items.js +++ b/client/coral-framework/store/actions/items.js @@ -248,8 +248,7 @@ export function deleteAction (item_id, action_type, user_id, item_type) { return () => { const action = { action_type, - user_id, - item_id + user_id }; return fetch(`/api/v1/${item_type}/${item_id}/actions`, getInit('DELETE', action)) diff --git a/routes/api/comments/index.js b/routes/api/comments/index.js index 05ad75b72..99957e987 100644 --- a/routes/api/comments/index.js +++ b/routes/api/comments/index.js @@ -134,8 +134,9 @@ router.delete('/:comment_id', (req, res, next) => { }); router.delete('/:comment_id/actions', (req, res, next) => { + console.log(req.params); Comment - .removeAction(req.params.item_id, req.body.user_id, req.body.action_type) + .removeAction(req.params.comment_id, req.body.user_id, req.body.action_type) .then(() => { res.status(201).send({}); }) From 721c0413321a44554f87304a4b57499a52cc6ebe Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 15 Nov 2016 13:33:02 -0700 Subject: [PATCH 10/10] Added fix for webpack building --- package.json | 24 +++++++----------------- webpack.config.dev.js | 2 +- webpack.config.js | 6 ------ 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index a36fcbd3a..354340ae1 100644 --- a/package.json +++ b/package.json @@ -5,25 +5,20 @@ "main": "app.js", "scripts": { "start": "./bin/www", - "build": "webpack --config webpack.config.js --bail", - "build-watch": "webpack --config webpack.config.dev.js --watch", + "build": "NODE_ENV=production webpack --config webpack.config.js --bail", + "build-watch": "NODE_ENV=development webpack --config webpack.config.dev.js --watch", "lint": "eslint bin/* .", "lint-fix": "eslint . --fix", "pretest": "npm install", "test": "mocha --compilers js:babel-core/register --recursive tests", "test-watch": "mocha --compilers js:babel-core/register --recursive -w tests", - "embed-start": "npm run build && ./bin/www" + "embed-start": "NODE_ENV=development npm run build && ./bin/www" }, "config": { "pre-git": { "commit-msg": [], - "pre-commit": [ - "npm run lint", - "npm test" - ], - "pre-push": [ - "npm test" - ], + "pre-commit": ["npm run lint", "npm test"], + "pre-push": ["npm test"], "post-commit": [], "post-merge": [] } @@ -32,12 +27,7 @@ "type": "git", "url": "git+https://github.com/coralproject/talk.git" }, - "keywords": [ - "talk", - "coral", - "coralproject", - "ask" - ], + "keywords": ["talk", "coral", "coralproject", "ask"], "author": "", "license": "Apache-2.0", "bugs": { @@ -54,7 +44,6 @@ "mongoose": "^4.6.5", "morgan": "^1.7.0", "prompt": "^1.0.0", - "react-mdl-selectfield": "^0.2.0", "uuid": "^2.0.3" }, "devDependencies": { @@ -104,6 +93,7 @@ "react": "15.3.2", "react-dom": "15.3.2", "react-mdl": "^1.7.2", + "react-mdl-selectfield": "^0.2.0", "react-onclickoutside": "^5.7.1", "react-redux": "^4.4.5", "react-router": "^3.0.0", diff --git a/webpack.config.dev.js b/webpack.config.dev.js index 8e2f253e5..571c31625 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -85,7 +85,7 @@ module.exports = { }), new webpack.DefinePlugin({ 'process.env': { - 'NODE_ENV': `"${'development'}"`, + 'NODE_ENV': `"${process.env.NODE_ENV}"`, 'VERSION': `"${require('./package.json').version}"` } }) diff --git a/webpack.config.js b/webpack.config.js index bf602733f..46cd2961b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,12 +5,6 @@ const devConfig = require('./webpack.config.dev'); devConfig.devtool = null; devConfig.plugins = devConfig.plugins.concat([ - new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': `"${'production'}"`, - 'VERSION': `"${require('./package.json').version}"` - } - }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false