Skip to content

Commit

Permalink
don't crash when last-selected value in overlay does not exist anymore (
Browse files Browse the repository at this point in the history
fixes #5604)

regression from #5596 but this commit solves the issue generally by just returning null if last-selected value is unknown
  • Loading branch information
westnordost committed Apr 29, 2024
1 parent dd0823d commit 2a52af4
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 7 deletions.
3 changes: 0 additions & 3 deletions CODEOWNERS

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import de.westnordost.streetcomplete.osm.building.toItems
import de.westnordost.streetcomplete.overlays.AGroupedImageSelectOverlayForm
import de.westnordost.streetcomplete.util.LastPickedValuesStore
import de.westnordost.streetcomplete.util.getNameAndLocationLabel
import de.westnordost.streetcomplete.util.ktx.valueOfOrNull
import de.westnordost.streetcomplete.util.mostCommonWithin
import de.westnordost.streetcomplete.util.padWith
import de.westnordost.streetcomplete.view.image_select.GroupableDisplayItem
Expand Down Expand Up @@ -46,7 +47,7 @@ class BuildingsOverlayForm : AGroupedImageSelectOverlayForm<BuildingType>() {
prefs,
key = javaClass.simpleName,
serialize = { it.value!!.name },
deserialize = { BuildingType.valueOf(it).asItem() }
deserialize = { valueOfOrNull<BuildingType>(it)?.asItem() }
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import de.westnordost.streetcomplete.osm.cycleway_separate.asItem
import de.westnordost.streetcomplete.osm.cycleway_separate.parseSeparateCycleway
import de.westnordost.streetcomplete.overlays.AImageSelectOverlayForm
import de.westnordost.streetcomplete.util.LastPickedValuesStore
import de.westnordost.streetcomplete.util.ktx.valueOfOrNull
import de.westnordost.streetcomplete.view.image_select.DisplayItem
import org.koin.android.ext.android.inject

Expand Down Expand Up @@ -41,7 +42,7 @@ class SeparateCyclewayForm : AImageSelectOverlayForm<SeparateCycleway>() {
prefs,
key = javaClass.simpleName,
serialize = { it.value!!.name },
deserialize = { SeparateCycleway.valueOf(it).asItem(countryInfo.isLeftHandTraffic) }
deserialize = { valueOfOrNull<SeparateCycleway>(it)?.asItem(countryInfo.isLeftHandTraffic) }
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import de.westnordost.streetcomplete.overlays.IAnswerItem
import de.westnordost.streetcomplete.util.LastPickedValuesStore
import de.westnordost.streetcomplete.util.getLocalesForFeatureDictionary
import de.westnordost.streetcomplete.util.ktx.couldBeSteps
import de.westnordost.streetcomplete.util.ktx.valueOfOrNull
import de.westnordost.streetcomplete.view.setImage
import org.koin.android.ext.android.inject

Expand Down Expand Up @@ -79,7 +80,7 @@ class SurfaceOverlayForm : AbstractOverlayForm() {
prefs,
key = javaClass.simpleName,
serialize = { it.name },
deserialize = { Surface.valueOf(it) }
deserialize = { valueOfOrNull<Surface>(it) }
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import de.westnordost.streetcomplete.overlays.AImageSelectOverlayForm
import de.westnordost.streetcomplete.overlays.AnswerItem
import de.westnordost.streetcomplete.util.LastPickedValuesStore
import de.westnordost.streetcomplete.util.ktx.couldBeSteps
import de.westnordost.streetcomplete.util.ktx.valueOfOrNull
import de.westnordost.streetcomplete.view.image_select.DisplayItem
import org.koin.android.ext.android.inject

Expand Down Expand Up @@ -48,7 +49,7 @@ class WayLitOverlayForm : AImageSelectOverlayForm<LitStatus>() {
prefs,
key = javaClass.simpleName,
serialize = { it.value!!.name },
deserialize = { LitStatus.valueOf(it).asItem() }
deserialize = { valueOfOrNull<LitStatus>(it)?.asItem() }
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package de.westnordost.streetcomplete.util.ktx

inline fun <reified E : Enum<E>> valueOfOrNull(str: String): E? =
enumValues<E>().firstOrNull { str == it.name }

0 comments on commit 2a52af4

Please sign in to comment.