Skip to content

Commit c594995

Browse files
* Concat category search with search with image title list and default categories
1 parent 32715d9 commit c594995

File tree

4 files changed

+69
-5
lines changed

4 files changed

+69
-5
lines changed

app/src/main/java/fr/free/nrw/commons/category/CategoriesModel.java

+34
Original file line numberDiff line numberDiff line change
@@ -255,4 +255,38 @@ public void cleanUp() {
255255
this.categoriesCache.clear();
256256
this.selectedCategories.clear();
257257
}
258+
259+
/**
260+
* Search for categories
261+
*/
262+
public Observable<CategoryItem> searchCategories(String query, List<String> imageTitleList) {
263+
if (TextUtils.isEmpty(query)) {
264+
return gpsCategories()
265+
.concatWith(titleCategories(imageTitleList))
266+
.concatWith(recentCategories());
267+
}
268+
269+
return mwApi
270+
.searchCategories(query, SEARCH_CATS_LIMIT)
271+
.map(s -> new CategoryItem(s, false));
272+
}
273+
274+
/**
275+
* Returns default categories
276+
*/
277+
public Observable<CategoryItem> getDefaultCategories(List<String> titleList) {
278+
Observable<CategoryItem> directCategories = directCategories();
279+
if (hasDirectCategories()) {
280+
Timber.d("Image has direct Categories");
281+
return directCategories
282+
.concatWith(gpsCategories())
283+
.concatWith(titleCategories(titleList))
284+
.concatWith(recentCategories());
285+
} else {
286+
Timber.d("Image has no direct Categories");
287+
return gpsCategories()
288+
.concatWith(titleCategories(titleList))
289+
.concatWith(recentCategories());
290+
}
291+
}
258292
}

app/src/main/java/fr/free/nrw/commons/repository/UploadRemoteDataSource.java

+18-3
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111
import fr.free.nrw.commons.upload.UploadModel.UploadItem;
1212
import io.reactivex.Observable;
1313
import io.reactivex.Single;
14-
1514
import java.util.Comparator;
1615
import java.util.List;
17-
1816
import javax.inject.Inject;
1917
import javax.inject.Singleton;
2018

@@ -167,7 +165,7 @@ public Observable<UploadItem> preProcessImage(UploadableFile uploadableFile, Pla
167165
}
168166

169167
/**
170-
* ask the UplaodModel for the image quality of the UploadItem
168+
* ask the UploadModel for the image quality of the UploadItem
171169
*
172170
* @param uploadItem
173171
* @param shouldValidateTitle
@@ -176,4 +174,21 @@ public Observable<UploadItem> preProcessImage(UploadableFile uploadableFile, Pla
176174
public Single<Integer> getImageQuality(UploadItem uploadItem, boolean shouldValidateTitle) {
177175
return uploadModel.getImageQuality(uploadItem, shouldValidateTitle);
178176
}
177+
178+
/**
179+
* Ask the CategoriesModel to search categories
180+
* @param query
181+
* @param imageTitleList
182+
* @return
183+
*/
184+
public Observable<CategoryItem> searchCategories(String query, List<String> imageTitleList) {
185+
return categoriesModel.searchCategories(query, imageTitleList);
186+
}
187+
188+
/**
189+
* Ask the CategoriesModel for default categories
190+
*/
191+
public Observable<CategoryItem> getDefaultCategories(List<String> imageTitleList) {
192+
return categoriesModel.getDefaultCategories(imageTitleList);
193+
}
179194
}

app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@
88
import fr.free.nrw.commons.upload.UploadModel.UploadItem;
99
import io.reactivex.Observable;
1010
import io.reactivex.Single;
11-
1211
import java.util.Comparator;
1312
import java.util.List;
14-
1513
import javax.inject.Inject;
1614
import javax.inject.Singleton;
1715

@@ -262,4 +260,18 @@ public String getValue(String key, String value) {
262260
public void setSelectedLicense(String licenseName) {
263261
localDataSource.setSelectedLicense(licenseName);
264262
}
263+
264+
/**
265+
* Ask the RemoteDataSource to search for categories
266+
*/
267+
public Observable<CategoryItem> searchCategories(String query, List<String> imageTitleList) {
268+
return remoteDataSource.searchCategories(query, imageTitleList);
269+
}
270+
271+
/**
272+
* Ask the RemoteDataSource to get default categories
273+
*/
274+
public Observable<CategoryItem> getDefaultCategories(List<String> imageTitleList) {
275+
return remoteDataSource.getDefaultCategories(imageTitleList);
276+
}
265277
}

app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.java

+3
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ public void searchForCategories(String query) {
8080
.observeOn(ioScheduler)
8181
.concatWith(
8282
repository.searchAll(query, imageTitleList)
83+
.mergeWith(repository.searchCategories(query, imageTitleList))
84+
.concatWith(TextUtils.isEmpty(query) ? repository
85+
.getDefaultCategories(imageTitleList) : Observable.empty())
8386
)
8487
.filter(categoryItem -> !repository.containsYear(categoryItem.getName()))
8588
.distinct();

0 commit comments

Comments
 (0)