Example #1
0
  private void init(Contact contact, boolean isNewSession) {
    mIsGroupChat = false;
    ContactListManagerAdapter listManager =
        (ContactListManagerAdapter) mConnection.getContactListManager();

    mContactId = listManager.queryOrInsertContact(contact);

    mChatURI = ContentUris.withAppendedId(Imps.Chats.CONTENT_URI, mContactId);

    if (isNewSession) insertOrUpdateChat(null);

    mMessageURI = Imps.Messages.getContentUriByThreadId(mContactId);

    mContactStatusMap.put(contact.getName(), contact.getPresence().getStatus());
  }
 public IChatSession createChatSession(String contactAddress) {
   ContactListManagerAdapter listManager =
       (ContactListManagerAdapter) mConnection.getContactListManager();
   Contact contact = listManager.getContactByAddress(contactAddress);
   if (contact == null) {
     try {
       contact = listManager.createTemporaryContact(contactAddress);
     } catch (IllegalArgumentException e) {
       mSessionListenerAdapter.notifyChatSessionCreateFailed(
           contactAddress,
           new ImErrorInfo(
               ImErrorInfo.ILLEGAL_CONTACT_ADDRESS, "Invalid contact address:" + contactAddress));
       return null;
     }
   }
   ChatSession session = mSessionManager.createChatSession(contact);
   return getChatSessionAdapter(session);
 }
Example #3
0
  private long insertOrUpdateGroupContactInDb(ChatGroup group) {
    // Insert a record in contacts table
    ContentValues values = new ContentValues(4);
    values.put(Imps.Contacts.USERNAME, group.getAddress().getAddress());
    values.put(Imps.Contacts.NICKNAME, group.getName());
    values.put(Imps.Contacts.CONTACTLIST, ContactListManagerAdapter.LOCAL_GROUP_LIST_ID);
    values.put(Imps.Contacts.TYPE, Imps.Contacts.TYPE_GROUP);

    Uri contactUri =
        ContentUris.withAppendedId(
            ContentUris.withAppendedId(Imps.Contacts.CONTENT_URI, mConnection.mProviderId),
            mConnection.mAccountId);

    ContactListManagerAdapter listManager =
        (ContactListManagerAdapter) mConnection.getContactListManager();

    long id = listManager.queryGroup(group);

    if (id == -1) {
      id = ContentUris.parseId(mContentResolver.insert(contactUri, values));

      ArrayList<ContentValues> memberValues = new ArrayList<ContentValues>();
      Contact self = mConnection.getLoginUser();
      for (Contact member : group.getMembers()) {
        if (!member.equals(self)) { // avoid to insert the user himself
          ContentValues memberValue = new ContentValues(2);
          memberValue.put(Imps.GroupMembers.USERNAME, member.getAddress().getAddress());
          memberValue.put(Imps.GroupMembers.NICKNAME, member.getName());
          memberValues.add(memberValue);
        }
      }
      if (!memberValues.isEmpty()) {
        ContentValues[] result = new ContentValues[memberValues.size()];
        memberValues.toArray(result);
        Uri memberUri = ContentUris.withAppendedId(Imps.GroupMembers.CONTENT_URI, id);
        mContentResolver.bulkInsert(memberUri, result);
      }
    }

    return id;
  }
  void updateAccountStatusInDb() {
    Presence p = getUserPresence();
    int presenceStatus = Imps.Presence.OFFLINE;
    int connectionStatus = convertConnStateForDb(mConnectionState);

    if (p != null) {
      presenceStatus = ContactListManagerAdapter.convertPresenceStatus(p);
    }

    ContentResolver cr = mService.getContentResolver();
    Uri uri = Imps.AccountStatus.CONTENT_URI;
    ContentValues values = new ContentValues();

    values.put(Imps.AccountStatus.ACCOUNT, mAccountId);
    values.put(Imps.AccountStatus.PRESENCE_STATUS, presenceStatus);
    values.put(Imps.AccountStatus.CONNECTION_STATUS, connectionStatus);

    cr.insert(uri, values);
  }