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