Skip to content

Commit

Permalink
refactor(accounts): moved some code to async/await
Browse files Browse the repository at this point in the history
  • Loading branch information
polonel committed May 18, 2022
1 parent 444603a commit 740d562
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 35 deletions.
10 changes: 4 additions & 6 deletions src/client/containers/Modals/EditAccountModal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class EditAccountModal extends React.Component {
onImageUploadChanged (e) {
const self = e.target
const that = this
let formData = new FormData()
const formData = new FormData()
formData.append('username', this.props.user.username)
formData.append('_id', this.props.user._id)
formData.append('image', self.files[0])
Expand Down Expand Up @@ -139,25 +139,23 @@ class EditAccountModal extends React.Component {
return { text: role.name, value: role._id }
})
let departments, groups, teams
teams = this.props.teams
const teams = this.props.teams
? this.props.teams
.map(team => {
return { text: team.get('name'), value: team.get('_id') }
})
.toArray()
: []
departments = this.props.departments
const departments = this.props.departments
? this.props.departments
.map(department => {
return { text: department.get('name'), value: department.get('_id') }
})
.toArray()
: []
groups = this.props.groups
const groups = this.props.groups
? this.props.groups
.map(group => {
return { text: group.get('name'), value: group.get('_id') }
Expand Down
2 changes: 1 addition & 1 deletion src/controllers/api/v2/accounts.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ accountsApi.update = async function (req, res) {
let user = await User.getByUsername(username)
if (!user) throw new Error('Invalid User')

postData._id = user._id
postData._id = user._id.toString()
if (
!_.isUndefined(postData.password) &&
!_.isEmpty(postData.password) &&
Expand Down
107 changes: 79 additions & 28 deletions src/models/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,29 +50,58 @@ groupSchema.pre('save', function (next) {
next()
})

groupSchema.methods.addMember = function (memberId, callback) {
if (_.isUndefined(memberId)) return callback('Invalid MemberId - $Group.AddMember()')
groupSchema.methods.addMember = async function (memberId, callback) {
const self = this
return new Promise((resolve, reject) => {
;(async () => {
if (_.isUndefined(memberId)) {
if (typeof callback === 'function') return callback({ message: 'Invalid MemberId - $Group.AddMember()' })

return reject(new Error('Invalid MemberId - $Group.AddMember()'))
}

if (this.members === null) this.members = []
if (self.members === null) self.members = []
if (isMember(self.members, memberId)) {
if (typeof callback === 'function') return callback(null, false)

if (isMember(this.members, memberId)) return callback(null, false)
return resolve(false)
}

this.members.push(memberId)
this.members = _.uniq(this.members)
self.members.push(memberId)
self.members = _.uniq(self.members)

return callback(null, true)
if (typeof callback === 'function') return callback(null, true)

return resolve(true)
})()
})
}

groupSchema.methods.removeMember = function (memberId, callback) {
if (_.isUndefined(memberId)) return callback('Invalid MemberId - $Group.RemoveMember()')
groupSchema.methods.removeMember = async function (memberId, callback) {
const self = this
const hasCallback = typeof callback === 'function'
return new Promise((resolve, reject) => {
;(async () => {
if (_.isUndefined(memberId)) {
if (hasCallback) return callback({ message: 'Invalid MemberId - $Group.RemoveMember()' })

return reject(new Error('Invalid MemberId - $Group.RemoveMember()'))
}

if (!isMember(self.members, memberId)) {
if (hasCallback) return callback(null, false)

if (!isMember(this.members, memberId)) return callback(null, false)
return resolve(false)
}

this.members.splice(_.indexOf(this.members, _.find(this.members, { _id: memberId })), 1)
self.members.splice(_.indexOf(self.members, _.find(self.members, { _id: memberId })), 1)
self.members = _.uniq(self.members)

this.members = _.uniq(this.members)
if (hasCallback) return callback(null, true)

return callback(null, true)
return resolve(true)
})()
})
}

groupSchema.methods.isMember = function (memberId) {
Expand Down Expand Up @@ -139,14 +168,24 @@ groupSchema.statics.getWithObject = function (obj, callback) {
.exec(callback)
}

groupSchema.statics.getAllGroups = function (callback) {
var q = this.model(COLLECTION)
.find({})
.populate('members', '_id username fullname email role preferences image title deleted')
.populate('sendMailTo', '_id username fullname email role preferences image title deleted')
.sort('name')
groupSchema.statics.getAllGroups = async function (callback) {
const self = this
return new Promise((resolve, reject) => {
;(async () => {
const q = self
.model(COLLECTION)
.find({})
.populate('members', '_id username fullname email role preferences image title deleted')
.populate('sendMailTo', '_id username fullname email role preferences image title deleted')
.sort('name')

return q.exec(callback)
if (typeof callback === 'function') return q.exec(callback)

const groups = await q.exec()

return resolve(groups)
})()
})
}

groupSchema.statics.getAllGroupsNoPopulate = function (callback) {
Expand Down Expand Up @@ -194,16 +233,28 @@ groupSchema.statics.getGroups = async function (groupIds, callback) {
})
}

groupSchema.statics.getAllGroupsOfUser = function (userId, callback) {
if (_.isUndefined(userId)) return callback('Invalid UserId - GroupSchema.GetAllGroupsOfUser()')
groupSchema.statics.getAllGroupsOfUser = async function (userId, callback) {
return new Promise((resolve, reject) => {
;(async () => {
if (_.isUndefined(userId)) {
if (typeof callback === 'function')
return callback({ message: 'Invalid UserId - GroupSchema.GetAllGroupsOfUser()' })
return reject(new Error('Invalid UserId - GroupSchema.GetAllGroupsOfUser()'))
}

var q = this.model(COLLECTION)
.find({ members: userId })
.populate('members', '_id username fullname email role preferences image title deleted')
.populate('sendMailTo', '_id username fullname email role preferences image title deleted')
.sort('name')
const q = this.model(COLLECTION)
.find({ members: userId })
.populate('members', '_id username fullname email role preferences image title deleted')
.populate('sendMailTo', '_id username fullname email role preferences image title deleted')
.sort('name')

return q.exec(callback)
if (typeof callback === 'function') return q.exec(callback)

const groups = await q.exec()

return resolve(groups)
})()
})
}

groupSchema.statics.getAllGroupsOfUserNoPopulate = function (userId, callback) {
Expand Down

0 comments on commit 740d562

Please sign in to comment.