small fixes on user mutations

This commit is contained in:
Sacha Greif 2016-11-09 11:55:28 +09:00
parent cab93c1128
commit 0f6aeb3670
5 changed files with 50 additions and 12 deletions

View file

@ -68,7 +68,7 @@ Telescope.registerComponent("CanDo", require('./permissions/CanDo
Telescope.registerComponent("UsersSingle", require('./users/UsersSingle.jsx'));
Telescope.registerComponent("UsersAccount", require('./users/UsersAccount.jsx'));
Telescope.registerComponent("UsersEdit", require('./users/UsersEdit.jsx'));
Telescope.registerComponent("UsersEditForm", require('./users/UsersEditForm.jsx'));
Telescope.registerComponent("UsersProfile", require('./users/UsersProfile.jsx'));
Telescope.registerComponent("UsersProfileCheck", require('./users/UsersProfileCheck.jsx'));
Telescope.registerComponent("UsersAvatar", require('./users/UsersAvatar.jsx'));

View file

@ -7,7 +7,7 @@ const UsersAccount = (props, context) => {
return (
<Telescope.components.CanDo action="users.edit.own" displayNoPermissionMessage={true}>
<Telescope.components.UsersSingleContainer
component={Telescope.components.UsersEdit}
component={Telescope.components.UsersEditForm}
{...terms}
/>
</Telescope.components.CanDo>

View file

@ -8,7 +8,7 @@ import Users from 'meteor/nova:users';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
const UsersEdit = (props, context) => {
const UsersEditForm = (props, context) => {
const user = props.document;
@ -23,7 +23,8 @@ const UsersEdit = (props, context) => {
<NovaForm
collection={Users}
document={user}
methodName="users.edit"
mutationName="usersEdit"
resultQuery={Users.graphQLQueries.single}
successCallback={(user)=>{
props.flash(context.intl.formatMessage({id: "users.edit_success"}, {name: Users.getDisplayName(user)}), 'success')
}}
@ -34,19 +35,19 @@ const UsersEdit = (props, context) => {
};
UsersEdit.propTypes = {
UsersEditForm.propTypes = {
document: React.PropTypes.object,
};
UsersEdit.contextTypes = {
UsersEditForm.contextTypes = {
currentUser: React.PropTypes.object,
intl: intlShape
};
UsersEdit.displayName = "UsersEdit";
UsersEditForm.displayName = "UsersEditForm";
const mapStateToProps = state => ({ messages: state.messages, });
const mapDispatchToProps = dispatch => bindActionCreators(Telescope.actions.messages, dispatch);
module.exports = connect(mapStateToProps, mapDispatchToProps)(UsersEdit);
export default connect(mapStateToProps, mapDispatchToProps)(UsersEdit);
module.exports = connect(mapStateToProps, mapDispatchToProps)(UsersEditForm);
export default connect(mapStateToProps, mapDispatchToProps)(UsersEditForm);

View file

@ -336,3 +336,40 @@ Telescope.utils.findIndex = (array, predicate) => {
});
return index;
}
// adapted from http://stackoverflow.com/a/22072374/649299
Telescope.utils.unflatten = function( array, idProperty, parentIdProperty, parent, tree ){
tree = typeof tree !== "undefined" ? tree : [];
let children = [];
if (typeof parent === "undefined") {
// if there is no parent, we're at the root level
// so we return all root nodes (i.e. nodes with no parent)
children = _.filter( array, node => !node[parentIdProperty]);
} else {
// if there *is* a parent, we return all its child nodes
// (i.e. nodes whose parentId is equal to the parent's id.)
children = _.filter( array, node => node[parentIdProperty] === parent[idProperty]);
}
// if we found children, we keep on iterating
if (!!children.length) {
if (typeof parent === "undefined") {
// if we're at the root, then the tree consist of all root nodes
tree = children;
} else {
// else, we add the children to the parent as the "childrenResults" property
parent.childrenResults = children;
}
// we call the function on each child
children.forEach(child => {
Telescope.utils.unflatten(array, idProperty, parentIdProperty, child);
});
}
return tree;
}

View file

@ -36,8 +36,8 @@ Users.mutations = {
};
// GraphQL mutations
Telescope.graphQL.addMutation('usersNew(document: usersInput) : Post');
Telescope.graphQL.addMutation('usersEdit(documentId: String, set: usersInput, unset: usersUnset) : Post');
Telescope.graphQL.addMutation('usersRemove(documentId: String) : Post');
Telescope.graphQL.addMutation('usersNew(document: usersInput) : User');
Telescope.graphQL.addMutation('usersEdit(documentId: String, set: usersInput, unset: usersUnset) : User');
Telescope.graphQL.addMutation('usersRemove(documentId: String) : User');
export default Users.mutations;