diff --git a/app/src/main/java/fr/free/nrw/commons/achievements/Achievements.java b/app/src/main/java/fr/free/nrw/commons/achievements/Achievements.java
index 55da22cd4..98fe099da 100644
--- a/app/src/main/java/fr/free/nrw/commons/achievements/Achievements.java
+++ b/app/src/main/java/fr/free/nrw/commons/achievements/Achievements.java
@@ -59,65 +59,6 @@ public class Achievements {
response.getDeletedUploads());
}
- /**
- * Builder class for Achievements class
- */
- public class AchievementsBuilder {
- private int nestedUniqueUsedImages;
- private int nestedArticlesUsingImages;
- private int nestedThanksReceived;
- private int nestedImagesEditedBySomeoneElse;
- private int nestedFeaturedImages;
- private int nestedImagesUploaded;
- private int nestedRevertCount;
-
- public AchievementsBuilder setUniqueUsedImages(int uniqueUsedImages) {
- this.nestedUniqueUsedImages = uniqueUsedImages;
- return this;
- }
-
- public AchievementsBuilder setArticlesUsingImages(int articlesUsingImages) {
- this.nestedArticlesUsingImages = articlesUsingImages;
- return this;
- }
-
- public AchievementsBuilder setThanksReceived(int thanksReceived) {
- this.nestedThanksReceived = thanksReceived;
- return this;
- }
-
- public AchievementsBuilder setImagesEditedBySomeoneElse(int imagesEditedBySomeoneElse) {
- this.nestedImagesEditedBySomeoneElse = imagesEditedBySomeoneElse;
- return this;
- }
-
- public AchievementsBuilder setFeaturedImages(int featuredImages) {
- this.nestedFeaturedImages = featuredImages;
- return this;
- }
-
- public AchievementsBuilder setImagesUploaded(int imagesUploaded) {
- this.nestedImagesUploaded = imagesUploaded;
- return this;
- }
-
- public AchievementsBuilder setRevertCount( int revertCount){
- this.nestedRevertCount = revertCount;
- return this;
- }
-
- public Achievements createAchievements(){
- return new Achievements(nestedUniqueUsedImages,
- nestedArticlesUsingImages,
- nestedThanksReceived,
- nestedImagesEditedBySomeoneElse,
- nestedFeaturedImages,
- nestedImagesUploaded,
- nestedRevertCount);
- }
-
- }
-
/**
* getter function to get count of images uploaded
* @return
diff --git a/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java b/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java
index 5aa5f5e48..1bc1cc27d 100644
--- a/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java
@@ -54,10 +54,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
private static final double BADGE_IMAGE_WIDTH_RATIO = 0.4;
private static final double BADGE_IMAGE_HEIGHT_RATIO = 0.3;
- private Boolean isUploadFetched = false;
- private Boolean isStatisticsFetched = false;
- private Boolean isRevertFetched = false;
- private Achievements achievements = new Achievements();
+
private LevelController.LevelInfo levelInfo;
@BindView(R.id.achievement_badge)
@@ -129,7 +126,6 @@ public class AchievementsActivity extends NavigationBaseActivity {
progressBar.setVisibility(View.VISIBLE);
hideLayouts();
setAchievements();
- setUploadCount();
initDrawer();
}
@@ -189,7 +185,6 @@ public class AchievementsActivity extends NavigationBaseActivity {
* which then calls parseJson when results are fetched
*/
private void setAchievements() {
-
if(checkAccount()) {
compositeDisposable.add(mediaWikiApi
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
@@ -198,29 +193,42 @@ public class AchievementsActivity extends NavigationBaseActivity {
.subscribe(
response -> {
if (response != null) {
- achievements = Achievements.from(response);
- isRevertFetched = true;
- isStatisticsFetched = true;
+ setUploadCount(Achievements.from(response));
+ } else {
+ onError();
}
- hideProgressBar();
},
- t -> Timber.e(t, "Fetching achievements statisticss failed")
+ t -> {
+ Timber.e(t, "Fetching achievements statistics failed");
+ onError();
+ }
));
}
}
+ /**
+ * Shows a generic error toast when error occurs while loading achievements or uploads
+ */
+ private void onError() {
+ ViewUtil.showLongToast(this, getResources().getString(R.string.error_occurred));
+ progressBar.setVisibility(View.GONE);
+ }
+
/**
* used to the count of images uploaded by user
*/
- private void setUploadCount() {
+ private void setUploadCount(Achievements achievements) {
if(checkAccount()) {
compositeDisposable.add(mediaWikiApi
.getUploadCount(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
- this::setAchievementsUploadCount,
- t -> Timber.e(t, "Fetching upload count failed")
+ uploadCount -> setAchievementsUploadCount(achievements, uploadCount),
+ t -> {
+ Timber.e(t, "Fetching upload count failed");
+ onError();
+ }
));
}
}
@@ -229,10 +237,9 @@ public class AchievementsActivity extends NavigationBaseActivity {
* used to set achievements upload count and call hideProgressbar
* @param uploadCount
*/
- private void setAchievementsUploadCount(int uploadCount){
+ private void setAchievementsUploadCount(Achievements achievements, int uploadCount) {
achievements.setImagesUploaded(uploadCount);
- isUploadFetched = true;
- hideProgressBar();
+ hideProgressBar(achievements);
}
/**
@@ -293,8 +300,8 @@ public class AchievementsActivity extends NavigationBaseActivity {
/**
* to hide progressbar
*/
- private void hideProgressBar() {
- if (progressBar != null && isUploadFetched && isStatisticsFetched && isRevertFetched) {
+ private void hideProgressBar(Achievements achievements) {
+ if (progressBar != null) {
levelInfo = LevelController.LevelInfo.from(achievements.getImagesUploaded(),
achievements.getUniqueUsedImages(),
achievements.getNotRevertPercentage());
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b0dacddd3..60c5343ba 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -341,4 +341,6 @@
The number of images you have uploaded to Commons, via any upload software
The percentage of images you have uploaded to Commons that were not deleted
The number of images you have uploaded to Commons that were used in Wikimedia articles
+
+ Error occurred!