Display latest chat messages

Asked

Viewed 103 times

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.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.