Emit inquiry subscribe
This commit is contained in:
parent
374da08c59
commit
9dd7ebe7e5
|
@ -1,4 +1,6 @@
|
||||||
|
import subscribeInquiry from './subscriptions/inquiry';
|
||||||
import RocketChat from '../../../lib/rocketchat';
|
import RocketChat from '../../../lib/rocketchat';
|
||||||
|
import EventEmitter from '../../../utils/events';
|
||||||
|
|
||||||
export const isOmnichannelStatusAvailable = user => user?.statusLivechat === 'available';
|
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
|
// and will be removed by the queue stream
|
||||||
// RC 2.4.0
|
// RC 2.4.0
|
||||||
export const takeInquiry = inquiryId => RocketChat.methodCallWrapper('livechat:takeInquiry', inquiryId);
|
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();
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { put, takeLatest, select } from 'redux-saga/effects';
|
||||||
|
|
||||||
import * as types from '../../../actions/actionsTypes';
|
import * as types from '../../../actions/actionsTypes';
|
||||||
import RocketChat from '../../../lib/rocketchat';
|
import RocketChat from '../../../lib/rocketchat';
|
||||||
|
import EventEmitter from '../../../utils/events';
|
||||||
import { inquirySuccess, inquiryFailure, inquirySetEnabled } from '../actions/inquiry';
|
import { inquirySuccess, inquiryFailure, inquirySetEnabled } from '../actions/inquiry';
|
||||||
import { isOmnichannelStatusAvailable, getInquiriesQueued } from '../lib';
|
import { isOmnichannelStatusAvailable, getInquiriesQueued } from '../lib';
|
||||||
|
|
||||||
|
@ -19,7 +20,7 @@ const handleRequest = function* handleRequest() {
|
||||||
const { inquiries } = result;
|
const { inquiries } = result;
|
||||||
|
|
||||||
// subscribe to inquiry queue changes
|
// subscribe to inquiry queue changes
|
||||||
RocketChat.subscribeInquiry();
|
EventEmitter.emit('INQUIRY_SUBSCRIBE');
|
||||||
|
|
||||||
// put request result on redux state
|
// put request result on redux state
|
||||||
yield put(inquirySuccess(inquiries));
|
yield put(inquirySuccess(inquiries));
|
||||||
|
|
|
@ -19,7 +19,6 @@ import {
|
||||||
} from '../actions/share';
|
} from '../actions/share';
|
||||||
|
|
||||||
import subscribeRooms from './methods/subscriptions/rooms';
|
import subscribeRooms from './methods/subscriptions/rooms';
|
||||||
import subscribeInquiry from '../ee/omnichannel/lib/subscriptions/inquiry';
|
|
||||||
import getUsersPresence, { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence';
|
import getUsersPresence, { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence';
|
||||||
|
|
||||||
import protectedFunction from './methods/helpers/protectedFunction';
|
import protectedFunction from './methods/helpers/protectedFunction';
|
||||||
|
@ -54,6 +53,7 @@ import { twoFactor } from '../utils/twoFactor';
|
||||||
import { selectServerFailure } from '../actions/server';
|
import { selectServerFailure } from '../actions/server';
|
||||||
import { useSsl } from '../utils/url';
|
import { useSsl } from '../utils/url';
|
||||||
import UserPreferences from './userPreferences';
|
import UserPreferences from './userPreferences';
|
||||||
|
import EventEmitter from '../utils/events';
|
||||||
|
|
||||||
const TOKEN_KEY = 'reactnativemeteor_usertoken';
|
const TOKEN_KEY = 'reactnativemeteor_usertoken';
|
||||||
const CURRENT_SERVER = 'currentServer';
|
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,
|
canOpenRoom,
|
||||||
createChannel({
|
createChannel({
|
||||||
name, users, type, readOnly, broadcast
|
name, users, type, readOnly, broadcast
|
||||||
|
@ -211,10 +202,7 @@ const RocketChat = {
|
||||||
this.roomsSub = null;
|
this.roomsSub = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.inquirySub) {
|
EventEmitter.emit('INQUIRY_UNSUBSCRIBE');
|
||||||
this.inquirySub.stop();
|
|
||||||
this.inquirySub = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.sdk) {
|
if (this.sdk) {
|
||||||
this.sdk.disconnect();
|
this.sdk.disconnect();
|
||||||
|
|
Loading…
Reference in New Issue