From eafb36386367c86061b6a12ccdae25836e38eec3 Mon Sep 17 00:00:00 2001 From: Matija Nalis Date: Mon, 15 Jul 2024 01:08:26 +0200 Subject: [PATCH] original logic fix from https://github.com/commons-app/apps-android-commons/pull/5761#pullrequestreview-2144120347 --- .../nrw/commons/category/CategoriesModel.kt | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoriesModel.kt b/app/src/main/java/fr/free/nrw/commons/category/CategoriesModel.kt index 77656b13e..3328ace6f 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoriesModel.kt +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoriesModel.kt @@ -40,17 +40,26 @@ class CategoriesModel @Inject constructor( val prevYearInString = prevYear.toString() Timber.d("Previous year: %s", prevYearInString) - //Check if item contains a 4-digit word anywhere within the string (.* is wildcard) (Issue #47) - //And that item does not equal the current year or previous year - //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) - //Check if the year in the form of XX(X)0s is relevant, i.e. in the 2000s or 2010s as stated in Issue #1029 - return item.matches(".*(19|20)\\d{2}.*".toRegex()) - && !item.contains(curYearInString) - && !item.contains(prevYearInString) - || item.matches("(.*)needing(.*)".toRegex()) - || item.matches("(.*)taken on(.*)".toRegex()) - || item.matches(".*0s.*".toRegex()) - && !item.matches(".*20[0-2]0s.*".toRegex()) + val is20xxsYear = item.matches(".*0s.*".toRegex()) + + if (is20xxsYear) { + //Check if the year in the form of XX(X)0s is relevant, i.e. in the 2000s or 2010s as stated in Issue #1029 + // If not, check if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) + return !item.matches(".*20[0-2]0s.*".toRegex()) + || item.matches("(.*)needing(.*)".toRegex()) + || item.matches("(.*)taken on(.*)".toRegex()) + } + else { + // If it is not an year in 20xxs form, then check if item contains a 4-digit word + // anywhere within the string (.* is wildcard) (Issue #47) + // And that item does not equal the current year or previous year + // And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) + return item.matches(".*(19|20)\\d{2}.*".toRegex()) + && !item.contains(yearInString) + && !item.contains(prevYearInString) + || item.matches("(.*)needing(.*)".toRegex()) + || item.matches("(.*)taken on(.*)".toRegex()) + } } /**