package com.kickstarter.ui.adapters;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import com.kickstarter.R;
import com.kickstarter.models.Activity;
import com.kickstarter.models.Project;
import com.kickstarter.ui.viewholders.ActivitySampleFriendBackingViewHolder;
import com.kickstarter.ui.viewholders.ActivitySampleFriendFollowViewHolder;
import com.kickstarter.ui.viewholders.ActivitySampleProjectViewHolder;
import com.kickstarter.ui.viewholders.DiscoveryOnboardingViewHolder;
import com.kickstarter.ui.viewholders.EmptyViewHolder;
import com.kickstarter.ui.viewholders.KSViewHolder;
import com.kickstarter.ui.viewholders.ProjectCardViewHolder;
import java.util.Collections;
import java.util.List;
public final class DiscoveryAdapter extends KSAdapter {
private static final int SECTION_ONBOARDING_VIEW = 0;
private static final int SECTION_ACTIVITY_SAMPLE_VIEW = 1;
private static final int SECTION_PROJECT_CARD_VIEW = 2;
private final Delegate delegate;
public interface Delegate extends DiscoveryOnboardingViewHolder.Delegate,
ActivitySampleFriendFollowViewHolder.Delegate, ActivitySampleFriendBackingViewHolder.Delegate,
ActivitySampleProjectViewHolder.Delegate, ProjectCardViewHolder.Delegate {}
public DiscoveryAdapter(final @NonNull Delegate delegate) {
this.delegate = delegate;
insertSection(SECTION_ONBOARDING_VIEW, Collections.emptyList());
insertSection(SECTION_ACTIVITY_SAMPLE_VIEW, Collections.emptyList());
insertSection(SECTION_PROJECT_CARD_VIEW, Collections.emptyList());
}
public void takeActivity(final @Nullable Activity activity) {
if (activity == null) {
setSection(SECTION_ACTIVITY_SAMPLE_VIEW, Collections.emptyList());
} else {
setSection(SECTION_ACTIVITY_SAMPLE_VIEW, Collections.singletonList(activity));
}
notifyDataSetChanged();
}
public void setShouldShowOnboardingView(final boolean shouldShowOnboardingView) {
if (shouldShowOnboardingView) {
setSection(SECTION_ONBOARDING_VIEW, Collections.singletonList(null));
} else {
setSection(SECTION_ONBOARDING_VIEW, Collections.emptyList());
}
notifyDataSetChanged();
}
public void takeProjects(final @NonNull List<Project> projects) {
setSection(SECTION_PROJECT_CARD_VIEW, projects);
notifyDataSetChanged();
}
@Override
protected @LayoutRes int layout(final @NonNull SectionRow sectionRow) {
if (sectionRow.section() == SECTION_ONBOARDING_VIEW) {
return R.layout.discovery_onboarding_view;
} else if (sectionRow.section() == SECTION_ACTIVITY_SAMPLE_VIEW) {
if (objectFromSectionRow(sectionRow) instanceof Activity) {
final Activity activity = (Activity) objectFromSectionRow(sectionRow);
if (activity.category().equals(Activity.CATEGORY_BACKING)) {
return R.layout.activity_sample_friend_backing_view;
} else if (activity.category().equals(Activity.CATEGORY_FOLLOW)) {
return R.layout.activity_sample_friend_follow_view;
} else {
return R.layout.activity_sample_project_view;
}
}
return R.layout.empty_view;
} else {
return R.layout.project_card_view;
}
}
@Override
protected @NonNull KSViewHolder viewHolder(final @LayoutRes int layout, final @NonNull View view) {
switch (layout) {
case R.layout.discovery_onboarding_view:
return new DiscoveryOnboardingViewHolder(view, delegate);
case R.layout.project_card_view:
return new ProjectCardViewHolder(view, delegate);
case R.layout.activity_sample_friend_backing_view:
return new ActivitySampleFriendBackingViewHolder(view, delegate);
case R.layout.activity_sample_friend_follow_view:
return new ActivitySampleFriendFollowViewHolder(view, delegate);
case R.layout.activity_sample_project_view:
return new ActivitySampleProjectViewHolder(view, delegate);
default:
return new EmptyViewHolder(view);
}
}
}