move newsletter callback to server only; split users.setSetting method in method+mutator; always call mutator directly when on server

This commit is contained in:
Sacha Greif 2016-06-15 19:55:59 +09:00
parent 519e44fe84
commit 2dd3f3c7fa
5 changed files with 18 additions and 24 deletions

View file

@ -1,4 +1,7 @@
import MailChimpList from './mailchimp.js';
function subscribeUserOnProfileCompletion (user) {
console.log(user)
if (!!Telescope.settings.get('autoSubscribe') && !!Users.getEmail(user)) {
MailChimpList.add(user, false, function (error, result) {
console.log(error);

View file

@ -132,7 +132,7 @@ MailChimpList.add = function(userOrEmail, confirm, done){
// mark user as subscribed
if (!!user) {
Users.setSetting(user, 'newsletter_subscribeToNewsletter', true);
Users.methods.setSetting(user._id, 'newsletter_subscribeToNewsletter', true);
}
console.log("// User subscribed");
@ -175,7 +175,7 @@ MailChimpList.remove = (user) => {
var subscribe = api.call('lists', 'unsubscribe', subscribeOptions);
// mark user as unsubscribed
Users.setSetting(user, 'newsletter_subscribeToNewsletter', false);
Users.methods.setSetting(user._id, 'newsletter_subscribeToNewsletter', false);
console.log("// User unsubscribed");

View file

@ -20,7 +20,6 @@ Package.onUse(function (api) {
api.addFiles([
// 'package-tap.i18n',
// 'lib/collection.js',
'lib/callbacks.js',
'lib/custom_fields.js',
'lib/emails.js'
], ['client', 'server']);
@ -29,7 +28,8 @@ Package.onUse(function (api) {
'lib/server/cron.js',
'lib/server/emails.js',
'lib/server/methods.js',
'lib/server/mailchimp_api.js'
'lib/server/mailchimp_api.js',
'lib/server/callbacks.js'
], ['server']);
api.mainModule('lib/server.js', 'server');

View file

@ -170,19 +170,6 @@ Users.getSetting = function (user, settingName, defaultValue) {
};
Users.helpers({getSetting: function (settingName, defaultValue) {return Users.getSetting(this, settingName, defaultValue);}});
/**
* @summary Set a user setting
* @param {Object} user
* @param {String} settingName
* @param {Object} defaultValue
*/
Users.setSetting = function (user, settingName, value) {
if (user) {
Meteor.call("users.setSetting", user._id, settingName, value);
}
};
Users.helpers({setSetting: function () {return Users.setSetting(this);}});
/**
* @summary Check if a user has upvoted a post
* @param {Object} user

View file

@ -35,6 +35,16 @@ Users.methods.edit = (userId, modifier, user) => {
}
Users.methods.setSetting = (userId, settingName, value) => {
// all settings should be in the user.telescope namespace, so add "telescope." if needed
var field = settingName.slice(0,10) === "telescope." ? settingName : "telescope." + settingName;
var modifier = {$set: {}};
modifier.$set[field] = value;
Users.update(userId, modifier);
}
Meteor.methods({
'users.compleProfile'(modifier, userId) {
@ -154,13 +164,7 @@ Meteor.methods({
throw new Meteor.Error(601, __('sorry_you_cannot_edit_this_user'));
}
// all settings should be in the user.telescope namespace, so add "telescope." if needed
var field = settingName.slice(0,10) === "telescope." ? settingName : "telescope." + settingName;
var modifier = {$set: {}};
modifier.$set[field] = value;
Users.update(userId, modifier);
Users.methods.setSetting(userId, settingName, value);
}