Search in sources :

Example 91 with Jid

use of eu.siacs.conversations.xmpp.Jid in project Conversations by siacs.

the class MessageParser method extractChatState.

private boolean extractChatState(Conversation c, final boolean isTypeGroupChat, final MessagePacket packet) {
    ChatState state = ChatState.parse(packet);
    if (state != null && c != null) {
        final Account account = c.getAccount();
        final Jid from = packet.getFrom();
        if (from.asBareJid().equals(account.getJid().asBareJid())) {
            c.setOutgoingChatState(state);
            if (state == ChatState.ACTIVE || state == ChatState.COMPOSING) {
                if (c.getContact().isSelf()) {
                    return false;
                }
                mXmppConnectionService.markRead(c);
                activateGracePeriod(account);
            }
            return false;
        } else {
            if (isTypeGroupChat) {
                MucOptions.User user = c.getMucOptions().findUserByFullJid(from);
                if (user != null) {
                    return user.setChatState(state);
                } else {
                    return false;
                }
            } else {
                return c.setIncomingChatState(state);
            }
        }
    }
    return false;
}
Also used : ChatState(eu.siacs.conversations.xmpp.chatstate.ChatState) Account(eu.siacs.conversations.entities.Account) MucOptions(eu.siacs.conversations.entities.MucOptions) InvalidJid(eu.siacs.conversations.xmpp.InvalidJid) Jid(eu.siacs.conversations.xmpp.Jid)

Example 92 with Jid

use of eu.siacs.conversations.xmpp.Jid in project Conversations by siacs.

the class ConversationFragment method onContactPictureClicked.

@Override
public void onContactPictureClicked(Message message) {
    String fingerprint;
    if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
        fingerprint = "pgp";
    } else {
        fingerprint = message.getFingerprint();
    }
    final boolean received = message.getStatus() <= Message.STATUS_RECEIVED;
    if (received) {
        if (message.getConversation() instanceof Conversation && message.getConversation().getMode() == Conversation.MODE_MULTI) {
            Jid tcp = message.getTrueCounterpart();
            Jid user = message.getCounterpart();
            if (user != null && !user.isBareJid()) {
                final MucOptions mucOptions = ((Conversation) message.getConversation()).getMucOptions();
                if (mucOptions.participating() || ((Conversation) message.getConversation()).getNextCounterpart() != null) {
                    if (!mucOptions.isUserInRoom(user) && mucOptions.findUserByRealJid(tcp == null ? null : tcp.asBareJid()) == null) {
                        Toast.makeText(getActivity(), activity.getString(R.string.user_has_left_conference, user.getResource()), Toast.LENGTH_SHORT).show();
                    }
                    highlightInConference(user.getResource());
                } else {
                    Toast.makeText(getActivity(), R.string.you_are_not_participating, Toast.LENGTH_SHORT).show();
                }
            }
            return;
        } else {
            if (!message.getContact().isSelf()) {
                activity.switchToContactDetails(message.getContact(), fingerprint);
                return;
            }
        }
    }
    activity.switchToAccount(message.getConversation().getAccount(), fingerprint);
}
Also used : MucOptions(eu.siacs.conversations.entities.MucOptions) Jid(eu.siacs.conversations.xmpp.Jid) Conversation(eu.siacs.conversations.entities.Conversation)

Example 93 with Jid

use of eu.siacs.conversations.xmpp.Jid in project Conversations by siacs.

the class XmppConnectionService method getKnownConferenceHosts.

public Collection<String> getKnownConferenceHosts() {
    final Set<String> mucServers = new HashSet<>();
    for (final Account account : accounts) {
        if (account.getXmppConnection() != null) {
            mucServers.addAll(account.getXmppConnection().getMucServers());
            for (Bookmark bookmark : account.getBookmarks()) {
                final Jid jid = bookmark.getJid();
                final String s = jid == null ? null : jid.getDomain().toEscapedString();
                if (s != null) {
                    mucServers.add(s);
                }
            }
        }
    }
    return mucServers;
}
Also used : Account(eu.siacs.conversations.entities.Account) Bookmark(eu.siacs.conversations.entities.Bookmark) Jid(eu.siacs.conversations.xmpp.Jid) HashSet(java.util.HashSet)

Example 94 with Jid

use of eu.siacs.conversations.xmpp.Jid in project Conversations by siacs.

the class XmppConnectionService method mucSelfPingAndRejoin.

public void mucSelfPingAndRejoin(final Conversation conversation) {
    final Account account = conversation.getAccount();
    synchronized (account.inProgressConferenceJoins) {
        if (account.inProgressConferenceJoins.contains(conversation)) {
            Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": canceling muc self ping because join is already under way");
            return;
        }
    }
    synchronized (account.inProgressConferencePings) {
        if (!account.inProgressConferencePings.add(conversation)) {
            Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": canceling muc self ping because ping is already under way");
            return;
        }
    }
    final Jid self = conversation.getMucOptions().getSelf().getFullJid();
    final IqPacket ping = new IqPacket(IqPacket.TYPE.GET);
    ping.setTo(self);
    ping.addChild("ping", Namespace.PING);
    sendIqPacket(conversation.getAccount(), ping, (a, response) -> {
        if (response.getType() == IqPacket.TYPE.ERROR) {
            Element error = response.findChild("error");
            if (error == null || error.hasChild("service-unavailable") || error.hasChild("feature-not-implemented") || error.hasChild("item-not-found")) {
                Log.d(Config.LOGTAG, a.getJid().asBareJid() + ": ping to " + self + " came back as ignorable error");
            } else {
                Log.d(Config.LOGTAG, a.getJid().asBareJid() + ": ping to " + self + " failed. attempting rejoin");
                joinMuc(conversation);
            }
        } else if (response.getType() == IqPacket.TYPE.RESULT) {
            Log.d(Config.LOGTAG, a.getJid().asBareJid() + ": ping to " + self + " came back fine");
        }
        synchronized (account.inProgressConferencePings) {
            account.inProgressConferencePings.remove(conversation);
        }
    });
}
Also used : Account(eu.siacs.conversations.entities.Account) Jid(eu.siacs.conversations.xmpp.Jid) Element(eu.siacs.conversations.xml.Element) IqPacket(eu.siacs.conversations.xmpp.stanzas.IqPacket)

Example 95 with Jid

use of eu.siacs.conversations.xmpp.Jid in project Conversations by siacs.

the class XmppConnectionService method processBookmarksInitial.

public void processBookmarksInitial(Account account, Map<Jid, Bookmark> bookmarks, final boolean pep) {
    final Set<Jid> previousBookmarks = account.getBookmarkedJids();
    final boolean synchronizeWithBookmarks = synchronizeWithBookmarks();
    for (Bookmark bookmark : bookmarks.values()) {
        previousBookmarks.remove(bookmark.getJid().asBareJid());
        processModifiedBookmark(bookmark, pep, synchronizeWithBookmarks);
    }
    if (pep && synchronizeWithBookmarks) {
        Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": " + previousBookmarks.size() + " bookmarks have been removed");
        for (Jid jid : previousBookmarks) {
            processDeletedBookmark(account, jid);
        }
    }
    account.setBookmarks(bookmarks);
}
Also used : Jid(eu.siacs.conversations.xmpp.Jid) Bookmark(eu.siacs.conversations.entities.Bookmark)

Aggregations

Jid (eu.siacs.conversations.xmpp.Jid)106 Account (eu.siacs.conversations.entities.Account)35 Element (eu.siacs.conversations.xml.Element)24 Conversation (eu.siacs.conversations.entities.Conversation)22 Contact (eu.siacs.conversations.entities.Contact)17 InvalidJid (eu.siacs.conversations.xmpp.InvalidJid)16 IqPacket (eu.siacs.conversations.xmpp.stanzas.IqPacket)16 Intent (android.content.Intent)15 ArrayList (java.util.ArrayList)13 MucOptions (eu.siacs.conversations.entities.MucOptions)12 Bookmark (eu.siacs.conversations.entities.Bookmark)10 AxolotlService (eu.siacs.conversations.crypto.axolotl.AxolotlService)7 Message (eu.siacs.conversations.entities.Message)7 OnIqPacketReceived (eu.siacs.conversations.xmpp.OnIqPacketReceived)6 MessagePacket (eu.siacs.conversations.xmpp.stanzas.MessagePacket)6 Map (java.util.Map)6 XmppUri (eu.siacs.conversations.utils.XmppUri)5 XmppConnectionService (eu.siacs.conversations.services.XmppConnectionService)4 Avatar (eu.siacs.conversations.xmpp.pep.Avatar)4 HashMap (java.util.HashMap)4