Fixed #4784 : Inform users about unsupported features in beta flavor (#4834)

* Display toast and disable API in LeaderboardFragment beta flavor

* Display toast and disable API in AchievementsFragment beta flavor

* Removed unused Gravity import

* Added Toast appearance tests for AchievementsFragment

* Added Toast appearance tests for LeaderboardFragment

* Improve Context detection in Achievements+Leaderboard fragments to ensure Context found for Toast

* Add testOnCreateView for AchievementsFragment
This commit is contained in:
Jacob Fano 2022-02-23 21:40:51 -08:00 committed by GitHub
parent 18a9170691
commit 1405300fd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 154 additions and 2 deletions

View file

@ -3,6 +3,7 @@ package fr.free.nrw.commons.profile.achievements;
import android.accounts.Account;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.util.DisplayMetrics;
@ -15,6 +16,7 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.widget.AppCompatTextView;
@ -29,6 +31,7 @@ import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.utils.ViewUtil;
import fr.free.nrw.commons.profile.ProfileActivity;
import io.reactivex.android.schedulers.AndroidSchedulers;
@ -179,11 +182,46 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
tvAchievementsOfUser.setVisibility(View.VISIBLE);
tvAchievementsOfUser.setText(getString(R.string.achievements_of_user,userName));
}
// Achievements currently unimplemented in Beta flavor. Skip all API calls.
if(ConfigUtils.isBetaFlavour()) {
progressBar.setVisibility(View.GONE);
imageByWikiText.setText(R.string.no_image);
imageRevertedText.setText(R.string.no_image_reverted);
imageUploadedText.setText(R.string.no_image_uploaded);
wikidataEditsText.setText("0");
imagesFeatured.setText("0");
tvQualityImages.setText("0");
thanksReceived.setText("0");
setMenuVisibility(true);
return rootView;
}
setWikidataEditCount();
setAchievements();
return rootView;
}
@Override
public void setMenuVisibility(boolean visible) {
super.setMenuVisibility(visible);
// Whenever this fragment is revealed in a menu,
// notify Beta users the page data is unavailable
if(ConfigUtils.isBetaFlavour() && visible) {
Context ctx = null;
if(getContext() != null) {
ctx = getContext();
} else if(getView() != null && getView().getContext() != null) {
ctx = getView().getContext();
}
if(ctx != null) {
Toast.makeText(ctx,
R.string.achievements_unavailable_beta,
Toast.LENGTH_LONG).show();
}
}
}
/**
* To invoke the AlertDialog on clicking info button
*/

View file

@ -6,6 +6,7 @@ import static fr.free.nrw.commons.profile.leaderboard.LeaderboardConstants.PAGE_
import static fr.free.nrw.commons.profile.leaderboard.LeaderboardConstants.START_OFFSET;
import android.accounts.Account;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -29,6 +30,7 @@ import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
import fr.free.nrw.commons.profile.ProfileActivity;
import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.utils.ViewUtil;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
@ -121,8 +123,16 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
View rootView = inflater.inflate(R.layout.fragment_leaderboard, container, false);
ButterKnife.bind(this, rootView);
progressBar.setVisibility(View.VISIBLE);
hideLayouts();
// Leaderboard currently unimplemented in Beta flavor. Skip all API calls and disable menu
if(ConfigUtils.isBetaFlavour()) {
progressBar.setVisibility(View.GONE);
scrollButton.setVisibility(View.GONE);
return rootView;
}
progressBar.setVisibility(View.VISIBLE);
setSpinners();
/**
@ -174,6 +184,27 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
return rootView;
}
@Override
public void setMenuVisibility(boolean visible) {
super.setMenuVisibility(visible);
// Whenever this fragment is revealed in a menu,
// notify Beta users the page data is unavailable
if(ConfigUtils.isBetaFlavour() && visible) {
Context ctx = null;
if(getContext() != null) {
ctx = getContext();
} else if(getView() != null && getView().getContext() != null) {
ctx = getView().getContext();
}
if(ctx != null) {
Toast.makeText(ctx,
R.string.leaderboard_unavailable_beta,
Toast.LENGTH_LONG).show();
}
}
}
/**
* Refreshes the leaderboard list
*/