Search in sources :

Example 1 with Chat

use of com.xabber.xmpp.archive.Chat in project xabber-android by redsolution.

the class MessageArchiveManager method requestChat.

private void requestChat(String account, CollectionHeader header, String after, boolean modification) {
    Retrieve packet = new Retrieve();
    packet.setType(Type.get);
    Set rsm = new Set();
    rsm.setMax(RSM_MAX);
    rsm.setAfter(after);
    packet.setRsm(rsm);
    packet.setWith(header.getWith());
    packet.setStartString(header.getStartString());
    modificationRequests.put(account, packet.getPacketID(), modification);
    try {
        if (!modification) {
            ConnectionManager.getInstance().sendStanza(account, packet);
            return;
        }
        ConnectionManager.getInstance().sendRequest(account, packet, new OnResponseListener() {

            @Override
            public void onReceived(String account, String packetId, IQ iq) {
                if (iq instanceof Chat && ((Chat) iq).isValid())
                    onChatReceived(account, (Chat) iq);
                else
                    onError(account, packetId, iq);
            }

            @Override
            public void onError(String account, String packetId, IQ iq) {
                onModifiedAvailable(account);
            }

            @Override
            public void onTimeout(String account, String packetId) {
                onError(account, packetId, null);
            }

            @Override
            public void onDisconnect(String account, String packetId) {
            }
        });
    } catch (NetworkException e) {
    }
}
Also used : Retrieve(com.xabber.xmpp.archive.Retrieve) Set(com.xabber.xmpp.rsm.Set) OnResponseListener(com.xabber.android.data.connection.OnResponseListener) IQ(org.jivesoftware.smack.packet.IQ) AbstractChat(com.xabber.android.data.message.AbstractChat) Chat(com.xabber.xmpp.archive.Chat) NetworkException(com.xabber.android.data.NetworkException)

Example 2 with Chat

use of com.xabber.xmpp.archive.Chat in project xabber-android by redsolution.

the class MessageArchiveManager method onPacket.

@Override
public void onPacket(ConnectionItem connection, final String bareAddress, Stanza packet) {
    if (!(connection instanceof AccountItem))
        return;
    String account = ((AccountItem) connection).getAccount();
    if (AccountManager.getInstance().getArchiveMode(account) != ArchiveMode.server)
        return;
    if (bareAddress != null && !Jid.getServer(account).equals(bareAddress))
        return;
    if (!(packet instanceof IQ))
        return;
    IQ iq = (IQ) packet;
    if (iq.getType() == Type.set && packet instanceof Pref && ((Pref) packet).isValid())
        onPreferenceReceived(account, (Pref) packet);
    else if (iq.getType() == Type.set && packet instanceof ItemRemove && ((ItemRemove) packet).isValid())
        onItemRemoveReceived(account, (ItemRemove) packet);
    else if (iq.getType() == Type.set && packet instanceof SessionRemove && ((SessionRemove) packet).isValid())
        onSessionRemoveReceived(account, (SessionRemove) packet);
    else if (iq.getType() == Type.result && packet instanceof List && ((List) packet).isValid())
        onListReceived(account, (List) packet);
    else if (iq.getType() == Type.result && packet instanceof Chat && ((Chat) packet).isValid())
        onChatReceived(account, (Chat) packet);
}
Also used : AccountItem(com.xabber.android.data.account.AccountItem) Pref(com.xabber.xmpp.archive.Pref) ItemRemove(com.xabber.xmpp.archive.ItemRemove) SessionRemove(com.xabber.xmpp.archive.SessionRemove) IQ(org.jivesoftware.smack.packet.IQ) AbstractChat(com.xabber.android.data.message.AbstractChat) Chat(com.xabber.xmpp.archive.Chat) List(com.xabber.xmpp.archive.List)

Aggregations

AbstractChat (com.xabber.android.data.message.AbstractChat)2 Chat (com.xabber.xmpp.archive.Chat)2 IQ (org.jivesoftware.smack.packet.IQ)2 NetworkException (com.xabber.android.data.NetworkException)1 AccountItem (com.xabber.android.data.account.AccountItem)1 OnResponseListener (com.xabber.android.data.connection.OnResponseListener)1 ItemRemove (com.xabber.xmpp.archive.ItemRemove)1 List (com.xabber.xmpp.archive.List)1 Pref (com.xabber.xmpp.archive.Pref)1 Retrieve (com.xabber.xmpp.archive.Retrieve)1 SessionRemove (com.xabber.xmpp.archive.SessionRemove)1 Set (com.xabber.xmpp.rsm.Set)1