Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/LocationRepository.kt +9 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext import java.security.MessageDigest import javax.inject.Inject import javax.inject.Inject import javax.inject.Singleton import javax.inject.Singleton Loading Loading @@ -464,7 +465,10 @@ class LocationRepository @Inject constructor( fun createSearchResultPlace(result: GeocodeResult): Place { fun createSearchResultPlace(result: GeocodeResult): Place { val openingHours = result.properties["opening_hours"] val openingHours = result.properties["opening_hours"] val rawIdSource = "${result.displayName}_${"%.5f".format(result.latitude)}_${"%.5f".format(result.longitude)}" val deterministicId = generateStableId(rawIdSource) return Place( return Place( id = deterministicId, name = result.displayName, name = result.displayName, description = mapOsmTagsToDescription(result.properties), description = mapOsmTagsToDescription(result.properties), icon = "search", icon = "search", Loading @@ -476,6 +480,11 @@ class LocationRepository @Inject constructor( openingHours = openingHours, openingHours = openingHours, ) ) } } private fun generateStableId(input: String): String { return MessageDigest.getInstance("SHA-256") .digest(input.toByteArray()) .fold("") { str, it -> str + "%02x".format(it) } } fun mapOsmTagsToDescription(properties: Map<String, String>): String { fun mapOsmTagsToDescription(properties: Map<String, String>): String { Log.d("LocationRepository", "$properties") Log.d("LocationRepository", "$properties") Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/RecentSearch.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ data class RecentSearch( val timestamp = System.currentTimeMillis() val timestamp = System.currentTimeMillis() return RecentSearch( return RecentSearch( id = UUID.randomUUID().toString(), id = place.id ?: UUID.randomUUID().toString(), name = place.name, name = place.name, description = place.description, description = place.description, icon = place.icon, icon = place.icon, Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/SavedPlace.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -55,7 +55,7 @@ data class SavedPlace( val timestamp = System.currentTimeMillis() val timestamp = System.currentTimeMillis() return SavedPlace( return SavedPlace( id = UUID.randomUUID().toString(), id = place.id ?: UUID.randomUUID().toString(), placeId = 0, placeId = 0, customName = null, customName = null, customDescription = null, customDescription = null, Loading Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/LocationRepository.kt +9 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext import java.security.MessageDigest import javax.inject.Inject import javax.inject.Inject import javax.inject.Singleton import javax.inject.Singleton Loading Loading @@ -464,7 +465,10 @@ class LocationRepository @Inject constructor( fun createSearchResultPlace(result: GeocodeResult): Place { fun createSearchResultPlace(result: GeocodeResult): Place { val openingHours = result.properties["opening_hours"] val openingHours = result.properties["opening_hours"] val rawIdSource = "${result.displayName}_${"%.5f".format(result.latitude)}_${"%.5f".format(result.longitude)}" val deterministicId = generateStableId(rawIdSource) return Place( return Place( id = deterministicId, name = result.displayName, name = result.displayName, description = mapOsmTagsToDescription(result.properties), description = mapOsmTagsToDescription(result.properties), icon = "search", icon = "search", Loading @@ -476,6 +480,11 @@ class LocationRepository @Inject constructor( openingHours = openingHours, openingHours = openingHours, ) ) } } private fun generateStableId(input: String): String { return MessageDigest.getInstance("SHA-256") .digest(input.toByteArray()) .fold("") { str, it -> str + "%02x".format(it) } } fun mapOsmTagsToDescription(properties: Map<String, String>): String { fun mapOsmTagsToDescription(properties: Map<String, String>): String { Log.d("LocationRepository", "$properties") Log.d("LocationRepository", "$properties") Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/RecentSearch.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ data class RecentSearch( val timestamp = System.currentTimeMillis() val timestamp = System.currentTimeMillis() return RecentSearch( return RecentSearch( id = UUID.randomUUID().toString(), id = place.id ?: UUID.randomUUID().toString(), name = place.name, name = place.name, description = place.description, description = place.description, icon = place.icon, icon = place.icon, Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/SavedPlace.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -55,7 +55,7 @@ data class SavedPlace( val timestamp = System.currentTimeMillis() val timestamp = System.currentTimeMillis() return SavedPlace( return SavedPlace( id = UUID.randomUUID().toString(), id = place.id ?: UUID.randomUUID().toString(), placeId = 0, placeId = 0, customName = null, customName = null, customDescription = null, customDescription = null, Loading