@Override
  public void archive(IConversation conversation, boolean archive) {
    if (conversation.isSelected()) {
      final IConversation nextConversation = getNextConversation();
      if (nextConversation != null) {
        // don't want to change selected item immediately
        new Handler()
            .postDelayed(
                new Runnable() {
                  @Override
                  public void run() {
                    if (conversationsList != null) {
                      setCurrentConversation(
                          nextConversation, ConversationChangeRequester.ARCHIVED_RESULT);
                    }
                  }
                },
                ARCHIVE_DELAY);
      }
    }

    conversation.setArchived(archive);

    // Set current conversation to unarchived
    if (!archive) {
      setCurrentConversation(
          conversation, ConversationChangeRequester.CONVERSATION_LIST_UNARCHIVED_CONVERSATION);
    }
  }