package com.kickstarter.ui.activities; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Pair; import com.kickstarter.R; import com.kickstarter.libs.BaseActivity; import com.kickstarter.libs.qualifiers.RequiresActivityViewModel; import com.kickstarter.libs.utils.ViewUtils; import com.kickstarter.ui.adapters.ProjectNotificationSettingsAdapter; import com.kickstarter.viewmodels.ProjectNotificationSettingsViewModel; import butterknife.Bind; import butterknife.BindString; import butterknife.ButterKnife; import rx.android.schedulers.AndroidSchedulers; import static com.kickstarter.libs.utils.TransitionUtils.slideInFromLeft; @RequiresActivityViewModel(ProjectNotificationSettingsViewModel.class) public final class ProjectNotificationSettingsActivity extends BaseActivity<ProjectNotificationSettingsViewModel> { protected @Bind(R.id.project_notification_settings_recycler_view) RecyclerView recyclerView; protected @BindString(R.string.general_error_something_wrong) String generalErrorString; @Override protected void onCreate(final @Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.project_notification_settings_layout); ButterKnife.bind(this); final ProjectNotificationSettingsAdapter adapter = new ProjectNotificationSettingsAdapter(); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); viewModel.outputs.projectNotifications() .compose(bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(adapter::projectNotifications); viewModel.errors.unableToFetchProjectNotificationsError() .compose(bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .map(__ -> generalErrorString) .subscribe(ViewUtils.showToast(this)); } @Override protected void onDestroy() { super.onDestroy(); recyclerView.setAdapter(null); } @Override protected @Nullable Pair<Integer, Integer> exitTransition() { return slideInFromLeft(); } }