Skip to content

Commit 1614f09

Browse files
committed
Optimise API calls and fix tests
1 parent 4df3bf4 commit 1614f09

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
import android.widget.ProgressBar;
1414
import android.widget.TextView;
1515

16+
import androidx.appcompat.widget.Toolbar;
17+
import androidx.drawerlayout.widget.DrawerLayout;
18+
1619
import com.facebook.drawee.view.SimpleDraweeView;
1720
import com.google.android.material.navigation.NavigationView;
1821
import com.viewpagerindicator.CirclePageIndicator;
@@ -21,8 +24,6 @@
2124

2225
import javax.inject.Inject;
2326

24-
import androidx.appcompat.widget.Toolbar;
25-
import androidx.drawerlayout.widget.DrawerLayout;
2627
import butterknife.BindView;
2728
import butterknife.ButterKnife;
2829
import fr.free.nrw.commons.Media;
@@ -143,7 +144,11 @@ public boolean runRandomizer() {
143144
compositeDisposable.add(reviewHelper.getRandomMedia()
144145
.subscribeOn(Schedulers.io())
145146
.observeOn(AndroidSchedulers.mainThread())
146-
.subscribe(this::updateImage));
147+
.subscribe(media -> {
148+
if (media != null) {
149+
updateImage(media);
150+
}
151+
}));
147152
return true;
148153
}
149154

app/src/main/java/fr/free/nrw/commons/review/ReviewHelper.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.free.nrw.commons.review;
22

33

4+
import org.apache.commons.lang3.StringUtils;
45
import org.wikipedia.dataclient.mwapi.MwQueryPage;
56
import org.wikipedia.dataclient.mwapi.RecentChange;
67
import org.wikipedia.util.DateUtil;
@@ -16,11 +17,9 @@
1617
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
1718
import io.reactivex.Observable;
1819
import io.reactivex.Single;
19-
import io.reactivex.functions.Predicate;
2020

2121
@Singleton
2222
public class ReviewHelper {
23-
private static final int MAX_RANDOM_TRIES = 5;
2423

2524
private static final String[] imageExtensions = new String[]{".jpg", ".jpeg", ".png"};
2625

@@ -73,21 +72,23 @@ private Observable<RecentChange> getRecentChanges() {
7372
public Single<Media> getRandomMedia() {
7473
return getRecentChanges()
7574
.flatMapSingle(change -> getRandomMediaFromRecentChange(change))
76-
.retry(MAX_RANDOM_TRIES, new Predicate<Throwable>() {
77-
@Override
78-
public boolean test(Throwable throwable) throws Exception {
79-
return throwable instanceof RuntimeException;
80-
}
81-
})
75+
.onExceptionResumeNext(Observable.just(new Media("")))
76+
.filter(media -> !StringUtils.isBlank(media.getFilename()))
8277
.firstOrError();
8378
}
8479

80+
/**
81+
* Returns a proper Media object if the file is not already nominated for deletion
82+
* Else it returns an empty Media object
83+
* @param recentChange
84+
* @return
85+
*/
8586
private Single<Media> getRandomMediaFromRecentChange(RecentChange recentChange) {
8687
return Single.just(recentChange)
8788
.flatMap(change -> mediaWikiApi.pageExists("Commons:Deletion_requests/" + change.getTitle()))
8889
.flatMap(isDeleted -> {
8990
if (isDeleted) {
90-
throw new RuntimeException("Nominated for deletion");
91+
return Single.just(new Media(""));
9192
}
9293
return okHttpJsonApiClient.getMedia(recentChange.getTitle(), false);
9394
});

app/src/test/kotlin/fr/free/nrw/commons/review/ReviewHelperTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@ class ReviewHelperTest {
6363
`when`(reviewInterface?.getFirstRevisionOfFile(ArgumentMatchers.anyString()))
6464
.thenReturn(Observable.just(mockResponse))
6565

66+
val media = mock(Media::class.java)
67+
`when`(media.filename).thenReturn("File:Test.jpg")
6668
`when`(okHttpJsonApiClient?.getMedia(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean()))
67-
.thenReturn(Single.just(mock(Media::class.java)))
69+
.thenReturn(Single.just(media))
6870
}
6971

7072
/**

0 commit comments

Comments
 (0)