From e16cadc374f5339b7ae29e13b8d738938a4d7aa0 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 22 Mar 2021 12:18:06 -0500 Subject: [PATCH] Fix Mapbox reverse geocoding when address is null --- app/src/main/java/org/tasks/extensions/JsonObject.kt | 9 +++++++++ app/src/main/java/org/tasks/location/GeocoderMapbox.kt | 6 +++++- .../main/java/org/tasks/location/GeocoderNominatim.kt | 7 ++----- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/org/tasks/extensions/JsonObject.kt diff --git a/app/src/main/java/org/tasks/extensions/JsonObject.kt b/app/src/main/java/org/tasks/extensions/JsonObject.kt new file mode 100644 index 000000000..cf4d7d410 --- /dev/null +++ b/app/src/main/java/org/tasks/extensions/JsonObject.kt @@ -0,0 +1,9 @@ +package org.tasks.extensions + +import com.google.gson.JsonObject + +object JsonObject { + fun JsonObject.getStringOrNull(key: String): String? = getOrNull(key)?.asString + + fun JsonObject.getOrNull(key: String) = if (has(key)) get(key) else null +} diff --git a/app/src/main/java/org/tasks/location/GeocoderMapbox.kt b/app/src/main/java/org/tasks/location/GeocoderMapbox.kt index 6da26878c..fcc73ecaa 100644 --- a/app/src/main/java/org/tasks/location/GeocoderMapbox.kt +++ b/app/src/main/java/org/tasks/location/GeocoderMapbox.kt @@ -13,6 +13,7 @@ import org.tasks.DebugNetworkInterceptor import org.tasks.R import org.tasks.data.Place import org.tasks.data.Place.Companion.newPlace +import org.tasks.extensions.JsonObject.getStringOrNull import org.tasks.preferences.Preferences import java.io.IOException import javax.inject.Inject @@ -52,7 +53,10 @@ class GeocoderMapbox @Inject constructor( val types = feature.get("place_type").asStringList val text = feature.get("text").asString name = if (types.contains("address")) { - "${feature.get("address").asString} $text" + feature + .getStringOrNull("address") + ?.let { "$it $text" } + ?: text } else { text } diff --git a/app/src/main/java/org/tasks/location/GeocoderNominatim.kt b/app/src/main/java/org/tasks/location/GeocoderNominatim.kt index d114b76a9..0d89919f5 100644 --- a/app/src/main/java/org/tasks/location/GeocoderNominatim.kt +++ b/app/src/main/java/org/tasks/location/GeocoderNominatim.kt @@ -2,7 +2,6 @@ package org.tasks.location import android.content.Context import com.google.gson.JsonElement -import com.google.gson.JsonObject import com.google.gson.JsonParser import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers @@ -12,6 +11,8 @@ import org.tasks.BuildConfig import org.tasks.R import org.tasks.data.Place import org.tasks.data.Place.Companion.newPlace +import org.tasks.extensions.JsonObject.getOrNull +import org.tasks.extensions.JsonObject.getStringOrNull import org.tasks.http.HttpClientFactory import org.tasks.http.HttpException import javax.inject.Inject @@ -63,9 +64,5 @@ class GeocoderNominatim @Inject constructor( private val JsonElement.asCoordinates: Pair get() = asJsonArray.let { Pair(it[0].asDouble, it[1].asDouble) } - - private fun JsonObject.getStringOrNull(key: String): String? = getOrNull(key)?.asString - - private fun JsonObject.getOrNull(key: String) = if (has(key)) get(key) else null } } \ No newline at end of file