TT#129211 Extract registration of RTC:Engine global events from store

Change-Id: Ia2237c5a730e389ea433ab88c468db219631ac7f
mr10.0
Sergii Leonenko 4 years ago
parent 1abc1c83a5
commit f633b6cb97

@ -30,6 +30,7 @@ module.exports = function (ctx) {
// https://quasar.dev/quasar-cli/boot-files
boot: [
'config',
'rtc-engine',
'filters',
'vuelidate',
'i18n',

@ -0,0 +1,70 @@
import Vue from 'vue'
import RtcEnginePlugin from 'src/plugins/rtc-engine'
import CallPlugin from 'src/plugins/call'
import ConferencePlugin from 'src/plugins/conference'
import { errorVisibilityTimeout } from 'src/store/call'
export default ({ Vue, store }) => {
Vue.use(RtcEnginePlugin)
Vue.use(CallPlugin)
Vue.use(ConferencePlugin)
rtcEngine(store)
call(store)
conference(store)
}
function rtcEngine (store) {
Vue.$rtcEngine.setNgcpApiBaseUrl(Vue.$config.baseHttpUrl)
Vue.$rtcEngine.onSipNetworkConnected(() => {
store.commit('call/enableCall')
}).onSipNetworkDisconnected(() => {
store.commit('call/disableCall')
}).onConferenceNetworkConnected(() => {
store.commit('conference/enableConferencing')
}).onConferenceNetworkDisconnected(() => {
store.commit('conference/disableConferencing')
})
}
function call (store) {
Vue.$call.onIncoming(() => {
store.commit('call/incomingCall', {
number: Vue.$call.getNumber()
})
}).onRemoteMedia((remoteMediaStream) => {
store.commit('call/establishCall', remoteMediaStream)
}).onEnded((reason) => {
Vue.$call.end()
store.commit('call/endCall', reason)
setTimeout(() => {
store.commit('call/inputNumber')
}, errorVisibilityTimeout)
})
}
function conference (store) {
Vue.$conference.onConferenceParticipantJoined((participant) => {
store.commit('conference/participantJoined', participant)
participant.onMediaStream(() => {
store.commit('conference/removeRemoteMedia', participant.id)
store.commit('conference/addRemoteMedia', participant.id)
}).onMediaEnded(() => {
store.commit('conference/removeRemoteMedia', participant.id)
})
}).onConferenceParticipantLeft((participant) => {
store.commit('conference/participantLeft', participant)
store.commit('conference/removeRemoteMedia', participant.id)
store.commit('conference/setSelectedParticipant', participant.id)
}).onConferenceEvent((event) => {
store.commit('conference/event', event)
}).onConferenceMessage((message) => {
store.commit('conference/message', message)
}).onConferenceFile((file) => {
store.commit('conference/file', file)
}).onLocalMediaStreamEnded(() => {
store.commit('conference/disposeLocalMedia')
}).onConferenceEnded(() => {
store.dispatch('conference/leave')
})
}

@ -179,6 +179,6 @@ export class RtcEnginePlugin {
export default {
install (Vue) {
Vue.$rtcEngine = RtcEnginePlugin.getInstance()
Vue.$rtcEngine.setNgcpApiJwt(localStorage.getItem('jwt'))
Vue.$rtcEngine.setNgcpApiJwt(localStorage.getItem('jwt')) // TODO: probably should be replaced with "getJwt" function
}
}

@ -5,7 +5,7 @@ import { date } from 'quasar'
import CallBlockingModule from './call-blocking'
import CallForwardingModule from './call-forwarding'
import CallModule, { errorVisibilityTimeout } from './call'
import CallModule from './call'
import CallRecordingsModule from './call-recordings'
import CallSettingsModule from './call-settings'
import ConversationsModule from './conversations'
@ -28,14 +28,8 @@ import VoiceboxModule from './voicebox'
import ConferenceModule from './conference'
import DashboardModule from './dashboard'
import RtcEnginePlugin from 'src/plugins/rtc-engine'
import CallPlugin from 'src/plugins/call'
import ConferencePlugin from 'src/plugins/conference'
import { INTERNAL_DATE_FORMAT_SLASH, INTERNAL_DATE_FORMAT_DASH, INTERNAL_DATE_FORMAT_DASH_HOUR } from 'src/constants'
Vue.use(RtcEnginePlugin)
Vue.use(CallPlugin)
Vue.use(ConferencePlugin)
Vue.use(Vuex)
/*
@ -72,7 +66,6 @@ export default function (/* { ssrContext } */) {
callForwarding: CallForwardingModule,
pbxAutoAttendants: PbxAutoAttendants,
dashboard: DashboardModule
},
state: {
route: null
@ -131,60 +124,6 @@ export default function (/* { ssrContext } */) {
}
}
},
plugins: [
function rtcEngine (store) {
Vue.$rtcEngine.setNgcpApiBaseUrl(Vue.$config.baseHttpUrl)
Vue.$rtcEngine.onSipNetworkConnected(() => {
store.commit('call/enableCall')
}).onSipNetworkDisconnected(() => {
store.commit('call/disableCall')
}).onConferenceNetworkConnected(() => {
store.commit('conference/enableConferencing')
}).onConferenceNetworkDisconnected(() => {
store.commit('conference/disableConferencing')
})
},
function call (store) {
Vue.$call.onIncoming(() => {
store.commit('call/incomingCall', {
number: Vue.$call.getNumber()
})
}).onRemoteMedia((remoteMediaStream) => {
store.commit('call/establishCall', remoteMediaStream)
}).onEnded((reason) => {
Vue.$call.end()
store.commit('call/endCall', reason)
setTimeout(() => {
store.commit('call/inputNumber')
}, errorVisibilityTimeout)
})
},
function conference (store) {
Vue.$conference.onConferenceParticipantJoined((participant) => {
store.commit('conference/participantJoined', participant)
participant.onMediaStream(() => {
store.commit('conference/removeRemoteMedia', participant.id)
store.commit('conference/addRemoteMedia', participant.id)
}).onMediaEnded(() => {
store.commit('conference/removeRemoteMedia', participant.id)
})
}).onConferenceParticipantLeft((participant) => {
store.commit('conference/participantLeft', participant)
store.commit('conference/removeRemoteMedia', participant.id)
store.commit('conference/setSelectedParticipant', participant.id)
}).onConferenceEvent((event) => {
store.commit('conference/event', event)
}).onConferenceMessage((message) => {
store.commit('conference/message', message)
}).onConferenceFile((file) => {
store.commit('conference/file', file)
}).onLocalMediaStreamEnded(() => {
store.commit('conference/disposeLocalMedia')
}).onConferenceEnded(() => {
store.dispatch('conference/leave')
})
}
],
// enable strict mode (adds overhead!)
// for dev mode only
strict: process.env.DEV

Loading…
Cancel
Save