docbrown/app/javascript/utilities/connect/pusher.js

33 lines
1.1 KiB
JavaScript

// import Pusher from 'pusher-js';
export function setupPusher(key, callbackObjects) {
return import('pusher-js').then((_) => {
const {
pusher = new Pusher(key, {
authEndpoint: '/pusher/auth',
auth: {
headers: {
'X-CSRF-Token': window.csrfToken,
},
},
cluster: 'us2',
encrypted: true,
}),
} = window;
window.pusher = pusher;
const channel = pusher.subscribe(callbackObjects.channelId.toString());
channel.bind('message-created', callbackObjects.messageCreated);
channel.bind('message-deleted', callbackObjects.messageDeleted);
channel.bind('message-edited', callbackObjects.messageEdited);
channel.bind('mentioned', callbackObjects.mentioned);
channel.bind('message-opened', callbackObjects.messageOpened);
channel.bind('channel-cleared', callbackObjects.channelCleared);
channel.bind('user-banned', callbackObjects.redactUserMessages);
channel.bind('pusher:subscription_error', callbackObjects.channelError);
return channel;
});
}