Add some null checks and formatting.

This commit is contained in:
Ammar Githam 2021-05-19 20:09:49 +09:00
parent f501f68f98
commit 644f2ddff8

View File

@ -140,7 +140,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
final ActionBar actionBar = fragmentActivity.getSupportActionBar(); final ActionBar actionBar = fragmentActivity.getSupportActionBar();
if (actionBar != null && !TextUtils.isEmpty(username)) { if (actionBar != null && !TextUtils.isEmpty(username)) {
final String finalUsername = username.startsWith("@") ? username.substring(1) final String finalUsername = username.startsWith("@") ? username.substring(1)
: username; : username;
actionBar.setTitle(finalUsername); actionBar.setTitle(finalUsername);
actionBar.setSubtitle(null); actionBar.setSubtitle(null);
} }
@ -765,12 +765,12 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
final long followingCount = profileModel.getFollowingCount(); final long followingCount = profileModel.getFollowingCount();
final String postCount = String.valueOf(profileModel.getMediaCount()); final String postCount = String.valueOf(profileModel.getMediaCount());
SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_count, SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(
profileModel.getMediaCount() > 2000000000L R.plurals.main_posts_count,
? 2000000000 profileModel.getMediaCount() > 2000000000L ? 2000000000 : (int) profileModel.getMediaCount(),
: (int) profileModel.getMediaCount(), postCount)
postCount)); );
span.setSpan(new RelativeSizeSpan(1.2f), 0, postCount.length(), 0); span.setSpan(new RelativeSizeSpan(1.2f), 0, postCount.length(), 0);
span.setSpan(new StyleSpan(Typeface.BOLD), 0, postCount.length(), 0); span.setSpan(new StyleSpan(Typeface.BOLD), 0, postCount.length(), 0);
profileDetailsBinding.mainPostCount.setText(span); profileDetailsBinding.mainPostCount.setText(span);
@ -778,9 +778,11 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
final String followersCountStr = String.valueOf(followersCount); final String followersCountStr = String.valueOf(followersCount);
final int followersCountStrLen = followersCountStr.length(); final int followersCountStrLen = followersCountStr.length();
span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_followers, span = new SpannableStringBuilder(getResources().getQuantityString(
R.plurals.main_posts_followers,
followersCount > 2000000000L ? 2000000000 : (int) followersCount, followersCount > 2000000000L ? 2000000000 : (int) followersCount,
followersCountStr)); followersCountStr)
);
span.setSpan(new RelativeSizeSpan(1.2f), 0, followersCountStrLen, 0); span.setSpan(new RelativeSizeSpan(1.2f), 0, followersCountStrLen, 0);
span.setSpan(new StyleSpan(Typeface.BOLD), 0, followersCountStrLen, 0); span.setSpan(new StyleSpan(Typeface.BOLD), 0, followersCountStrLen, 0);
profileDetailsBinding.mainFollowers.setText(span); profileDetailsBinding.mainFollowers.setText(span);
@ -788,15 +790,14 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
final String followingCountStr = String.valueOf(followingCount); final String followingCountStr = String.valueOf(followingCount);
final int followingCountStrLen = followingCountStr.length(); final int followingCountStrLen = followingCountStr.length();
span = new SpannableStringBuilder(getString(R.string.main_posts_following, span = new SpannableStringBuilder(getString(R.string.main_posts_following, followingCountStr));
followingCountStr));
span.setSpan(new RelativeSizeSpan(1.2f), 0, followingCountStrLen, 0); span.setSpan(new RelativeSizeSpan(1.2f), 0, followingCountStrLen, 0);
span.setSpan(new StyleSpan(Typeface.BOLD), 0, followingCountStrLen, 0); span.setSpan(new StyleSpan(Typeface.BOLD), 0, followingCountStrLen, 0);
profileDetailsBinding.mainFollowing.setText(span); profileDetailsBinding.mainFollowing.setText(span);
profileDetailsBinding.mainFollowing.setVisibility(View.VISIBLE); profileDetailsBinding.mainFollowing.setVisibility(View.VISIBLE);
profileDetailsBinding.mainFullName.setText(TextUtils.isEmpty(profileModel.getFullName()) ? profileModel.getUsername() profileDetailsBinding.mainFullName.setText(TextUtils.isEmpty(profileModel.getFullName()) ? profileModel.getUsername()
: profileModel.getFullName()); : profileModel.getFullName());
final String biography = profileModel.getBiography(); final String biography = profileModel.getBiography();
if (TextUtils.isEmpty(biography)) { if (TextUtils.isEmpty(biography)) {
@ -815,9 +816,8 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
final String originalText = autoLinkItem.getOriginalText().trim(); final String originalText = autoLinkItem.getOriginalText().trim();
navigateToProfile(originalText); navigateToProfile(originalText);
}); });
profileDetailsBinding.mainBiography.addOnEmailClickListener(autoLinkItem -> Utils.openEmailAddress(getContext(), profileDetailsBinding.mainBiography.addOnEmailClickListener(autoLinkItem -> Utils.openEmailAddress(
autoLinkItem.getOriginalText() getContext(), autoLinkItem.getOriginalText().trim()));
.trim()));
profileDetailsBinding.mainBiography profileDetailsBinding.mainBiography
.addOnURLClickListener(autoLinkItem -> Utils.openURL(getContext(), autoLinkItem.getOriginalText().trim())); .addOnURLClickListener(autoLinkItem -> Utils.openURL(getContext(), autoLinkItem.getOriginalText().trim()));
profileDetailsBinding.mainBiography.setOnLongClickListener(v -> { profileDetailsBinding.mainBiography.setOnLongClickListener(v -> {
@ -899,6 +899,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
return true; return true;
}); });
} }
final MotionScene.Transition transition = root.getTransition(R.id.transition);
if (!isReallyPrivate()) { if (!isReallyPrivate()) {
if (isLoggedIn) { if (isLoggedIn) {
profileDetailsBinding.mainFollowing.setClickable(true); profileDetailsBinding.mainFollowing.setClickable(true);
@ -924,13 +925,13 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
binding.privatePage2.setVisibility(View.VISIBLE); binding.privatePage2.setVisibility(View.VISIBLE);
binding.postsRecyclerView.setVisibility(View.GONE); binding.postsRecyclerView.setVisibility(View.GONE);
binding.swipeRefreshLayout.setRefreshing(false); binding.swipeRefreshLayout.setRefreshing(false);
root.getTransition(R.id.transition).setEnable(false); if (transition != null) {
transition.setEnable(false);
}
} }
if (profileModel.getMediaCount() == 0 && transition != null) {
if (profileModel.getMediaCount() == 0) { transition.setEnable(false);
root.getTransition(R.id.transition).setEnable(false);
} }
} }
private void setupButtons(final long profileId) { private void setupButtons(final long profileId) {
@ -1037,21 +1038,21 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
} }
}); });
storiesService.fetchHighlights(profileId, storiesService.fetchHighlights(profileId,
new ServiceCallback<List<HighlightModel>>() { new ServiceCallback<List<HighlightModel>>() {
@Override @Override
public void onSuccess(final List<HighlightModel> result) { public void onSuccess(final List<HighlightModel> result) {
if (result != null) { if (result != null) {
profileDetailsBinding.highlightsList.setVisibility(View.VISIBLE); profileDetailsBinding.highlightsList.setVisibility(View.VISIBLE);
highlightsViewModel.getList().postValue(result); highlightsViewModel.getList().postValue(result);
} else profileDetailsBinding.highlightsList.setVisibility(View.GONE); } else profileDetailsBinding.highlightsList.setVisibility(View.GONE);
} }
@Override @Override
public void onFailure(final Throwable t) { public void onFailure(final Throwable t) {
profileDetailsBinding.highlightsList.setVisibility(View.GONE); profileDetailsBinding.highlightsList.setVisibility(View.GONE);
Log.e(TAG, "Error", t); Log.e(TAG, "Error", t);
} }
}); });
} }
private void setupCommonListeners() { private void setupCommonListeners() {
@ -1116,14 +1117,14 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
}); });
profileDetailsBinding.btnLiked.setOnClickListener(v -> { profileDetailsBinding.btnLiked.setOnClickListener(v -> {
final NavDirections action = ProfileFragmentDirections.actionProfileFragmentToSavedViewerFragment(profileModel.getUsername(), final NavDirections action = ProfileFragmentDirections.actionProfileFragmentToSavedViewerFragment(profileModel.getUsername(),
profileModel.getPk(), profileModel.getPk(),
PostItemType.LIKED); PostItemType.LIKED);
NavHostFragment.findNavController(this).navigate(action); NavHostFragment.findNavController(this).navigate(action);
}); });
profileDetailsBinding.btnTagged.setOnClickListener(v -> { profileDetailsBinding.btnTagged.setOnClickListener(v -> {
final NavDirections action = ProfileFragmentDirections.actionProfileFragmentToSavedViewerFragment(profileModel.getUsername(), final NavDirections action = ProfileFragmentDirections.actionProfileFragmentToSavedViewerFragment(profileModel.getUsername(),
profileModel.getPk(), profileModel.getPk(),
PostItemType.TAGGED); PostItemType.TAGGED);
NavHostFragment.findNavController(this).navigate(action); NavHostFragment.findNavController(this).navigate(action);
}); });
if (!disableDm) { if (!disableDm) {
@ -1162,7 +1163,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
// show stories // show stories
final NavDirections action = ProfileFragmentDirections final NavDirections action = ProfileFragmentDirections
.actionProfileFragmentToStoryViewerFragment(StoryViewerOptions.forUser(profileModel.getPk(), .actionProfileFragmentToStoryViewerFragment(StoryViewerOptions.forUser(profileModel.getPk(),
profileModel.getFullName())); profileModel.getFullName()));
NavHostFragment.findNavController(this).navigate(action); NavHostFragment.findNavController(this).navigate(action);
return; return;
} }
@ -1188,12 +1189,12 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
if (profileModel != null) { if (profileModel != null) {
final FragmentManager fragmentManager = getParentFragmentManager(); final FragmentManager fragmentManager = getParentFragmentManager();
final ProfilePicDialogFragment fragment = ProfilePicDialogFragment.getInstance(profileModel.getPk(), final ProfilePicDialogFragment fragment = ProfilePicDialogFragment.getInstance(profileModel.getPk(),
username, username,
profileModel.getProfilePicUrl()); profileModel.getProfilePicUrl());
final FragmentTransaction ft = fragmentManager.beginTransaction(); final FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(fragment, "profilePicDialog") .add(fragment, "profilePicDialog")
.commit(); .commit();
} }
} }
@ -1206,13 +1207,13 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
private void setupPosts() { private void setupPosts() {
binding.postsRecyclerView.setViewModelStoreOwner(this) binding.postsRecyclerView.setViewModelStoreOwner(this)
.setLifeCycleOwner(this) .setLifeCycleOwner(this)
.setPostFetchService(new ProfilePostFetchService(profileModel, isLoggedIn)) .setPostFetchService(new ProfilePostFetchService(profileModel, isLoggedIn))
.setLayoutPreferences(layoutPreferences) .setLayoutPreferences(layoutPreferences)
.addFetchStatusChangeListener(fetching -> updateSwipeRefreshState()) .addFetchStatusChangeListener(fetching -> updateSwipeRefreshState())
.setFeedItemCallback(feedItemCallback) .setFeedItemCallback(feedItemCallback)
.setSelectionModeCallback(selectionModeCallback) .setSelectionModeCallback(selectionModeCallback)
.init(); .init();
binding.postsRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { binding.postsRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override @Override
public void onScrolled(@NonNull final RecyclerView recyclerView, final int dx, final int dy) { public void onScrolled(@NonNull final RecyclerView recyclerView, final int dx, final int dy) {