diff options
Diffstat (limited to 'models/accountSettings.js')
-rw-r--r-- | models/accountSettings.js | 90 |
1 files changed, 65 insertions, 25 deletions
diff --git a/models/accountSettings.js b/models/accountSettings.js index 6dfbac5d..c4240f84 100644 --- a/models/accountSettings.js +++ b/models/accountSettings.js @@ -1,18 +1,44 @@ AccountSettings = new Mongo.Collection('accountSettings'); -AccountSettings.attachSchema(new SimpleSchema({ - _id: { - type: String, - }, - booleanValue: { - type: Boolean, - optional: true, - }, - sort: { - type: Number, - decimal: true, - }, -})); +AccountSettings.attachSchema( + new SimpleSchema({ + _id: { + type: String, + }, + booleanValue: { + type: Boolean, + optional: true, + }, + sort: { + type: Number, + decimal: true, + }, + createdAt: { + type: Date, + optional: true, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert) { + return new Date(); + } else { + this.unset(); + } + }, + }, + modifiedAt: { + type: Date, + denyUpdate: false, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert || this.isUpsert || this.isUpdate) { + return new Date(); + } else { + this.unset(); + } + }, + }, + }) +); AccountSettings.allow({ update(userId) { @@ -21,19 +47,33 @@ AccountSettings.allow({ }, }); +AccountSettings.before.update((userId, doc, fieldNames, modifier, options) => { + modifier.$set = modifier.$set || {}; + modifier.$set.modifiedAt = Date.now(); +}); + if (Meteor.isServer) { Meteor.startup(() => { - AccountSettings.upsert({_id: 'accounts-allowEmailChange'}, { - $setOnInsert: { - booleanValue: false, - sort: 0, - }, - }); - AccountSettings.upsert({_id: 'accounts-allowUserNameChange'}, { - $setOnInsert: { - booleanValue: false, - sort: 1, - }, - }); + AccountSettings._collection._ensureIndex({ modifiedAt: -1 }); + AccountSettings.upsert( + { _id: 'accounts-allowEmailChange' }, + { + $setOnInsert: { + booleanValue: false, + sort: 0, + }, + } + ); + AccountSettings.upsert( + { _id: 'accounts-allowUserNameChange' }, + { + $setOnInsert: { + booleanValue: false, + sort: 1, + }, + } + ); }); } + +export default AccountSettings; |