/**
* @ngdoc directives
* @name MensageriaChatUsuario
* @module s4c.directives.mensageria.chatusuario.MensageriaChatUsuario
*
* @description
* `MensageriaChatUsuarioService` Componente para acesso ao api do backend e/ou comunicação entre controllers
*
*
*/
(function () {
angular.module('s4c.components.collaboration')
.factory('MensageriaChatUsuario', MensageriaChatUsuario);
MensageriaChatUsuario.$inject = [
'MensageriaService',
'CommService',
'MensageriaManager'
];
function MensageriaChatUsuario(MensageriaService, CommService, MensageriaManager) {
var service = {
on: on,
trigger: trigger,
_eventos: {
'novaMensagem': [],
'mensagensSelecionadas': [],
'mensagemApagada': [],
'obterInformacoes': [],
'obterUsuarios': [],
'obterContatos': [],
'ocultarContatos': [],
'updateUserList': []
},
enviarMensagem: enviarMensagem,
};
CommService.on('mensagem', function (data) {
// Não notificar quando o usuário está com a janela aberta:
trigger('novaMensagem', data);
});
/**
* @method on
* @param {*} nomeEvento
* @param {*} callback
*/
function on(nomeEvento, callback) {
service._eventos[nomeEvento].push(callback);
}
/**
* @method trigger
* @param {*} nomeEvento
* @param {*} args
*/
function trigger(nomeEvento, args) {
_.each(service._eventos[nomeEvento], function (callback) {
callback(args);
});
}
/**
* @method enviarMensagem
* @param {*} usuario
* @param {*} mensagem
*/
function enviarMensagem(usuario, mensagem) {
MensageriaService.enviarMensagem(usuario.id, mensagem).then(function (resultado) {
service.trigger('novaMensagem', resultado);
});
}
return service;
}
}());