From 71cbc90b8160d6ba4dad8ba9a6ee448109cc2fb0 Mon Sep 17 00:00:00 2001 From: albendz Date: Sat, 14 Apr 2018 19:30:37 -0700 Subject: [PATCH 1/3] Try to get the localized version of the wikipedia article before defaulting to the English version. Tested with Spanish on physical Android device. Other notes: Difficulties building with gradle due to dexcount plugin: https://github.com/KeepSafe/dexcount-gradle-plugin/issues/234. In testing, disabled the plugin. --- app/src/main/resources/queries/nearby_query.rq | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/resources/queries/nearby_query.rq b/app/src/main/resources/queries/nearby_query.rq index 0453005e8b..746048b676 100644 --- a/app/src/main/resources/queries/nearby_query.rq +++ b/app/src/main/resources/queries/nearby_query.rq @@ -39,6 +39,12 @@ SELECT # Get emoji OPTIONAL { ?classId wdt:P487 ?emoji0. } OPTIONAL { ?classId wdt:P279*/wdt:P487 ?emoji1. } + + OPTIONAL { + ?wikipediaArticle schema:about ?item ; + schema:isPartOf . + SERVICE wikibase:label { bd:serviceParam wikibase:language "${LANG}" } + } OPTIONAL { ?wikipediaArticle schema:about ?item ; schema:isPartOf . From 17786a0741cab931ba32ae7af1350fc0d299a72e Mon Sep 17 00:00:00 2001 From: albendz Date: Mon, 30 Apr 2018 21:29:15 -0700 Subject: [PATCH 2/3] Update article fetch to not include unnecessary SERVICE line --- app/src/main/resources/queries/nearby_query.rq | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/resources/queries/nearby_query.rq b/app/src/main/resources/queries/nearby_query.rq index 746048b676..b11f0985af 100644 --- a/app/src/main/resources/queries/nearby_query.rq +++ b/app/src/main/resources/queries/nearby_query.rq @@ -43,7 +43,6 @@ SELECT OPTIONAL { ?wikipediaArticle schema:about ?item ; schema:isPartOf . - SERVICE wikibase:label { bd:serviceParam wikibase:language "${LANG}" } } OPTIONAL { ?wikipediaArticle schema:about ?item ; From f062dc6b66e23d4e7e709d33c8a95894470a4d94 Mon Sep 17 00:00:00 2001 From: albendz Date: Sat, 7 Jul 2018 19:54:38 -0700 Subject: [PATCH 3/3] Add checks for local file, check for string length --- .../fr/free/nrw/commons/MediaWikiImageView.java | 14 ++++++++++---- app/src/main/java/fr/free/nrw/commons/Utils.java | 6 +++++- .../nrw/commons/media/MediaDetailFragment.java | 4 ++++ .../test/kotlin/fr/free/nrw/commons/UtilsTest.kt | 4 ++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java index 35d1977821..5e89e19a54 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java @@ -51,10 +51,16 @@ public void setMedia(Media media) { return; } - if (thumbnailUrlCache.get(media.getFilename()) != null) { - setImageUrl(thumbnailUrlCache.get(media.getFilename())); - } else { - setImageUrl(null); + if(media.getFilename() != null) { + if (thumbnailUrlCache.get(media.getFilename()) != null) { + setImageUrl(thumbnailUrlCache.get(media.getFilename())); + } else { + setImageUrl(null); + currentThumbnailTask = new ThumbnailFetchTask(media, mwApi); + currentThumbnailTask.execute(media.getFilename()); + } + } else { // local image + setImageUrl(media.getLocalUri().toString()); currentThumbnailTask = new ThumbnailFetchTask(media, mwApi); currentThumbnailTask.execute(media.getFilename()); } diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index 9f89586c09..9447d173a0 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -76,7 +76,11 @@ public static String urlEncode(String url) { * @return string with capitalized first character */ public static String capitalize(String string) { - return string.substring(0, 1).toUpperCase(Locale.getDefault()) + string.substring(1); + if(string.length() > 0) { + return string.substring(0, 1).toUpperCase(Locale.getDefault()) + string.substring(1); + } else { + return string; + } } /** diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index d5b1cc0ce7..4ae37ecfc3 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -245,6 +245,10 @@ protected void onPreExecute() { @Override protected Boolean doInBackground(Void... voids) { + // Local files have no filename yet + if(media.getFilename() == null) { + return Boolean.FALSE; + } try { extractor.fetch(media.getFilename(), licenseList); return Boolean.TRUE; diff --git a/app/src/test/kotlin/fr/free/nrw/commons/UtilsTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/UtilsTest.kt index 7efb48c24f..84e3ae173e 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/UtilsTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/UtilsTest.kt @@ -28,4 +28,8 @@ class UtilsTest { @Test fun `capitalize - pass Japanase characters`() { Assert.assertThat(Utils.capitalize("こんにちは"), _is("こんにちは")) } + + @Test fun `capitalize does not fail on empty string`() { + Assert.assertThat(Utils.capitalize(""), _is("")) + } }