overleaf/services/web/app/src/Features/Subscription/UserFeaturesUpdater.js
Eric Mc Sween bb9bafdf1a Merge pull request #11995 from overleaf/em-unnecessary-returns
Decaf cleanup: unnecessary returns

GitOrigin-RevId: e3c006b0e15095c8cbed2911269f704a7fdd1d57
2023-02-28 09:03:46 +00:00

61 lines
1.7 KiB
JavaScript

const { User } = require('../../models/User')
const { promisifyAll } = require('../../util/promises')
const Settings = require('@overleaf/settings')
function _featuresChanged(newFeatures, featuresBefore) {
for (const feature in newFeatures) {
if (featuresBefore[feature] !== newFeatures[feature]) {
return true
}
}
return false
}
module.exports = {
updateFeatures(userId, features, callback) {
const update = {
featuresUpdatedAt: new Date(),
}
// record the system-wide features epoch, if defined
if (Settings.featuresEpoch) {
update.featuresEpoch = Settings.featuresEpoch
}
for (const key in features) {
const value = features[key]
update[`features.${key}`] = value
}
User.findByIdAndUpdate(userId, update, (err, docBeforeUpdate) => {
let featuresChanged = false
if (docBeforeUpdate) {
featuresChanged = _featuresChanged(features, docBeforeUpdate.features)
}
callback(err, features, featuresChanged)
})
},
overrideFeatures(userId, features, callback) {
const update = { features, featuresUpdatedAt: new Date() }
User.findByIdAndUpdate(userId, update, (err, docBeforeUpdate) => {
let featuresChanged = false
if (docBeforeUpdate) {
featuresChanged = _featuresChanged(features, docBeforeUpdate.features)
}
callback(err, featuresChanged)
})
},
createFeaturesOverride(userId, featuresOverride, callback) {
User.updateOne(
{ _id: userId },
{ $push: { featuresOverrides: featuresOverride } },
callback
)
},
}
module.exports.promises = promisifyAll(module.exports, {
multiResult: {
updateFeatures: ['features', 'featuresChanged'],
},
})