Kotlin рефакторинг кода
Имеются похожие методы, например
suspend fun getProfile() = withContext(Dispatchers.IO){
val settings = settingsDao.get
netManager.isConnectedToInternet?.let{ connect ->
if(connect){
RemoteDataSource(settings.token).getProfile()
} else{
NewRequestModel.ErrorInternet(true)
}
} ?: NewRequestModel.ErrorInternet(true)
request
}
suspend fun getFilter() = withContext(Dispatchers.IO){
val settings = settingsDao.get
val request = netManager.isConnectedToInternet?.let{
if(it){
RemoteDataSource(settings.token).getFilter()
} else{
NewRequestModel.ErrorInternet(true)
}
} ?: NewRequestModel.ErrorInternet(true)
request
}
У них все одинаково, кроме одной строчки, я хочу это отредактировать
suspend fun getResult(networkCall : () -> NewRequestModel<Any>) = withContext(Dispatchers.IO) {
netManager.isConnectedToInternet?.let { connect ->
if (connect) {
networkCall.invoke()
} else {
NewRequestModel.ErrorInternet(true)
}
} ?: NewRequestModel.ErrorInternet(true)
}
Как вызывать:
suspend fun getFilter() = withContext(Dispatchers.IO){
val settings = settingsDao.get
val result = getResult{RemoteDataSource().getFilter()}
}
Как можно перенести val settings = settingsDao.get в getResult, передав в networkCall.invoke() setting.token?