Error handling for review image/category fetch (#1543)

This commit is contained in:
Elliott Eggleston 2018-05-20 06:15:04 -05:00 committed by maskara
parent 76e9708025
commit be7c850ce3
2 changed files with 23 additions and 13 deletions

View file

@ -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<String> categories) {

View file

@ -292,6 +292,8 @@
<string name="no_internet">Internet unavailable</string>
<string name="internet_established">Internet available</string>
<string name="error_notifications">Error fetching notifications</string>
<string name="error_review">Error fetching image for review. Press refresh to try again.</string>
<string name="error_review_categories">Error fetching image categories for review. Press refresh to try again.</string>
<string name="no_notifications">No notifications found</string>
<string name="about_translate"><![CDATA[<u>Translate</u>]]></string>
<string name="about_translate_title">Languages</string>