Search in sources :

Example 6 with ChatSession

use of org.awesomeapp.messenger.model.ChatSession in project Zom-Android by zom.

the class XmppConnection method initConnectionAndLogin.

private void initConnectionAndLogin(Imps.ProviderSettings.QueryMap providerSettings, String userName) throws InterruptedException, IOException, SmackException, XMPPException, KeyManagementException, NoSuchAlgorithmException, IllegalStateException, RuntimeException {
    // Roster.SubscriptionMode.accept_all;//load this from a preference
    Roster.SubscriptionMode subMode = Roster.SubscriptionMode.manual;
    // only activates if Debug TRUE is set, so you can leave this in!
    Debug.onConnectionStart();
    initConnection(providerSettings, userName);
    if (mConnection.isConnected() && mConnection.isSecureConnection() && (!mConnection.isAuthenticated())) {
        mResource = providerSettings.getXmppResource();
        mRoster = Roster.getInstanceFor(mConnection);
        mRoster.setRosterLoadedAtLogin(true);
        mRoster.setSubscriptionMode(subMode);
        getContactListManager().listenToRoster(mRoster);
        ReconnectionManager manager = ReconnectionManager.getInstanceFor(mConnection);
        manager.disableAutomaticReconnection();
        mChatManager = ChatManager.getInstanceFor(mConnection);
        mPingManager = PingManager.getInstanceFor(mConnection);
        mPingManager.setPingInterval(PING_INTERVAL);
        if (mUser == null)
            mUser = makeUser(providerSettings, mContext.getContentResolver());
        try {
            getOmemo();
        } catch (Exception e) {
            debug(TAG, "error init'ing omemo during connectoin", e);
        }
        MultiUserChatManager.getInstanceFor(mConnection).addInvitationListener(new InvitationListener() {

            @Override
            public void invitationReceived(XMPPConnection xmppConnection, MultiUserChat muc, EntityJid entityJid, String reason, String password, org.jivesoftware.smack.packet.Message message, MUCUser.Invite invite) {
                try {
                    getChatGroupManager().acceptInvitationAsync(invite.getFrom().toString());
                    XmppAddress xa = new XmppAddress(muc.getRoom().toString());
                    mChatGroupManager.joinChatGroupAsync(xa, reason);
                    ChatSession session = mSessionManager.findSession(muc.getRoom());
                    // create a session
                    if (session == null) {
                        ImEntity participant = findOrCreateParticipant(xa.getAddress(), true);
                        if (participant != null)
                            session = mSessionManager.createChatSession(participant, false);
                        if (session != null)
                            ((ChatGroup) session.getParticipant()).setName(muc.getSubject());
                    }
                } catch (Exception se) {
                    Log.e(TAG, "error accepting invite", se);
                }
            }
        });
        mConnection.login(mUsername, mPassword, Resourcepart.from(mResource));
        mStreamHandler.notifyInitialLogin();
        initServiceDiscovery();
        getContactListManager().loadContactListsAsync();
        execute(new Runnable() {

            public void run() {
                sendPresencePacket();
                sendVCard();
            }
        });
    } else {
        // throw some meaningful error message here
        throw new SmackException("Unable to securely conenct to server");
    }
}
Also used : MultiUserChat(org.jivesoftware.smackx.muc.MultiUserChat) MUCUser(org.jivesoftware.smackx.muc.packet.MUCUser) ReconnectionManager(org.jivesoftware.smack.ReconnectionManager) SmackException(org.jivesoftware.smack.SmackException) ChatGroup(org.awesomeapp.messenger.model.ChatGroup) AbstractXMPPConnection(org.jivesoftware.smack.AbstractXMPPConnection) XMPPConnection(org.jivesoftware.smack.XMPPConnection) KeyStoreException(java.security.KeyStoreException) UndecidedOmemoIdentityException(org.jivesoftware.smackx.omemo.exceptions.UndecidedOmemoIdentityException) XMPPException(org.jivesoftware.smack.XMPPException) RemoteException(android.os.RemoteException) IOException(java.io.IOException) ImException(org.awesomeapp.messenger.model.ImException) KeyManagementException(java.security.KeyManagementException) InvocationTargetException(java.lang.reflect.InvocationTargetException) XmppStringprepException(org.jxmpp.stringprep.XmppStringprepException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) SmackException(org.jivesoftware.smack.SmackException) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) MultiUserChatException(org.jivesoftware.smackx.muc.MultiUserChatException) CryptoFailedException(org.jivesoftware.smackx.omemo.exceptions.CryptoFailedException) CertificateException(java.security.cert.CertificateException) ChatSession(org.awesomeapp.messenger.model.ChatSession) IChatSession(org.awesomeapp.messenger.service.IChatSession) EntityJid(org.jxmpp.jid.EntityJid) Roster(org.jivesoftware.smack.roster.Roster) InvitationListener(org.jivesoftware.smackx.muc.InvitationListener) ImEntity(org.awesomeapp.messenger.model.ImEntity)

Example 7 with ChatSession

use of org.awesomeapp.messenger.model.ChatSession in project Zom-Android by zom.

the class XmppConnection method findOrCreateSession.

private ChatSession findOrCreateSession(String address, boolean groupChat) {
    try {
        if (mConnection == null || (!mConnection.isConnected()))
            return null;
        ChatSession session = mSessionManager.findSession(JidCreate.bareFrom(address));
        BareJid bareJid = JidCreate.bareFrom(address);
        if (session == null) {
            if (!groupChat) {
                ImEntity participant = findOrCreateParticipant(address, groupChat);
                if (participant != null) {
                    session = mSessionManager.createChatSession(participant, false);
                    mContactListManager.refreshPresence(address);
                    qAvatar.put(bareJid.toString(), "");
                    if (getOmemo().getManager().contactSupportsOmemo(bareJid)) {
                        getOmemo().getManager().requestDeviceListUpdateFor(bareJid);
                        getOmemo().getManager().buildSessionsWith(bareJid);
                    }
                }
            } else {
                XmppAddress xAddr = new XmppAddress(address);
                mChatGroupManager.joinChatGroupAsync(xAddr, null);
                MultiUserChat muc = mChatGroupManager.getMultiUserChat(xAddr.getBareAddress());
                session = mSessionManager.findSession(muc.getRoom());
                // create a session
                if (session == null) {
                    ImEntity participant = findOrCreateParticipant(xAddr.getAddress(), true);
                    if (participant != null)
                        session = mSessionManager.createChatSession(participant, false);
                    if (session != null)
                        ((ChatGroup) session.getParticipant()).setName(muc.getSubject());
                }
            }
        }
        return session;
    } catch (Exception e) {
        debug(ImApp.LOG_TAG, "error findOrCreateSession", e);
        return null;
    }
}
Also used : MultiUserChat(org.jivesoftware.smackx.muc.MultiUserChat) EntityBareJid(org.jxmpp.jid.EntityBareJid) BareJid(org.jxmpp.jid.BareJid) DomainBareJid(org.jxmpp.jid.DomainBareJid) ImEntity(org.awesomeapp.messenger.model.ImEntity) ChatSession(org.awesomeapp.messenger.model.ChatSession) IChatSession(org.awesomeapp.messenger.service.IChatSession) KeyStoreException(java.security.KeyStoreException) UndecidedOmemoIdentityException(org.jivesoftware.smackx.omemo.exceptions.UndecidedOmemoIdentityException) XMPPException(org.jivesoftware.smack.XMPPException) RemoteException(android.os.RemoteException) IOException(java.io.IOException) ImException(org.awesomeapp.messenger.model.ImException) KeyManagementException(java.security.KeyManagementException) InvocationTargetException(java.lang.reflect.InvocationTargetException) XmppStringprepException(org.jxmpp.stringprep.XmppStringprepException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) SmackException(org.jivesoftware.smack.SmackException) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) MultiUserChatException(org.jivesoftware.smackx.muc.MultiUserChatException) CryptoFailedException(org.jivesoftware.smackx.omemo.exceptions.CryptoFailedException) CertificateException(java.security.cert.CertificateException)

Example 8 with ChatSession

use of org.awesomeapp.messenger.model.ChatSession in project Zom-Android by zom.

the class ChatSessionManagerAdapter method createChatSession.

public IChatSession createChatSession(String contactAddress, boolean isNewSession) {
    ContactListManagerAdapter listManager = (ContactListManagerAdapter) mConnection.getContactListManager();
    Contact contact = listManager.getContactByAddress(Address.stripResource(contactAddress));
    if (contact == null) {
        try {
            contact = new Contact(new XmppAddress(contactAddress), contactAddress, Imps.Contacts.TYPE_NORMAL);
        // long contactId = listManager.queryOrInsertContact(contact);
        // String[] address = {Address.stripResource(contactAddress)};
        // contact = listManager.createTemporaryContacts(address)[0];
        } catch (IllegalArgumentException e) {
            mSessionListenerAdapter.notifyChatSessionCreateFailed(contactAddress, new ImErrorInfo(ImErrorInfo.ILLEGAL_CONTACT_ADDRESS, "Invalid contact address:" + contactAddress));
            return null;
        }
    }
    if (contact != null) {
        ChatSession session = getChatSessionManager().createChatSession(contact, isNewSession);
        return getChatSessionAdapter(session, isNewSession);
    } else
        return null;
}
Also used : XmppAddress(org.awesomeapp.messenger.plugin.xmpp.XmppAddress) IChatSession(org.awesomeapp.messenger.service.IChatSession) ChatSession(org.awesomeapp.messenger.model.ChatSession) Contact(org.awesomeapp.messenger.model.Contact) ImErrorInfo(org.awesomeapp.messenger.model.ImErrorInfo)

Example 9 with ChatSession

use of org.awesomeapp.messenger.model.ChatSession in project Zom-Android by zom.

the class ChatSessionManagerAdapter method closeChatSession.

public void closeChatSession(ChatSessionAdapter adapter) {
    synchronized (mActiveChatSessionAdapters) {
        ChatSession session = adapter.getAdaptee();
        getChatSessionManager().closeChatSession(session);
        String key = Address.stripResource(adapter.getAddress());
        mActiveChatSessionAdapters.remove(key);
    }
}
Also used : IChatSession(org.awesomeapp.messenger.service.IChatSession) ChatSession(org.awesomeapp.messenger.model.ChatSession)

Example 10 with ChatSession

use of org.awesomeapp.messenger.model.ChatSession in project Zom-Android by zom.

the class LoopbackConnection method getChatSessionManager.

@Override
public ChatSessionManager getChatSessionManager() {
    return new ChatSessionManager() {

        @Override
        public void sendMessageAsync(ChatSession session, Message message) {
            // Echo
            Message rec = new Message(message.getBody());
            rec.setFrom(message.getTo());
            rec.setDateTime(new Date());
            session.onReceiveMessage(rec, true);
        }

        @Override
        public boolean resourceSupportsOmemo(Jid jid) {
            return false;
        }
    };
}
Also used : Message(org.awesomeapp.messenger.model.Message) Jid(org.jxmpp.jid.Jid) ChatSessionManager(org.awesomeapp.messenger.model.ChatSessionManager) ChatSession(org.awesomeapp.messenger.model.ChatSession) Date(java.util.Date)

Aggregations

ChatSession (org.awesomeapp.messenger.model.ChatSession)10 IChatSession (org.awesomeapp.messenger.service.IChatSession)9 RemoteException (android.os.RemoteException)5 IOException (java.io.IOException)4 InvocationTargetException (java.lang.reflect.InvocationTargetException)4 KeyManagementException (java.security.KeyManagementException)4 KeyStoreException (java.security.KeyStoreException)4 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)4 CertificateException (java.security.cert.CertificateException)4 RejectedExecutionException (java.util.concurrent.RejectedExecutionException)4 ImException (org.awesomeapp.messenger.model.ImException)4 Message (org.awesomeapp.messenger.model.Message)4 SmackException (org.jivesoftware.smack.SmackException)4 XMPPException (org.jivesoftware.smack.XMPPException)4 MultiUserChatException (org.jivesoftware.smackx.muc.MultiUserChatException)4 CryptoFailedException (org.jivesoftware.smackx.omemo.exceptions.CryptoFailedException)4 UndecidedOmemoIdentityException (org.jivesoftware.smackx.omemo.exceptions.UndecidedOmemoIdentityException)4 XmppStringprepException (org.jxmpp.stringprep.XmppStringprepException)4 Date (java.util.Date)2 ChatGroup (org.awesomeapp.messenger.model.ChatGroup)2