summaryrefslogtreecommitdiffstats
path: root/models/accountSettings.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/accountSettings.js')
-rw-r--r--models/accountSettings.js90
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;