package com.kickstarter.viewmodels; import android.support.annotation.NonNull; import com.kickstarter.libs.ActivityViewModel; import com.kickstarter.libs.Environment; import com.kickstarter.libs.rx.transformers.Transformers; import com.kickstarter.models.ProjectNotification; import com.kickstarter.services.ApiClientType; import com.kickstarter.ui.activities.ProjectNotificationSettingsActivity; import com.kickstarter.viewmodels.errors.ProjectNotificationSettingsViewModelErrors; import com.kickstarter.viewmodels.outputs.ProjectNotificationSettingsViewModelOutputs; import java.util.List; import rx.Observable; import rx.subjects.PublishSubject; public final class ProjectNotificationSettingsViewModel extends ActivityViewModel<ProjectNotificationSettingsActivity> implements ProjectNotificationSettingsViewModelOutputs, ProjectNotificationSettingsViewModelErrors { public ProjectNotificationSettingsViewModel(final @NonNull Environment environment) { super(environment); final ApiClientType client = environment.apiClient(); projectNotifications = client.fetchProjectNotifications() .compose(Transformers.pipeErrorsTo(unableToFetchProjectNotificationsError)); } private Observable<List<ProjectNotification>> projectNotifications; private final PublishSubject<Throwable> unableToFetchProjectNotificationsError = PublishSubject.create(); public final ProjectNotificationSettingsViewModelOutputs outputs = this; public final ProjectNotificationSettingsViewModelErrors errors = this; public Observable<List<ProjectNotification>> projectNotifications() { return projectNotifications; } public Observable<Void> unableToFetchProjectNotificationsError() { return unableToFetchProjectNotificationsError .map(__ -> null); } }