From 87769db8e5afa7e7a70a1e78eb4db2cf9754997e Mon Sep 17 00:00:00 2001 From: MinJung Date: Wed, 21 Feb 2024 01:00:02 +0900 Subject: [PATCH] [feat] viewmodels --- .../viewmodels/LocationViewModel.kt | 23 +++++++++++ .../sungdongwalk/viewmodels/PlaceViewModel.kt | 34 ++++++++++++++++ .../viewmodels/SearchViewModel.kt | 40 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 app/src/main/java/com/example/sungdongwalk/viewmodels/LocationViewModel.kt create mode 100644 app/src/main/java/com/example/sungdongwalk/viewmodels/PlaceViewModel.kt create mode 100644 app/src/main/java/com/example/sungdongwalk/viewmodels/SearchViewModel.kt diff --git a/app/src/main/java/com/example/sungdongwalk/viewmodels/LocationViewModel.kt b/app/src/main/java/com/example/sungdongwalk/viewmodels/LocationViewModel.kt new file mode 100644 index 0000000..b0b0736 --- /dev/null +++ b/app/src/main/java/com/example/sungdongwalk/viewmodels/LocationViewModel.kt @@ -0,0 +1,23 @@ +package com.example.sungdongwalk.viewmodels + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.example.sungdongwalk.location.LocationManager +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class LocationViewModel: ViewModel(){ + + companion object{ + val instance = LocationViewModel() + } + + private val _location = MutableStateFlow(Pair("","")) + val location : StateFlow> = _location + fun updateLocation(longitude: Double, latitude: Double){ + viewModelScope.launch { + _location.emit(Pair(longitude.toString(), latitude.toString())) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/sungdongwalk/viewmodels/PlaceViewModel.kt b/app/src/main/java/com/example/sungdongwalk/viewmodels/PlaceViewModel.kt new file mode 100644 index 0000000..43c9b6d --- /dev/null +++ b/app/src/main/java/com/example/sungdongwalk/viewmodels/PlaceViewModel.kt @@ -0,0 +1,34 @@ +package com.example.sungdongwalk.viewmodels + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.example.sungdongwalk.api.Dto +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +class PlaceViewModel: ViewModel(){ + + companion object{ + val instance = PlaceViewModel() + } + + private val _places = MutableStateFlow>(listOf()) + val places : StateFlow> = _places + + fun updatePlaces(newPlaces: List){ + viewModelScope.launch { + _places.emit(newPlaces) + } + } + + private val _markers = MutableStateFlow>(listOf()) + val markers : StateFlow> = _markers + + fun updateMarkers(newMarkers: List){ + viewModelScope.launch { + _markers.emit(newMarkers) + println(newMarkers) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/sungdongwalk/viewmodels/SearchViewModel.kt b/app/src/main/java/com/example/sungdongwalk/viewmodels/SearchViewModel.kt new file mode 100644 index 0000000..8dc3db2 --- /dev/null +++ b/app/src/main/java/com/example/sungdongwalk/viewmodels/SearchViewModel.kt @@ -0,0 +1,40 @@ +package com.example.sungdongwalk.viewmodels + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.example.sungdongwalk.api.Dto +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +enum class SearchActionType { + ENTER ,DELETE +} + +class SearchViewModel: ViewModel() { + + companion object{ + val instance = SearchViewModel() + } + + private val _searchKeyword = MutableStateFlow("") + val searchKeyword : StateFlow = _searchKeyword + + fun updateSearchKeyword(keyword: String){ + viewModelScope.launch { + _searchKeyword.emit(keyword) + } + } + + private val _searchResults = MutableStateFlow>(listOf()) + val searchResults: StateFlow> = _searchResults + + fun updateSearchResults(actionType: SearchActionType, results: List?){ + viewModelScope.launch { + when(actionType){ + SearchActionType.ENTER -> _searchResults.emit(results!!) + SearchActionType.DELETE -> _searchResults.emit(listOf()) + } + } + } +} \ No newline at end of file