package com.kickstarter.ui.viewholders.discoverydrawer;
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.R;
import com.kickstarter.libs.transformations.CircleTransformation;
import com.kickstarter.models.User;
import com.kickstarter.ui.viewholders.KSViewHolder;
import com.squareup.picasso.Picasso;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import static com.kickstarter.libs.utils.ObjectUtils.requireNonNull;
public final class LoggedInViewHolder extends KSViewHolder {
private Delegate delegate;
private User user;
protected @Bind(R.id.user_image_view) ImageView userImageView;
protected @Bind(R.id.user_name_text_view) TextView userNameTextView;
public interface Delegate {
void loggedInViewHolderInternalToolsClick(final @NonNull LoggedInViewHolder viewHolder);
void loggedInViewHolderProfileClick(final @NonNull LoggedInViewHolder viewHolder, final @NonNull User user);
void loggedInViewHolderSettingsClick(final @NonNull LoggedInViewHolder viewHolder, final @NonNull User user);
}
public LoggedInViewHolder(final @NonNull View view, final @NonNull Delegate delegate) {
super(view);
this.delegate = delegate;
ButterKnife.bind(this, view);
}
@Override
public void bindData(final @Nullable Object data) throws Exception {
user = requireNonNull((User) data, User.class);
}
@Override
public void onBind() {
final Context context = context();
userNameTextView.setText(user.name());
Picasso.with(context)
.load(user.avatar().medium())
.transform(new CircleTransformation())
.into(userImageView);
}
@OnClick(R.id.user_container)
public void userClick() {
delegate.loggedInViewHolderProfileClick(this, user);
}
@Nullable @OnClick(R.id.internal_tools_icon_button)
public void internalToolsClick() {
delegate.loggedInViewHolderInternalToolsClick(this);
}
@OnClick(R.id.settings_icon_button)
public void settingsClick() {
delegate.loggedInViewHolderSettingsClick(this, user);
}
}