package com.kickstarter.ui.viewholders;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.kickstarter.KSApplication;
import com.kickstarter.R;
import com.kickstarter.libs.KSString;
import com.kickstarter.libs.utils.ProjectUtils;
import com.kickstarter.models.Photo;
import com.kickstarter.models.Project;
import com.squareup.picasso.Picasso;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.BindString;
import butterknife.ButterKnife;
import static com.kickstarter.libs.utils.ObjectUtils.requireNonNull;
public final class ThanksProjectViewHolder extends KSViewHolder {
private Project project;
private final Context context;
private final Delegate delegate;
protected @Bind(R.id.time_to_go_text_view) TextView timeToGoTextView;
protected @Bind(R.id.name) TextView nameTextView;
protected @Bind(R.id.photo) ImageView photoImageView;
protected @BindString(R.string.discovery_baseball_card_time_left_to_go) String timeLeftToGoString;
protected @Inject KSString ksString;
public interface Delegate {
void projectClick(ThanksProjectViewHolder viewHolder, Project project);
}
public ThanksProjectViewHolder(final @NonNull View view, final @NonNull Delegate delegate) {
super(view);
this.delegate = delegate;
this.context = view.getContext();
((KSApplication) context.getApplicationContext()).component().inject(this);
ButterKnife.bind(this, view);
}
@Override
public void bindData(final @Nullable Object data) throws Exception {
project = requireNonNull((Project) data, Project.class);
}
public void onBind() {
nameTextView.setText(project.name());
if (project.isLive()) {
timeToGoTextView.setText(ksString.format(
timeLeftToGoString,
"time_left",
ProjectUtils.deadlineCountdown(project, context)
));
timeToGoTextView.setVisibility(View.VISIBLE);
} else {
timeToGoTextView.setVisibility(View.GONE);
}
final Photo photo = project.photo();
if (photo != null) {
photoImageView.setVisibility(View.VISIBLE);
Picasso.with(context).load(photo.med()).into(photoImageView);
} else {
photoImageView.setVisibility(View.INVISIBLE);
}
}
@Override
public void onClick(final @NonNull View view) {
delegate.projectClick(this, project);
}
}