mirror of
https://github.com/discourse/discourse.git
synced 2024-12-17 14:33:43 +08:00
4dfc1907ac
Include post excerpt in the notification
69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
// Subscribes to user events on the message bus
|
|
import { init as initDesktopNotifications, onNotification } from 'discourse/lib/desktop-notifications';
|
|
|
|
export default {
|
|
name: 'subscribe-user-notifications',
|
|
after: 'message-bus',
|
|
initialize(container) {
|
|
const user = container.lookup('current-user:main'),
|
|
site = container.lookup('site:main'),
|
|
siteSettings = container.lookup('site-settings:main'),
|
|
bus = container.lookup('message-bus:main');
|
|
|
|
bus.callbackInterval = siteSettings.anon_polling_interval;
|
|
bus.backgroundCallbackInterval = siteSettings.background_polling_interval;
|
|
bus.baseUrl = siteSettings.long_polling_base_url;
|
|
|
|
if (bus.baseUrl !== '/') {
|
|
// zepto compatible, 1 param only
|
|
bus.ajax = function(opts) {
|
|
opts.headers = opts.headers || {};
|
|
opts.headers['X-Shared-Session-Key'] = $('meta[name=shared_session_key]').attr('content');
|
|
return $.ajax(opts);
|
|
};
|
|
} else {
|
|
bus.baseUrl = Discourse.getURL('/');
|
|
}
|
|
|
|
if (user) {
|
|
bus.callbackInterval = siteSettings.polling_interval;
|
|
bus.enableLongPolling = true;
|
|
|
|
if (user.get('staff')) {
|
|
bus.subscribe('/flagged_counts', (data) => {
|
|
user.set('site_flagged_posts_count', data.total);
|
|
});
|
|
bus.subscribe('/queue_counts', (data) => {
|
|
user.set('post_queue_new_count', data.post_queue_new_count);
|
|
});
|
|
}
|
|
|
|
bus.subscribe("/notification-alert/" + user.get('id'), function(data){
|
|
onNotification(data, user);
|
|
});
|
|
|
|
bus.subscribe("/notification/" + user.get('id'), function(data) {
|
|
const oldUnread = user.get('unread_notifications');
|
|
const oldPM = user.get('unread_private_messages');
|
|
|
|
user.set('unread_notifications', data.unread_notifications);
|
|
user.set('unread_private_messages', data.unread_private_messages);
|
|
|
|
if (oldUnread !== data.unread_notifications || oldPM !== data.unread_private_messages) {
|
|
user.set('lastNotificationChange', new Date());
|
|
}
|
|
}, user.notification_channel_position);
|
|
|
|
bus.subscribe("/categories", function(data) {
|
|
_.each(data.categories,function(c) {
|
|
site.updateCategory(c);
|
|
});
|
|
});
|
|
|
|
if (!Ember.testing) {
|
|
initDesktopNotifications(bus);
|
|
}
|
|
}
|
|
}
|
|
};
|