diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt b/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt index aeb62b127..2af925317 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryClient.kt @@ -92,8 +92,9 @@ class CategoryClient @Inject constructor(private val categoryInterface: Category it.query()?.pages() ?: emptyList() } .map { - it.map { page -> page.title().replace(CATEGORY_PREFIX, "") } + it.filter { + page -> page.categoryInfo() == null || !page.categoryInfo().isHidden + }.map { page -> page.title().replace(CATEGORY_PREFIX, "") } } } - } diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java index a9f030dec..efc77e1df 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryInterface.java @@ -32,7 +32,7 @@ public interface CategoryInterface { * @return */ @GET("w/api.php?action=query&format=json&formatversion=2" - + "&generator=allcategories") + + "&generator=allcategories&prop=categoryinfo") Single searchCategoriesForPrefix(@Query("gacprefix") String prefix, @Query("gaclimit") int itemLimit, @Query("gacoffset") int offset); diff --git a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java index e44a10a6f..fceeed938 100644 --- a/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java +++ b/data-client/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.java @@ -22,6 +22,7 @@ public class MwQueryPage extends BaseModel { @SuppressWarnings("unused") private int ns; @SuppressWarnings("unused") private int index; @SuppressWarnings("unused,NullableProblems") @NonNull private String title; + @SuppressWarnings("unused,NullableProblems") @NonNull private CategoryInfo categoryinfo; @SuppressWarnings("unused") @Nullable private List langlinks; @SuppressWarnings("unused") @Nullable private List revisions; @SuppressWarnings("unused") @Nullable private List coordinates; @@ -42,6 +43,10 @@ public class MwQueryPage extends BaseModel { return title; } + @NonNull public CategoryInfo categoryInfo() { + return categoryinfo; + } + public int index() { return index; } @@ -185,6 +190,17 @@ public class MwQueryPage extends BaseModel { } } + public static class CategoryInfo { + @SuppressWarnings("unused") private boolean hidden; + @SuppressWarnings("unused") private int size; + @SuppressWarnings("unused") private int pages; + @SuppressWarnings("unused") private int files; + @SuppressWarnings("unused") private int subcats; + public boolean isHidden() { + return hidden; + } + } + static class Thumbnail { @SuppressWarnings("unused") private String source; @SuppressWarnings("unused") private int width;