2
Below follows the code to display the last messages exchanged in a chat I’m creating.
Chat works correctly, however, when starting a new conversation the last messages that change does not appear, IE, does not display a history.
Follows the Controller:
Ti.include("/ui/controller/geolocation.js");
//console.log("chamou !");
var win = Titanium.UI.currentWindow;
win.latitude = 0;
win.longitude = 0;
win.addEventListener("close", function(){
clearInterval(controlTimer);
clearInterval(controlTimerLido);
});
var lastId = 0;
var lastIdLido = 0;
var controlTimer;
var controlTimerLido;
var primeiraMsg = "true";
webServiceMsg(lastId, function(data){
showResults(data);
controlTimer = setInterval(function(){
webServiceMsg(lastId);
}, 5000);
});
webServiceMsgOperLido(lastIdLido, function(data){
showResultsLido(data);
controlTimerLido = setInterval(function(){
webServiceMsgOperLido(lastIdLido);
}, 2000);
});
function VerificaMsgOperLido(msgsLido)
{
try{
if (typeof(msgsLido) == "undefined" ) { return ;}
if (msgsLido == "null" ) { return ;}
var imgClient;
for (var i = 0; i < msgsLido.length; i++) {
imgClient = container[msgsLido[i].Id].children[4];
if (typeof(imgClient.id) == "undefined" ) { continue ;}
imgClient.image = "/ui/images/v-client2.png";
if(msgsLido[i].Id > lastIdLido) { lastIdLido = msgsLido[i].Id; }
}
}
catch(ex){
//console.log(ex);
}
}
function CarregaDados(msgs)
{
try{
if (typeof(msgs) == "undefined" ) { return ;}
if (msgs.length > 10)
activityScreen.show();
for (var i = 0; i < msgs.length; i++) {
if(msgs[i].Id > lastId) {
addMsg(msgs[i]);
lastId = msgs[i].Id;
}
if(count > 0)
Titanium.Media.vibrate();
}
if(tableView.data.length > 0)
{
var linha = 0;
for (var i = 0; i < tableView.data.length; i++) {
linha = linha + tableView.data[i].rows.length;
}
if(count == 0)
tableView.scrollToIndex(linha - 1);
}
activityScreen.hide();
}
catch(ex){
//console.log(ex);
}
}
function webServiceMsg(idLastMsg, callback){
var info = require('ui/webService/WebServiceCall');
info.webService('sac/ConsultaMensagens',{
filtro:{
Idc: win.idc,
IdContato: win.idContato,
Id: idLastMsg,
IdGrupo: win.idGrupo,
}
},
function(data) {
if (callback) {
callback(data);
return;
}
showResults(data);
});
};
function showResults(data){
var dados = JSON.parse(data);
CarregaDados(dados.ConsultaMensagensResult);
};
function webServiceMsgOperLido(idLastMsg, callback){
var info = require('ui/webService/WebServiceCall');
info.webService('sac/ConsultaMensagensLidoOperador',{
filtro:{
Idc: win.idc,
IdContato: win.idContato,
IdGrupo: win.idGrupo,
Id: idLastMsg,
}
},
function(data) {
if (callback) {
callback(data);
return;
}
showResultsLido(data);
});
};
function showResultsLido(data){
var dados = JSON.parse(data);
VerificaMsgOperLido(dados.ConsultaMensagensLidoOperadorResult);
};
function saveMensagem(message, img){
var info = require('ui/webService/WebServiceCall');
geoLocation();
info.webService('sac/SalvaMensagem',{
filtro:{
Idc: win.idc,
IdContato: win.idContato,
IdGrupo: win.idGrupo,
Latitude: win.latitude,
Longitude: win.longitude,
Imagem: img,
TipoImagem: "PNG",
Tamanho: "0",
Mensagem: message
}
},
function(data){
var dados = JSON.parse(data);
activityScreen.hide();
win.image = "";
webServiceMsg(lastId, function(data){
showResults(data);
controlTimer = setInterval(function(){
webServiceMsg(lastId);
}, 5000);
});
});
};
I know I also need to add a command in the "/view/iphone/chat.js" file for the top code to appear in my chat window.