77package com.nextcloud.talk.viewmodels
88
99import android.util.Log
10- import androidx.lifecycle.LiveData
11- import androidx.lifecycle.MutableLiveData
1210import androidx.lifecycle.ViewModel
1311import fr.dudie.nominatim.client.TalkJsonNominatimClient
1412import fr.dudie.nominatim.model.Address
1513import kotlinx.coroutines.CoroutineScope
1614import kotlinx.coroutines.Dispatchers
15+ import kotlinx.coroutines.flow.MutableStateFlow
16+ import kotlinx.coroutines.flow.StateFlow
1717import kotlinx.coroutines.launch
1818import okhttp3.OkHttpClient
1919import java.io.IOException
2020
2121class GeoCodingViewModel : ViewModel () {
22- private val geocodingResultsLiveData = MutableLiveData <List <Address >>()
22+ private val _geocodingResults = MutableStateFlow <List <Address >>(emptyList())
23+ val geocodingResults: StateFlow <List <Address >> = _geocodingResults
2324 private val nominatimClient: TalkJsonNominatimClient
2425 private val okHttpClient: OkHttpClient = OkHttpClient .Builder ().build()
25- private var geocodingResults: List <Address > = ArrayList ()
2626 private var query: String = " "
27- fun getGeocodingResultsLiveData (): LiveData <List <Address >> = geocodingResultsLiveData
2827
2928 fun getQuery (): String = query
3029
3130 fun setQuery (query : String ) {
3231 this .query = query
3332 }
3433
35- fun getGeocodingResults (): List <Address > = geocodingResults
36-
3734 init {
3835 nominatimClient = TalkJsonNominatimClient (
3936 " https://nominatim.openstreetmap.org/" ,
@@ -47,8 +44,7 @@ class GeoCodingViewModel : ViewModel() {
4744 CoroutineScope (Dispatchers .IO ).launch {
4845 try {
4946 val results = nominatimClient.search(query) as ArrayList <Address >
50- geocodingResults = results
51- geocodingResultsLiveData.postValue(results)
47+ _geocodingResults .value = results
5248 } catch (e: IOException ) {
5349 Log .e(TAG , " Failed to get geocoded addresses" , e)
5450 }
0 commit comments