The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Rocket.Chat/server/startup/migrations/v116.js

91 lines
2.3 KiB

import { Migrations } from '../../../app/migrations';
import { Subscriptions, Users } from '../../../app/models';
Migrations.add({
version: 116,
up() {
Subscriptions.tryDropIndex({
unread: 1,
});
// set pref origin to all existing preferences
Subscriptions.update({
desktopNotifications: { $exists: true },
}, {
$set: {
desktopPrefOrigin: 'subscription',
},
}, {
multi: true,
});
Subscriptions.update({
mobilePushNotifications: { $exists: true },
}, {
$set: {
mobilePrefOrigin: 'subscription',
},
}, {
multi: true,
});
Subscriptions.update({
emailNotifications: { $exists: true },
}, {
$set: {
emailPrefOrigin: 'subscription',
},
}, {
multi: true,
});
// set user preferences on subscriptions
Users.find({
$or: [
{ 'settings.preferences.desktopNotifications': { $exists: true } },
{ 'settings.preferences.mobileNotifications': { $exists: true } },
{ 'settings.preferences.emailNotificationMode': { $exists: true } },
],
}).forEach((user) => {
if (user.settings.preferences.desktopNotifications && user.settings.preferences.desktopNotifications !== 'default') {
Subscriptions.update({
'u._id': user._id,
desktopPrefOrigin: { $exists: false },
}, {
$set: {
desktopNotifications: user.settings.preferences.desktopNotifications,
desktopPrefOrigin: 'user',
},
}, {
multi: true,
});
}
if (user.settings.preferences.mobileNotifications && user.settings.preferences.mobileNotifications !== 'default') {
Subscriptions.update({
'u._id': user._id,
mobilePrefOrigin: { $exists: false },
}, {
$set: {
mobileNotifications: user.settings.preferences.mobileNotifications,
mobilePrefOrigin: 'user',
},
}, {
multi: true,
});
}
if (user.settings.preferences.emailNotificationMode && user.settings.preferences.emailNotificationMode !== 'default') {
Subscriptions.update({
'u._id': user._id,
emailPrefOrigin: { $exists: false },
}, {
$set: {
emailNotifications: user.settings.preferences.emailNotificationMode === 'disabled' || user.settings.preferences.emailNotificationMode === 'nothing' ? 'nothing' : 'mentions',
emailPrefOrigin: 'user',
},
}, {
multi: true,
});
}
});
},
});