Emit inquiry subscribe

This commit is contained in:
Diego Mello 2020-08-27 11:21:12 -03:00
parent 374da08c59
commit 9dd7ebe7e5
3 changed files with 30 additions and 15 deletions

View File

@ -1,4 +1,6 @@
import subscribeInquiry from './subscriptions/inquiry';
import RocketChat from '../../../lib/rocketchat';
import EventEmitter from '../../../utils/events';
export const isOmnichannelStatusAvailable = user => user?.statusLivechat === 'available';
@ -12,3 +14,27 @@ export const getInquiriesQueued = () => RocketChat.sdk.get('livechat/inquiries.q
// and will be removed by the queue stream
// RC 2.4.0
export const takeInquiry = inquiryId => RocketChat.methodCallWrapper('livechat:takeInquiry', inquiryId);
class Omnichannel {
constructor() {
this.inquirySub = null;
EventEmitter.addEventListener('INQUIRY_SUBSCRIBE', this.subscribeInquiry);
EventEmitter.addEventListener('INQUIRY_UNSUBSCRIBE', this.unsubscribeInquiry);
}
subscribeInquiry = async() => {
console.log('[RCRN] Subscribing to inquiry');
this.inquirySub = await subscribeInquiry();
}
unsubscribeInquiry = () => {
if (this.inquirySub) {
console.log('[RCRN] Unsubscribing from inquiry');
this.inquirySub.stop();
this.inquirySub = null;
}
}
}
// eslint-disable-next-line no-unused-vars
const omnichannel = new Omnichannel();

View File

@ -2,6 +2,7 @@ import { put, takeLatest, select } from 'redux-saga/effects';
import * as types from '../../../actions/actionsTypes';
import RocketChat from '../../../lib/rocketchat';
import EventEmitter from '../../../utils/events';
import { inquirySuccess, inquiryFailure, inquirySetEnabled } from '../actions/inquiry';
import { isOmnichannelStatusAvailable, getInquiriesQueued } from '../lib';
@ -19,7 +20,7 @@ const handleRequest = function* handleRequest() {
const { inquiries } = result;
// subscribe to inquiry queue changes
RocketChat.subscribeInquiry();
EventEmitter.emit('INQUIRY_SUBSCRIBE');
// put request result on redux state
yield put(inquirySuccess(inquiries));

View File

@ -19,7 +19,6 @@ import {
} from '../actions/share';
import subscribeRooms from './methods/subscriptions/rooms';
import subscribeInquiry from '../ee/omnichannel/lib/subscriptions/inquiry';
import getUsersPresence, { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence';
import protectedFunction from './methods/helpers/protectedFunction';
@ -54,6 +53,7 @@ import { twoFactor } from '../utils/twoFactor';
import { selectServerFailure } from '../actions/server';
import { useSsl } from '../utils/url';
import UserPreferences from './userPreferences';
import EventEmitter from '../utils/events';
const TOKEN_KEY = 'reactnativemeteor_usertoken';
const CURRENT_SERVER = 'currentServer';
@ -78,15 +78,6 @@ const RocketChat = {
}
}
},
async subscribeInquiry() {
if (!this.inquirySub) {
try {
this.inquirySub = await subscribeInquiry.call(this);
} catch (e) {
log(e);
}
}
},
canOpenRoom,
createChannel({
name, users, type, readOnly, broadcast
@ -211,10 +202,7 @@ const RocketChat = {
this.roomsSub = null;
}
if (this.inquirySub) {
this.inquirySub.stop();
this.inquirySub = null;
}
EventEmitter.emit('INQUIRY_UNSUBSCRIBE');
if (this.sdk) {
this.sdk.disconnect();