From be7c850ce3403a4c2931a1fb731f69a6c56c8889 Mon Sep 17 00:00:00 2001 From: Elliott Eggleston Date: Sun, 20 May 2018 06:15:04 -0500 Subject: [PATCH] Error handling for review image/category fetch (#1543) --- .../nrw/commons/review/ReviewActivity.java | 34 ++++++++++++------- app/src/main/res/values/strings.xml | 2 ++ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java index 5b01ea7fa..fafb5f486 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java @@ -32,9 +32,11 @@ import fr.free.nrw.commons.auth.AuthenticatedActivity; import fr.free.nrw.commons.mwapi.MediaResult; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.utils.MediaDataExtractorUtil; +import fr.free.nrw.commons.utils.ViewUtil; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import timber.log.Timber; /** * Created by root on 18.05.2018. @@ -113,17 +115,14 @@ public class ReviewActivity extends AuthenticatedActivity { reviewPager.setCurrentItem(0); Observable.fromCallable(() -> { - Media result = null; + String result = ""; try { - result = mwApi.getRecentRandomImage(); - - //String thumBaseUrl = Utils.makeThumbBaseUrl(result.getFilename()); - //reviewPagerAdapter.currentThumbBasedUrl = thumBaseUrl; - - //Log.d("review", result.getWikiSource()); - + Media media = mwApi.getRecentRandomImage(); + if (media != null) { + result = media.getFilename(); + } } catch (IOException e) { - Log.d("review", e.toString()); + Timber.e("Error fetching recent random image: " + e.toString()); } return result; }) @@ -133,17 +132,26 @@ public class ReviewActivity extends AuthenticatedActivity { return true; } - private void updateImage(Media result) { - reviewController.onImageRefreshed(result.getFilename()); //file name is updated + private void updateImage(String fileName) { + if (fileName.length() == 0) { + ViewUtil.showSnackbar(drawerLayout, R.string.error_review); + return; + } + reviewController.onImageRefreshed(fileName); //file name is updated reviewPagerAdapter.updateFilename(); reviewPager.setCurrentItem(0); Observable.fromCallable(() -> { - MediaResult media = mwApi.fetchMediaByFilename("File:" + result.getFilename()); + MediaResult media = mwApi.fetchMediaByFilename("File:" + fileName); return MediaDataExtractorUtil.extractCategories(media.getWikiSource()); }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::updateCategories); + .subscribe(this::updateCategories, this::categoryFetchError); + } + + private void categoryFetchError(Throwable throwable) { + Timber.e(throwable, "Error fetching categories"); + ViewUtil.showSnackbar(drawerLayout, R.string.error_review_categories); } private void updateCategories(ArrayList categories) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 22de99b10..d32ef9d76 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -292,6 +292,8 @@ Internet unavailable Internet available Error fetching notifications + Error fetching image for review. Press refresh to try again. + Error fetching image categories for review. Press refresh to try again. No notifications found Translate]]> Languages