package com.badoo.chateau.example.ui.conversations.create.selectusers; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.NavUtils; import android.view.MenuItem; import com.badoo.barf.mvp.PresenterFactory; import com.badoo.chateau.core.usecases.conversations.CreateConversation; import com.badoo.chateau.core.usecases.users.GetUsers; import com.badoo.chateau.example.R; import com.badoo.chateau.example.data.model.ExampleConversation; import com.badoo.chateau.example.data.model.ExampleUser; 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.create.namegroup.NameGroupActivity; import com.badoo.chateau.extras.ViewFinder; import com.badoo.chateau.ui.conversations.create.selectusers.UserListPresenter; import com.badoo.chateau.ui.conversations.create.selectusers.UserListPresenter.UserListFlowListener; import com.badoo.chateau.ui.conversations.create.selectusers.UserListPresenter.UserListView; import com.badoo.chateau.ui.conversations.create.selectusers.UserListPresenterImpl; import java.util.ArrayList; import java.util.List; public class SelectUserActivity extends BaseActivity implements UserListFlowListener<ExampleConversation, ExampleUser> { public static class DefaultConfiguration extends ExampleConfiguration<SelectUserActivity> { @Override public void inject(SelectUserActivity target) { createView(target); } protected UserListView<ExampleUser> createView(@NonNull SelectUserActivity activity) { final PresenterFactory<UserListView<ExampleUser>, UserListPresenter<ExampleUser>> presenterFactory = new PresenterFactory<>(v -> createUserListPresenter(v, activity)); final UserListViewImpl view = new UserListViewImpl(ViewFinder.from(activity), presenterFactory); activity.registerPresenter(presenterFactory.get()); activity.registerBackPressedListener(view); return view; } protected UserListPresenter createUserListPresenter(@NonNull UserListView<ExampleUser> userListView, @NonNull UserListFlowListener<ExampleConversation, ExampleUser> flowListener) { return new UserListPresenterImpl<>(userListView, flowListener, new GetUsers<>(getUserRepo()), new CreateConversation<>(getConversationRepo())); } } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_create_conversation); 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 intent = ChatActivity.create(this, conversation.getId(), ""); finish(); startActivity(intent); } @Override public void requestCreateGroupChat(@NonNull List<ExampleUser> users) { final List<String> userIds = new ArrayList<>(users.size()); for (ExampleUser user : users) { userIds.add(user.getUserId()); } final Intent intent = NameGroupActivity.create(this, userIds); startActivity(intent); } }