В настоящее время я использую MVVP и пытаюсь создать простое приложение с этим шаблоном. В этом приложении я использую API для извлечения некоторых данных, и в этих данных есть поле с датой в виде строки: 01.01.1999
. Теперь я хотел бы отобразить эту дату в другом формате, скажем, 1 jan 1999
. Поэтому мой вопрос: хочу ли я остаться верным MVVM и иметь хороший, чистый код, в котором должно происходить это преобразование? В моей ViewModel или в поставщике данных, перед передачей ответа ViewModel?
Так что моя идея сделать это во ViewModel будет выглядеть примерно так:
class MyViewModel(private val dataProvider: DataProvider) : ViewModel() {
var data: MutableLiveData<DisplayData> = MutableLiveData()
fun getData() {
dataProvider.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
onNext = { data -> prepareDataForDisplay(data) })
}
fun prepareDataForDisplay(data: Data) {
data.postValue(DisplayData(data.date.parseToCorrectFormat()))
}
data class DisplayData(val date: String)
}
Или в моем поставщике данных:
class DataProvider(private val dataApi: DataApi) {
override fun getData(): Observable<DisplayData> {
return dataApi.getData().map { DisplayData(it.date.parseToCorrectFormat()) }
}
data class DisplayData(val date: String)
}
interface DataApi {
@GET("data")
fun getData(): Observable<Data>
}
Какой подход лучше?