Search in sources :

Example 1 with IChatSessionManager

use of org.awesomeapp.messenger.service.IChatSessionManager in project Zom-Android by zom.

the class ImUrlActivity method openChat.

private void openChat(long provider, long account) {
    try {
        IChatSessionManager manager = mConn.getChatSessionManager();
        IChatSession session = manager.getChatSession(mToAddress);
        if (session == null) {
            session = manager.createChatSession(mToAddress, false);
        }
        Uri data = ContentUris.withAppendedId(Imps.Chats.CONTENT_URI, session.getId());
        Intent intent = new Intent(Intent.ACTION_VIEW, data);
        intent.putExtra(ImServiceConstants.EXTRA_INTENT_FROM_ADDRESS, mToAddress);
        intent.putExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, provider);
        intent.putExtra(ImServiceConstants.EXTRA_INTENT_ACCOUNT_ID, account);
        intent.addCategory(ImApp.IMPS_CATEGORY);
        startActivity(intent);
    } catch (RemoteException e) {
        // Ouch!  Service died!  We'll just disappear.
        Log.w("ImUrlActivity", "Connection disappeared!");
    }
}
Also used : IChatSessionManager(org.awesomeapp.messenger.service.IChatSessionManager) Intent(android.content.Intent) RemoteException(android.os.RemoteException) IChatSession(org.awesomeapp.messenger.service.IChatSession) Uri(android.net.Uri)

Example 2 with IChatSessionManager

use of org.awesomeapp.messenger.service.IChatSessionManager in project Zom-Android by zom.

the class ConversationView method inviteContacts.

public void inviteContacts(ArrayList<String> invitees) {
    if (mConn == null)
        return;
    try {
        IChatSessionManager manager = mConn.getChatSessionManager();
        IChatSession session = manager.getChatSession(mRemoteAddress);
        for (String invitee : invitees) session.inviteContact(invitee);
    } catch (Exception e) {
        Log.e(ImApp.LOG_TAG, "error inviting contacts to group", e);
    }
}
Also used : IChatSessionManager(org.awesomeapp.messenger.service.IChatSessionManager) IChatSession(org.awesomeapp.messenger.service.IChatSession) RemoteException(android.os.RemoteException) IOException(java.io.IOException) CursorIndexOutOfBoundsException(android.database.CursorIndexOutOfBoundsException)

Example 3 with IChatSessionManager

use of org.awesomeapp.messenger.service.IChatSessionManager in project Zom-Android by zom.

the class ConversationView method createChatSession.

private IChatSession createChatSession() {
    try {
        if (mConn != null) {
            IChatSessionManager sessionMgr = mConn.getChatSessionManager();
            if (sessionMgr != null) {
                String remoteAddress = mRemoteAddress;
                IChatSession session = null;
                if (mContactType == Imps.Contacts.TYPE_GROUP) {
                    // Contact contactGroup = new Contact(new XmppAddress(mRemoteAddress),mRemoteNickname,Imps.Contacts.TYPE_GROUP);
                    session = sessionMgr.createMultiUserChatSession(mRemoteAddress, mRemoteNickname, null, false);
                // new ChatSessionInitTask(((ImApp)mActivity.getApplication()),mProviderId, mAccountId, Imps.Contacts.TYPE_GROUP)
                // .executeOnExecutor(ImApp.sThreadPoolExecutor,contactGroup);
                } else {
                    remoteAddress = Address.stripResource(mRemoteAddress);
                    session = sessionMgr.createChatSession(remoteAddress, false);
                }
                return session;
            }
        }
    } catch (Exception e) {
        // mHandler.showServiceErrorAlert(e.getLocalizedMessage());
        LogCleaner.error(ImApp.LOG_TAG, "issue getting chat session", e);
    }
    return null;
}
Also used : IChatSessionManager(org.awesomeapp.messenger.service.IChatSessionManager) IChatSession(org.awesomeapp.messenger.service.IChatSession) RemoteException(android.os.RemoteException) IOException(java.io.IOException) CursorIndexOutOfBoundsException(android.database.CursorIndexOutOfBoundsException)

Example 4 with IChatSessionManager

use of org.awesomeapp.messenger.service.IChatSessionManager in project Zom-Android by zom.

the class GroupDisplayActivity method leaveGroup.

private void leaveGroup() {
    try {
        IChatSessionManager manager = mConn.getChatSessionManager();
        IChatSession session = manager.getChatSession(mAddress);
        if (session == null)
            session = manager.createChatSession(mAddress, true);
        if (session != null) {
            session.leave();
            // clear the stack and go back to the main activity
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    } catch (Exception e) {
        Log.e(ImApp.LOG_TAG, "error leaving group", e);
    }
}
Also used : IChatSessionManager(org.awesomeapp.messenger.service.IChatSessionManager) Intent(android.content.Intent) IChatSession(org.awesomeapp.messenger.service.IChatSession) DecoderException(org.apache.commons.codec.DecoderException) RemoteException(android.os.RemoteException)

Example 5 with IChatSessionManager

use of org.awesomeapp.messenger.service.IChatSessionManager in project Zom-Android by zom.

the class MigrateAccountTask method doInBackground.

@Override
protected OnboardingAccount doInBackground(String... newDomains) {
    // get existing account username
    String nickname = Imps.Account.getNickname(mContext.getContentResolver(), mAccountId);
    String username = Imps.Account.getUserName(mContext.getContentResolver(), mAccountId);
    String password = Imps.Account.getPassword(mContext.getContentResolver(), mAccountId);
    OtrAndroidKeyManagerImpl keyMan = OtrAndroidKeyManagerImpl.getInstance(mContext);
    KeyPair keyPair = keyMan.generateLocalKeyPair();
    String fingerprint = keyMan.getFingerprint(keyPair.getPublic());
    // find or use provided new server/domain
    String domain = newDomains[0];
    // register account on new domain with same password
    mNewAccount = registerNewAccount(nickname, username, password, domain, null);
    if (mNewAccount == null) {
        username = username + '.' + fingerprint.substring(fingerprint.length() - 8, fingerprint.length()).toLowerCase();
        mNewAccount = registerNewAccount(nickname, username, password, domain, null);
        if (mNewAccount == null)
            return null;
    }
    String newJabberId = mNewAccount.username + '@' + mNewAccount.domain;
    keyMan.storeKeyPair(newJabberId, keyPair);
    // send migration message to existing contacts and/or sessions
    try {
        boolean loggedInToOldAccount = mConn.getState() == ImConnection.LOGGED_IN;
        // login and set new default account
        SignInHelper signInHelper = new SignInHelper(mContext, mHandler);
        signInHelper.activateAccount(mNewAccount.providerId, mNewAccount.accountId);
        signInHelper.signIn(mNewAccount.password, mNewAccount.providerId, mNewAccount.accountId, true);
        mNewConn = mApp.getConnection(mNewAccount.providerId, mNewAccount.accountId);
        while (mNewConn.getState() != ImConnection.LOGGED_IN) {
            try {
                Thread.sleep(500);
            } catch (Exception e) {
            }
        }
        String inviteLink = OnboardingManager.generateInviteLink(mContext, newJabberId, fingerprint, nickname, true);
        String migrateMessage = mContext.getString(R.string.migrate_message) + ' ' + inviteLink;
        IChatSessionManager sessionMgr = mConn.getChatSessionManager();
        IContactListManager clManager = mConn.getContactListManager();
        List<IContactList> listOfLists = clManager.getContactLists();
        if (loggedInToOldAccount) {
            for (IContactList contactList : listOfLists) {
                String[] contacts = contactList.getContacts();
                for (String contact : contacts) {
                    mContacts.add(contact);
                    IChatSession session = sessionMgr.getChatSession(contact);
                    if (session == null) {
                        session = sessionMgr.createChatSession(contact, true);
                    }
                    if (!session.isEncrypted()) {
                        // try to kick off some encryption here
                        session.getDefaultOtrChatSession().startChatEncryption();
                        try {
                            Thread.sleep(500);
                        }// just wait a half second here?
                         catch (Exception e) {
                        }
                    }
                    session.sendMessage(migrateMessage, false);
                    // archive existing contact
                    clManager.archiveContact(contact, session.isGroupChatSession() ? Imps.Contacts.TYPE_NORMAL : Imps.Contacts.TYPE_GROUP, true);
                }
            }
        } else {
            String[] offlineAddresses = clManager.getOfflineAddresses();
            for (String address : offlineAddresses) {
                mContacts.add(address);
                clManager.archiveContact(address, Imps.Contacts.TYPE_NORMAL, true);
            }
        }
        for (String contact : mContacts) {
            addToContactList(mNewConn, contact, keyMan.getRemoteFingerprint(contact), null);
        }
        if (loggedInToOldAccount) {
            // archive existing conversations and contacts
            List<IChatSession> listSession = mConn.getChatSessionManager().getActiveChatSessions();
            for (IChatSession session : listSession) {
                session.leave();
            }
            mConn.broadcastMigrationIdentity(newJabberId);
        }
        migrateAvatars(username, newJabberId);
        mApp.setDefaultAccount(mNewAccount.providerId, mNewAccount.accountId);
        // logout of existing account
        setKeepSignedIn(mAccountId, false);
        if (loggedInToOldAccount)
            mConn.logout();
        return mNewAccount;
    } catch (Exception e) {
        Log.e(ImApp.LOG_TAG, "error with migration", e);
    }
    // failed
    return null;
}
Also used : KeyPair(java.security.KeyPair) OtrAndroidKeyManagerImpl(org.awesomeapp.messenger.crypto.otr.OtrAndroidKeyManagerImpl) IContactList(org.awesomeapp.messenger.service.IContactList) SignInHelper(org.awesomeapp.messenger.ui.legacy.SignInHelper) IChatSession(org.awesomeapp.messenger.service.IChatSession) RemoteException(android.os.RemoteException) JSONException(org.json.JSONException) IOException(java.io.IOException) IChatSessionManager(org.awesomeapp.messenger.service.IChatSessionManager) IContactListManager(org.awesomeapp.messenger.service.IContactListManager)

Aggregations

RemoteException (android.os.RemoteException)11 IChatSessionManager (org.awesomeapp.messenger.service.IChatSessionManager)11 IChatSession (org.awesomeapp.messenger.service.IChatSession)10 IOException (java.io.IOException)4 Intent (android.content.Intent)3 CursorIndexOutOfBoundsException (android.database.CursorIndexOutOfBoundsException)2 DecoderException (org.apache.commons.codec.DecoderException)2 XmppAddress (org.awesomeapp.messenger.plugin.xmpp.XmppAddress)2 IContactListManager (org.awesomeapp.messenger.service.IContactListManager)2 IImConnection (org.awesomeapp.messenger.service.IImConnection)2 ProgressDialog (android.app.ProgressDialog)1 Paint (android.graphics.Paint)1 Uri (android.net.Uri)1 FileNotFoundException (java.io.FileNotFoundException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 KeyPair (java.security.KeyPair)1 ImApp (org.awesomeapp.messenger.ImApp)1 IOtrChatSession (org.awesomeapp.messenger.crypto.IOtrChatSession)1 OtrAndroidKeyManagerImpl (org.awesomeapp.messenger.crypto.otr.OtrAndroidKeyManagerImpl)1 Contact (org.awesomeapp.messenger.model.Contact)1