Skip to content

Commit e69c03c

Browse files
vanshikaaroramaskaravivek
authored andcommitted
fixed issue #2154 for achievements activity (#2087)
* fixed issue #2065 for achievements activity * updates for issue #2154 * removed unwanted comments and undo gradle changes * added strings to strings.xml * changes made after reviews * review changes * build issues resolved * Undo changes in gradle properties
1 parent 10e57bd commit e69c03c

File tree

3 files changed

+82
-26
lines changed

3 files changed

+82
-26
lines changed

app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java

+69-24
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.accounts.Account;
44
import android.annotation.SuppressLint;
55
import android.content.Context;
6+
import android.content.DialogInterface;
67
import android.content.Intent;
78
import android.graphics.Bitmap;
89
import android.graphics.drawable.BitmapDrawable;
@@ -26,6 +27,8 @@
2627

2728
import com.dinuscxj.progressbar.CircleProgressBar;
2829

30+
import org.w3c.dom.Text;
31+
2932
import java.io.File;
3033
import java.io.FileOutputStream;
3134
import java.io.IOException;
@@ -42,11 +45,14 @@
4245
import fr.free.nrw.commons.mwapi.MediaWikiApi;
4346
import fr.free.nrw.commons.theme.NavigationBaseActivity;
4447
import fr.free.nrw.commons.utils.ViewUtil;
48+
import io.reactivex.Single;
4549
import io.reactivex.android.schedulers.AndroidSchedulers;
4650
import io.reactivex.disposables.CompositeDisposable;
4751
import io.reactivex.schedulers.Schedulers;
4852
import timber.log.Timber;
4953

54+
55+
5056
/**
5157
* activity for sharing feedback on uploaded activity
5258
*/
@@ -85,6 +91,12 @@ public class AchievementsActivity extends NavigationBaseActivity {
8591
RelativeLayout layoutImageUsedByWiki;
8692
@BindView(R.id.layout_statistics)
8793
LinearLayout layoutStatistics;
94+
@BindView(R.id.images_used_by_wiki_text)
95+
TextView imageByWikiText;
96+
@BindView(R.id.images_reverted_text)
97+
TextView imageRevertedText;
98+
@BindView(R.id.images_upload_text_param)
99+
TextView imageUploadedText;
88100
@Inject
89101
SessionManager sessionManager;
90102
@Inject
@@ -183,30 +195,39 @@ void shareScreen(Bitmap bitmap) {
183195
private void setAchievements() {
184196
progressBar.setVisibility(View.VISIBLE);
185197
if (checkAccount()) {
186-
compositeDisposable.add(mediaWikiApi
187-
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
188-
.subscribeOn(Schedulers.io())
189-
.observeOn(AndroidSchedulers.mainThread())
190-
.subscribe(
191-
response -> {
192-
if (response != null) {
193-
setUploadCount(Achievements.from(response));
194-
} else {
198+
try{
199+
200+
compositeDisposable.add(mediaWikiApi
201+
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
202+
.subscribeOn(Schedulers.io())
203+
.observeOn(AndroidSchedulers.mainThread())
204+
.subscribe(
205+
response -> {
206+
if (response != null) {
207+
setUploadCount(Achievements.from(response));
208+
} else {
209+
Timber.d("success");
210+
layoutImageReverts.setVisibility(View.INVISIBLE);
211+
imageView.setVisibility(View.INVISIBLE);
212+
showSnackBarWithRetry();
213+
}
214+
},
215+
t -> {
216+
Timber.e(t, "Fetching achievements statistics failed");
195217
showSnackBarWithRetry();
196218
}
197-
},
198-
t -> {
199-
Timber.e(t, "Fetching achievements statistics failed");
200-
showSnackBarWithRetry();
201-
}
202-
));
219+
));
220+
}
221+
catch (Exception e){
222+
Timber.d(e+"success");
223+
}
203224
}
204225
}
205226

206227
private void showSnackBarWithRetry() {
207228
progressBar.setVisibility(View.GONE);
208229
ViewUtil.showDismissibleSnackBar(findViewById(android.R.id.content),
209-
R.string.achievements_fetch_failed, R.string.retry, view -> setAchievements());
230+
R.string.achievements_fetch_failed, R.string.retry, view -> setAchievements());
210231
}
211232

212233
/**
@@ -250,10 +271,34 @@ private void setAchievementsUploadCount(Achievements achievements, int uploadCou
250271
* @param uploadCount
251272
*/
252273
private void setUploadProgress(int uploadCount){
253-
imagesUploadedProgressbar.setProgress
254-
(100*uploadCount/levelInfo.getMaxUploadCount());
255-
imagesUploadedProgressbar.setProgressTextFormatPattern
256-
(uploadCount +"/" + levelInfo.getMaxUploadCount() );
274+
if (uploadCount==0){
275+
setZeroAchievements();
276+
}else {
277+
278+
imagesUploadedProgressbar.setProgress
279+
(100*uploadCount/levelInfo.getMaxUploadCount());
280+
imagesUploadedProgressbar.setProgressTextFormatPattern
281+
(uploadCount +"/" + levelInfo.getMaxUploadCount() );
282+
}
283+
284+
}
285+
286+
private void setZeroAchievements() {
287+
AlertDialog.Builder builder=new AlertDialog.Builder(this)
288+
.setMessage("You haven't made any contributions yet")
289+
.setPositiveButton("Ok", (dialog, which) -> {
290+
});
291+
AlertDialog dialog = builder.create();
292+
dialog.show();
293+
imagesUploadedProgressbar.setVisibility(View.INVISIBLE);
294+
imageRevertsProgressbar.setVisibility(View.INVISIBLE);
295+
imagesUsedByWikiProgressBar.setVisibility(View.INVISIBLE);
296+
imageView.setVisibility(View.INVISIBLE);
297+
imageByWikiText.setText(R.string.no_image);
298+
imageRevertedText.setText(R.string.no_image_reverted);
299+
imageUploadedText.setText(R.string.no_image_uploaded);
300+
imageView.setVisibility(View.INVISIBLE);
301+
257302
}
258303

259304
/**
@@ -391,10 +436,10 @@ private void launchAlert(String title, String message){
391436
private boolean checkAccount(){
392437
Account currentAccount = sessionManager.getCurrentAccount();
393438
if (currentAccount == null) {
394-
Timber.d("Current account is null");
395-
ViewUtil.showLongToast(this, getResources().getString(R.string.user_not_logged_in));
396-
sessionManager.forceLogin(this);
397-
return false;
439+
Timber.d("Current account is null");
440+
ViewUtil.showLongToast(this, getResources().getString(R.string.user_not_logged_in));
441+
sessionManager.forceLogin(this);
442+
return false;
398443
}
399444
return true;
400445
}

app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import fr.free.nrw.commons.BuildConfig;
4646
import fr.free.nrw.commons.Media;
4747
import fr.free.nrw.commons.PageTitle;
48+
import fr.free.nrw.commons.achievements.FeaturedImages;
4849
import fr.free.nrw.commons.R;
4950
import fr.free.nrw.commons.achievements.FeedbackResponse;
5051
import fr.free.nrw.commons.auth.AccountUtil;
@@ -63,7 +64,6 @@
6364
import okhttp3.Request;
6465
import okhttp3.Response;
6566
import timber.log.Timber;
66-
6767
import static fr.free.nrw.commons.utils.ContinueUtils.getQueryContinue;
6868

6969
/**
@@ -1002,7 +1002,15 @@ public Single<FeedbackResponse> getAchievements(String userName) {
10021002
if (json == null) {
10031003
return null;
10041004
}
1005-
return gson.fromJson(json, FeedbackResponse.class);
1005+
Timber.d(json);
1006+
try {
1007+
return gson.fromJson(String.valueOf(response.body()), FeedbackResponse.class);
1008+
}
1009+
catch (Exception e){
1010+
return new FeedbackResponse("",0,0,0,new FeaturedImages(0,0),0,"",0);
1011+
}
1012+
1013+
10061014
}
10071015
return null;
10081016
});

app/src/main/res/values/strings.xml

+3
Original file line numberDiff line numberDiff line change
@@ -456,4 +456,7 @@ Upload your first media by touching the camera or gallery icon above.</string>
456456
<item quantity="other">Receiving shared content. Processing the images might take some time depending on the size of the images and your device</item>
457457
</plurals>
458458

459+
<string name="no_image">No images used</string>
460+
<string name="no_image_reverted">No images reverted</string>
461+
<string name="no_image_uploaded">No images uploaded</string>
459462
</resources>

0 commit comments

Comments
 (0)