Skip to content

Commit

Permalink
Update login epilogue header avatar handling
Browse files Browse the repository at this point in the history
  • Loading branch information
renanferrari committed May 19, 2020
1 parent 9360938 commit 0c47f21
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
import org.wordpress.android.R;
import org.wordpress.android.WordPress;
import org.wordpress.android.analytics.AnalyticsTracker;
import org.wordpress.android.fluxc.model.AccountModel;
import org.wordpress.android.fluxc.model.SiteModel;
import org.wordpress.android.login.LoginBaseFormFragment;
import org.wordpress.android.ui.main.SitePickerAdapter;
import org.wordpress.android.ui.main.SitePickerAdapter.SiteList;
import org.wordpress.android.ui.main.SitePickerAdapter.ViewHolderHandler;
import org.wordpress.android.util.GravatarUtils;
import org.wordpress.android.util.StringUtils;
import org.wordpress.android.util.analytics.AnalyticsUtils;
import org.wordpress.android.util.image.ImageManager;
Expand Down Expand Up @@ -209,26 +209,22 @@ private void bindHeaderViewHolder(LoginHeaderViewHolder holder, SiteList sites)
}

final boolean isWpcom = mAccountStore.hasAccessToken();
final boolean hasSites = sites.size() != 0;

if (isWpcom) {
holder.updateLoggedInAsHeading(getContext(), mImageManager, mAccountStore.getAccount());
} else if (sites.size() != 0) {
SiteModel site = mSiteStore.getSiteByLocalId(sites.get(0).getLocalId());
int avatarSz = getResources().getDimensionPixelSize(R.dimen.avatar_sz_large);

String avatarUrl = GravatarUtils.gravatarFromEmail(site.getEmail(), avatarSz);
String username = site.getUsername();
String displayName = site.getDisplayName();

holder.updateLoggedInAsHeading(getContext(), mImageManager, avatarUrl, username, displayName);
final AccountModel account = mAccountStore.getAccount();
holder.updateLoggedInAsHeading(getContext(), mImageManager, account);
} else if (hasSites) {
final SiteModel site = mSiteStore.getSiteByLocalId(sites.get(0).getLocalId());
holder.updateLoggedInAsHeading(getContext(), mImageManager, site);
}

if (sites.size() == 0) {
holder.hideSitesHeading();
} else {
if (hasSites) {
holder.showSitesHeading(StringUtils.getQuantityString(
getActivity(), R.string.login_epilogue_mysites_one, R.string.login_epilogue_mysites_one,
R.string.login_epilogue_mysites_other, sites.size()));
} else {
holder.hideSitesHeading();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,47 @@

import org.wordpress.android.R;
import org.wordpress.android.fluxc.model.AccountModel;
import org.wordpress.android.fluxc.model.SiteModel;
import org.wordpress.android.util.GravatarUtils;
import org.wordpress.android.util.StringUtils;
import org.wordpress.android.util.image.ImageManager;
import org.wordpress.android.util.image.ImageType;

import static org.wordpress.android.util.image.ImageType.AVATAR_WITHOUT_BACKGROUND;

/**
* ViewHolder for a RecyclerView header used on screens shown after a user logs in.
*/
public class LoginHeaderViewHolder extends RecyclerView.ViewHolder {
class LoginHeaderViewHolder extends RecyclerView.ViewHolder {
private final ImageView mAvatarImageView;
private final TextView mDisplayNameTextView;
private final TextView mUsernameTextView;
private final TextView mMySitesHeadingTextView;

public LoginHeaderViewHolder(View view) {
LoginHeaderViewHolder(View view) {
super(view);
mAvatarImageView = view.findViewById(R.id.avatar);
mDisplayNameTextView = view.findViewById(R.id.display_name);
mUsernameTextView = view.findViewById(R.id.username);
mMySitesHeadingTextView = view.findViewById(R.id.my_sites_heading);
}

public void updateLoggedInAsHeading(Context context, ImageManager imageManager, AccountModel defaultAccount) {
updateLoggedInAsHeading(context, imageManager, constructGravatarUrl(context, defaultAccount),
defaultAccount.getUserName(), defaultAccount.getDisplayName());
void updateLoggedInAsHeading(Context context, ImageManager imageManager, AccountModel account) {
final String avatarUrl = constructGravatarUrl(context, account);
final String username = account.getUserName();
final String displayName = account.getDisplayName();
updateLoggedInAsHeading(imageManager, avatarUrl, username, displayName);
}

void updateLoggedInAsHeading(Context context, ImageManager imageManager, SiteModel site) {
final String avatarUrl = constructGravatarUrl(context, site);
final String username = site.getUsername();
final String displayName = site.getDisplayName();
updateLoggedInAsHeading(imageManager, avatarUrl, username, displayName);
}

public void updateLoggedInAsHeading(Context context, ImageManager imageManager, String avatarUrl, String username,
String displayName) {
imageManager.loadIntoCircle(mAvatarImageView, ImageType.AVATAR_WITHOUT_BACKGROUND,
StringUtils.notNullStr(avatarUrl));
void updateLoggedInAsHeading(ImageManager imageManager, String avatarUrl, String username, String displayName) {
imageManager.loadIntoCircle(mAvatarImageView, AVATAR_WITHOUT_BACKGROUND, StringUtils.notNullStr(avatarUrl));

mUsernameTextView.setText(username);

if (!TextUtils.isEmpty(displayName)) {
Expand All @@ -50,17 +60,24 @@ public void updateLoggedInAsHeading(Context context, ImageManager imageManager,
}
}

public void showSitesHeading(String text) {
void showSitesHeading(String text) {
mMySitesHeadingTextView.setVisibility(View.VISIBLE);
mMySitesHeadingTextView.setText(text);
}

public void hideSitesHeading() {
void hideSitesHeading() {
mMySitesHeadingTextView.setVisibility(View.GONE);
}

private int getAvatarSize(Context context) {
return context.getResources().getDimensionPixelSize(R.dimen.avatar_sz_large);
}

private String constructGravatarUrl(Context context, AccountModel account) {
int avatarSz = context.getResources().getDimensionPixelSize(R.dimen.avatar_sz_large);
return GravatarUtils.fixGravatarUrl(account.getAvatarUrl(), avatarSz);
return GravatarUtils.fixGravatarUrl(account.getAvatarUrl(), getAvatarSize(context));
}

private String constructGravatarUrl(Context context, SiteModel site) {
return GravatarUtils.gravatarFromEmail(site.getEmail(), getAvatarSize(context));
}
}

0 comments on commit 0c47f21

Please sign in to comment.