mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-22 12:09:21 +00:00
Can respond to calls
This commit is contained in:
parent
118cfeee41
commit
9eab6c7e2e
@ -12,6 +12,12 @@ ComunicWeb.components.calls.controller = {
|
||||
*/
|
||||
_is_init: false,
|
||||
|
||||
/**
|
||||
* This variable contains whether the user is being
|
||||
* notified of a call or not
|
||||
*/
|
||||
_is_processing_call: false,
|
||||
|
||||
/**
|
||||
* Initialize calls component
|
||||
*/
|
||||
@ -107,11 +113,97 @@ ComunicWeb.components.calls.controller = {
|
||||
if(call.error)
|
||||
return notify("Could not get a call for this conversation!", "danger");
|
||||
|
||||
//Add the call to the list of opened calls
|
||||
ComunicWeb.components.calls.currentList.addCallToList(call.id);
|
||||
ComunicWeb.components.calls.controller.open(call);
|
||||
|
||||
//Initialize call
|
||||
ComunicWeb.components.calls.callWindow.initCall(call);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Call this method to initialize a call for a call we have information about
|
||||
*
|
||||
* @param {Object} call Information about the call
|
||||
*/
|
||||
open: function(call){
|
||||
|
||||
//Add the call to the list of opened calls
|
||||
ComunicWeb.components.calls.currentList.addCallToList(call.id);
|
||||
|
||||
//Initialize call
|
||||
ComunicWeb.components.calls.callWindow.initCall(call);
|
||||
},
|
||||
|
||||
/**
|
||||
* This method is called each time the notification service
|
||||
* detect that the number of pending calls has increased. It
|
||||
* must in fact be "thread-safe" to avoid to do twice things
|
||||
* that should be one only once
|
||||
*
|
||||
* @param {number} number The number of pending calls
|
||||
*/
|
||||
newCallsAvailable: function(number){
|
||||
|
||||
//Check if user is already processing a call
|
||||
if(this._is_processing_call)
|
||||
return;
|
||||
this._is_processing_call = true;
|
||||
|
||||
/**
|
||||
* Switch processing call to false
|
||||
*/
|
||||
var undoIsProcessing = function(){
|
||||
ComunicWeb.components.calls.controller._is_processing_call = false;
|
||||
}
|
||||
|
||||
//Get information about the next pending call
|
||||
ComunicWeb.components.calls.interface.getNextPendingCall(function(call){
|
||||
|
||||
//Check if there is no pending call
|
||||
if(call.notice)
|
||||
return undoIsProcessing();
|
||||
|
||||
ComunicWeb.components.conversations.utils.getNameForID(call.conversation_id, function(name){
|
||||
|
||||
//Check for errors
|
||||
if(!name){
|
||||
ComunicWeb.debug.logMessage("Could not get the name of the conversation for a call, cannot process it!");
|
||||
undoIsProcessing();
|
||||
return;
|
||||
}
|
||||
|
||||
//Show ring screen
|
||||
ComunicWeb.components.calls.ringScreen.show(name, 30, function(accept){
|
||||
|
||||
undoIsProcessing();
|
||||
|
||||
ComunicWeb.components.calls.controller.applyReponseForCall(call, accept);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Apply a response for the call
|
||||
*
|
||||
* @param {Object} call Information about the target call
|
||||
* @param {Boolean} accept TRUE to accept call / FALSE else
|
||||
*/
|
||||
applyReponseForCall: function(call, accept){
|
||||
|
||||
//Send response to server
|
||||
ComunicWeb.components.calls.interface.respondToCall(call.id, accept, function(r){
|
||||
|
||||
//Check for error
|
||||
if(r.error)
|
||||
return notify("Could not send response to call to server!", "danger");
|
||||
|
||||
if(!accept)
|
||||
return;
|
||||
|
||||
//We may start the call now
|
||||
ComunicWeb.components.calls.controller.open(call);
|
||||
|
||||
});
|
||||
|
||||
|
@ -31,5 +31,39 @@ ComunicWeb.components.calls.interface = {
|
||||
true,
|
||||
callback
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get and return the next pending call for the
|
||||
* user
|
||||
*
|
||||
* @param {function} callback
|
||||
*/
|
||||
getNextPendingCall: function(callback){
|
||||
ComunicWeb.common.api.makeAPIrequest(
|
||||
"calls/nextPending",
|
||||
{},
|
||||
true,
|
||||
callback
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Respond to call
|
||||
*
|
||||
* @param {number} call_id The ID of the target call
|
||||
* @param {boolean} accept TRUE to accept call / FALSE els
|
||||
* @param {function} callback Function to call once response has been set
|
||||
*/
|
||||
respondToCall: function(call_id, accept, callback){
|
||||
ComunicWeb.common.api.makeAPIrequest(
|
||||
"calls/respond",
|
||||
{
|
||||
call_id: call_id,
|
||||
accept: accept
|
||||
},
|
||||
true,
|
||||
callback
|
||||
);
|
||||
}
|
||||
}
|
@ -25,14 +25,19 @@ ComunicWeb.components.notifications.interface = {
|
||||
/**
|
||||
* Get the number of unread news such as notifications or conversations
|
||||
*
|
||||
* @param {boolean} get_calls Get the number of pending calls
|
||||
* @param {function} callback
|
||||
*/
|
||||
getAllUnread: function(callback){
|
||||
getAllUnread: function(get_calls, callback){
|
||||
|
||||
//Perform API request
|
||||
var apiURI = "notifications/count_all_news";
|
||||
var params = {};
|
||||
|
||||
//Check if we have to get the number of pending calls
|
||||
if(get_calls)
|
||||
params.include_calls = true;
|
||||
|
||||
//Perform the request
|
||||
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
|
||||
|
||||
|
@ -35,7 +35,8 @@ ComunicWeb.components.notifications.service = {
|
||||
|
||||
|
||||
//Get the number of notifications from the API
|
||||
ComunicWeb.components.notifications.interface.getAllUnread(function(response){
|
||||
ComunicWeb.components.notifications.interface.getAllUnread(
|
||||
ComunicWeb.components.calls.controller.isAvailable(), function(response){
|
||||
|
||||
//Continue in case of success
|
||||
if(response.error)
|
||||
@ -76,6 +77,11 @@ ComunicWeb.components.notifications.service = {
|
||||
ComunicWeb.components.notifications.song.play();
|
||||
|
||||
ComunicWeb.components.notifications.service.last_notifs_number = total_number_notifs;
|
||||
|
||||
|
||||
//Process the number of calls if possible
|
||||
if(response.calls && response.calls > 0)
|
||||
ComunicWeb.components.calls.controller.newCallsAvailable(response.calls);
|
||||
});
|
||||
|
||||
}, 2000);
|
||||
|
Loading…
Reference in New Issue
Block a user