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.DateTimeUtils;
import com.kickstarter.libs.utils.ObjectUtils;
import com.kickstarter.models.Activity;
import com.kickstarter.models.Photo;
import com.kickstarter.models.Project;
import com.kickstarter.models.Update;
import com.kickstarter.models.User;
import com.squareup.picasso.Picasso;
import org.joda.time.DateTime;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.BindString;
import butterknife.ButterKnife;
import butterknife.OnClick;
public final class ProjectUpdateViewHolder extends ActivityListViewHolder {
protected @Bind(R.id.project_name) TextView projectNameTextView;
protected @Bind(R.id.project_photo) ImageView projectPhotoImageView;
protected @Bind(R.id.timestamp) TextView timestampTextView;
protected @Bind(R.id.update_body) TextView updateBodyTextView;
protected @Bind(R.id.update_sequence) TextView updateSequenceTextView;
protected @Bind(R.id.update_title) TextView updateTitleTextView;
protected @BindString(R.string.activity_project_update_update_count) String projectUpdateCountString;
private final @Nullable Delegate delegate;
protected @Inject KSString ksString;
public interface Delegate {
void projectUpdateProjectClicked(ProjectUpdateViewHolder viewHolder, Activity activity);
void projectUpdateClicked(ProjectUpdateViewHolder viewHolder, Activity activity);
}
public ProjectUpdateViewHolder(final @NonNull View view, final @Nullable Delegate delegate) {
super(view);
this.delegate = delegate;
((KSApplication) view.getContext().getApplicationContext()).component().inject(this);
ButterKnife.bind(this, view);
}
@Override
public void onBind() {
final Context context = context();
final Project project = activity().project();
if (project == null) {
return;
}
final User user = activity().user();
if (user == null) {
return;
}
final Photo photo = project.photo();
if (photo == null) {
return;
}
final Update update = activity().update();
if (update == null) {
return;
}
final DateTime publishedAt = ObjectUtils.coalesce(update.publishedAt(), new DateTime());
projectNameTextView.setText(project.name());
Picasso.with(context)
.load(photo.little())
.into(projectPhotoImageView);
timestampTextView.setText(DateTimeUtils.relative(context, ksString, publishedAt));
updateBodyTextView.setText(update.truncatedBody());
updateSequenceTextView.setText(ksString.format(
projectUpdateCountString,
"update_count",
String.valueOf(update.sequence())
));
updateTitleTextView.setText(update.title());
}
@OnClick(R.id.project_info)
public void projectOnClick() {
if (this.delegate != null) {
this.delegate.projectUpdateProjectClicked(this, activity());
}
}
@OnClick(R.id.update_info)
public void updateOnClick() {
if (this.delegate != null) {
this.delegate.projectUpdateClicked(this, activity());
}
}
}