Fix Mapbox reverse geocoding when address is null

pull/1432/head
Alex Baker 5 years ago
parent 9fe67f5593
commit e16cadc374

@ -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
}

@ -13,6 +13,7 @@ import org.tasks.DebugNetworkInterceptor
import org.tasks.R import org.tasks.R
import org.tasks.data.Place import org.tasks.data.Place
import org.tasks.data.Place.Companion.newPlace import org.tasks.data.Place.Companion.newPlace
import org.tasks.extensions.JsonObject.getStringOrNull
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import java.io.IOException import java.io.IOException
import javax.inject.Inject import javax.inject.Inject
@ -52,7 +53,10 @@ class GeocoderMapbox @Inject constructor(
val types = feature.get("place_type").asStringList val types = feature.get("place_type").asStringList
val text = feature.get("text").asString val text = feature.get("text").asString
name = if (types.contains("address")) { name = if (types.contains("address")) {
"${feature.get("address").asString} $text" feature
.getStringOrNull("address")
?.let { "$it $text" }
?: text
} else { } else {
text text
} }

@ -2,7 +2,6 @@ package org.tasks.location
import android.content.Context import android.content.Context
import com.google.gson.JsonElement import com.google.gson.JsonElement
import com.google.gson.JsonObject
import com.google.gson.JsonParser import com.google.gson.JsonParser
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -12,6 +11,8 @@ import org.tasks.BuildConfig
import org.tasks.R import org.tasks.R
import org.tasks.data.Place import org.tasks.data.Place
import org.tasks.data.Place.Companion.newPlace 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.HttpClientFactory
import org.tasks.http.HttpException import org.tasks.http.HttpException
import javax.inject.Inject import javax.inject.Inject
@ -63,9 +64,5 @@ class GeocoderNominatim @Inject constructor(
private val JsonElement.asCoordinates: Pair<Double, Double> private val JsonElement.asCoordinates: Pair<Double, Double>
get() = asJsonArray.let { Pair(it[0].asDouble, it[1].asDouble) } 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
} }
} }
Loading…
Cancel
Save