package com.badoo.chateau.example.ui.conversations.create.namegroup; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.NavUtils; import android.view.MenuItem; import com.badoo.barf.mvp.PresenterFactory; import com.badoo.chateau.core.usecases.conversations.CreateGroupConversation; import com.badoo.chateau.example.R; import com.badoo.chateau.example.data.model.ExampleConversation; import com.badoo.chateau.example.ui.BaseActivity; import com.badoo.chateau.example.ui.ExampleConfiguration; import com.badoo.chateau.example.ui.Injector; import com.badoo.chateau.example.ui.chat.ChatActivity; import com.badoo.chateau.example.ui.conversations.list.ConversationListActivity; import com.badoo.chateau.extras.ViewFinder; import com.badoo.chateau.ui.conversations.create.namegroup.NameGroupPresenter; import com.badoo.chateau.ui.conversations.create.namegroup.NameGroupPresenterImpl; import java.util.ArrayList; import java.util.List; import static com.badoo.chateau.ui.conversations.create.namegroup.NameGroupPresenter.*; /** * Activity for selecting the name of a new group chat */ public class NameGroupActivity extends BaseActivity implements NameGroupFlowListener<ExampleConversation> { /** * Entry point for NameGroupActivity * * @param userIds the list of users to include in this group */ public static Intent create(Context context, List<String> userIds) { final Intent intent = new Intent(context, NameGroupActivity.class); intent.putStringArrayListExtra(EXTRA_USER_IDS, new ArrayList<>(userIds)); return intent; } public static class DefaultConfiguration extends ExampleConfiguration<NameGroupActivity> { @Override public void inject(@NonNull NameGroupActivity target) { final List<String> userIds = new ArrayList<>(target.getIntent().getStringArrayListExtra(EXTRA_USER_IDS)); final PresenterFactory<NameGroupView, NameGroupPresenter> presenterFactory = new PresenterFactory<>(v -> createNameGroupPresenter(v, target, userIds)); new NameGroupViewImpl(ViewFinder.from(target), presenterFactory); target.registerPresenter(presenterFactory.get()); } protected NameGroupPresenter createNameGroupPresenter(@NonNull NameGroupView nameGroupView, @NonNull NameGroupFlowListener<ExampleConversation> flowListener, List<String> userIds) { return new NameGroupPresenterImpl<>(nameGroupView, flowListener, userIds, new CreateGroupConversation<>(getConversationRepo())); } } private static final String EXTRA_USER_IDS = NameGroupActivity.class.getName() + ":users"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_name_group); setTitle(R.string.title_activity_select_users); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } Injector.inject(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; default: return super.onOptionsItemSelected(item); } } @Override public void requestOpenChat(@NonNull ExampleConversation conversation) { final Intent startConversations = new Intent(this, ConversationListActivity.class); startConversations.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); final Intent startChat = ChatActivity.create(this, conversation.getId(), ""); startActivities(new Intent[]{startConversations, startChat}); } }