2016-01-05 23:26:02 +08:00
|
|
|
// a map of notification service, like email, web, IM, qq, etc.
|
|
|
|
|
|
|
|
|
|
// serviceName -> callback(user, title, description, params)
|
|
|
|
|
// expected arguments to callback:
|
|
|
|
|
// - user: Meteor user object
|
|
|
|
|
// - title: String, TAPi18n key
|
|
|
|
|
// - description, String, TAPi18n key
|
|
|
|
|
// - params: Object, values extracted from context, to used for above two TAPi18n keys
|
|
|
|
|
// see example call to Notifications.notify() in models/activities.js
|
|
|
|
|
const notifyServices = {};
|
|
|
|
|
|
|
|
|
|
Notifications = {
|
|
|
|
|
subscribe: (serviceName, callback) => {
|
|
|
|
|
notifyServices[serviceName] = callback;
|
|
|
|
|
},
|
|
|
|
|
|
2019-06-28 12:52:09 -05:00
|
|
|
unsubscribe: serviceName => {
|
2016-01-05 23:26:02 +08:00
|
|
|
if (typeof notifyServices[serviceName] === 'function')
|
|
|
|
|
delete notifyServices[serviceName];
|
|
|
|
|
},
|
|
|
|
|
|
Update ReactiveCache call sites to use async/await for Meteor 3.0
Part 3 of ReactiveCache async migration:
- Add await before all ReactiveCache.getX() calls
- Make functions containing ReactiveCache calls async
- Convert forEach/map/filter loops with async callbacks to for...of
- Update model helpers, Meteor methods, JsonRoutes handlers
- Update collection hooks (.before/.after insert/update/remove)
- Update .allow() callbacks to async
Files updated across models/ and server/ directories:
- Model files: cards, boards, lists, swimlanes, activities, users,
checklists, checklistItems, customFields, attachments, integrations,
cardComments, settings files, creators, exporters, and more
- Server files: publications, methods, notifications, routes, migrations
2026-02-01 00:54:38 +02:00
|
|
|
getUsers: async watchers => {
|
2018-10-16 11:33:16 +02:00
|
|
|
const users = [];
|
Update ReactiveCache call sites to use async/await for Meteor 3.0
Part 3 of ReactiveCache async migration:
- Add await before all ReactiveCache.getX() calls
- Make functions containing ReactiveCache calls async
- Convert forEach/map/filter loops with async callbacks to for...of
- Update model helpers, Meteor methods, JsonRoutes handlers
- Update collection hooks (.before/.after insert/update/remove)
- Update .allow() callbacks to async
Files updated across models/ and server/ directories:
- Model files: cards, boards, lists, swimlanes, activities, users,
checklists, checklistItems, customFields, attachments, integrations,
cardComments, settings files, creators, exporters, and more
- Server files: publications, methods, notifications, routes, migrations
2026-02-01 00:54:38 +02:00
|
|
|
for (const userId of watchers) {
|
|
|
|
|
const user = await ReactiveCache.getUser(userId);
|
2026-01-20 02:28:32 +02:00
|
|
|
if (user && user._id) users.push(user);
|
Update ReactiveCache call sites to use async/await for Meteor 3.0
Part 3 of ReactiveCache async migration:
- Add await before all ReactiveCache.getX() calls
- Make functions containing ReactiveCache calls async
- Convert forEach/map/filter loops with async callbacks to for...of
- Update model helpers, Meteor methods, JsonRoutes handlers
- Update collection hooks (.before/.after insert/update/remove)
- Update .allow() callbacks to async
Files updated across models/ and server/ directories:
- Model files: cards, boards, lists, swimlanes, activities, users,
checklists, checklistItems, customFields, attachments, integrations,
cardComments, settings files, creators, exporters, and more
- Server files: publications, methods, notifications, routes, migrations
2026-02-01 00:54:38 +02:00
|
|
|
}
|
2018-10-16 11:33:16 +02:00
|
|
|
return users;
|
2016-01-05 23:26:02 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
notify: (user, title, description, params) => {
|
2026-01-20 02:28:32 +02:00
|
|
|
// Skip if user is invalid
|
|
|
|
|
if (!user || !user._id) return;
|
|
|
|
|
|
2019-06-28 12:52:09 -05:00
|
|
|
for (const k in notifyServices) {
|
2016-01-05 23:26:02 +08:00
|
|
|
const notifyImpl = notifyServices[k];
|
2019-06-28 12:52:09 -05:00
|
|
|
if (notifyImpl && typeof notifyImpl === 'function')
|
|
|
|
|
notifyImpl(user, title, description, params);
|
2016-01-05 23:26:02 +08:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
};
|