android не заходит в корутину

столкнулся со следующей проблемой: Пытаюсь получить список магазинов, но получаю в ответ null. Судя по дебагу, даже не заходит в корутину в DataAccessStrategy. Аналогичный фрагмент кода в другом месте приложения работает, не могу понять в чем проблема. Буду рад любой помощи

LoginViewModel

class LoginViewModel @ViewModelInject constructor(private val remoteDataSource: OrderRemoteDataSource,
                                                  private val ordersRepository: OrdersRepository) :
    ViewModel() {

var shops = ordersRepository.getShops()
    fun showDialog(){
        var shopList: List<Shop>? = shops.value?.data
        var names:List<String?> = shopList!!.map{it.customName}

        MaterialAlertDialogBuilder(LOGIN_ACTIVITY)
                .setTitle("Выбрать магазин")
                .setItems(names.toTypedArray()) { dialog, which ->

                    Log.d("LOGIN VIEW MODEL", "selected")
                }
                .show()
    }

DataAccessStrategy

fun <T, A> performGetOperation(
    databaseQuery: () -> LiveData<T>,
    networkCall: suspend () -> Resource<A>,
    saveCallResult: suspend (A) -> Unit
): LiveData<Resource<T>> =
    liveData(Dispatchers.IO) {
        emit(Resource.loading())
        val source = databaseQuery.invoke().map { Resource.success(it) }
        emitSource(source)

        val responseStatus = networkCall.invoke()
        if (responseStatus.status == SUCCESS) {
            saveCallResult(responseStatus.data!!)

        } else if (responseStatus.status == ERROR) {
            emit(Resource.error(responseStatus.message!!))
            emitSource(source)
        }
    }

OdredsRepository

class OrdersRepository @Inject constructor(
    private val remoteDataSource: OrderRemoteDataSource,
    private val localDataSource: OrdersDao
) {

fun getShops() = performGetOperation(
            databaseQuery = { localDataSource.getAllShops() },
            networkCall = { remoteDataSource.getShops() },
            saveCallResult = { localDataSource.insertShop(it.results) }
    )
}

OrderRemoteDataSource

class OrderRemoteDataSource @Inject constructor(
    private val orderService: OrderService
) : BaseDataSource() {
    suspend fun getShops() = getResult { orderService.getAllShops() }

OrderService

interface OrderService {

    @GET("shops/all")   suspend fun getAllShops(): Response<ResultShops>

    companion object {
        const val MAUMarket_API_URL = "exampleurl"
    }
}

E/AndroidRuntime: FATAL EXCEPTION: main Process: ru.gkomega.navigation, PID: 4349 java.lang.NullPointerException at ru.gkomega.maumarket.ui.login.LoginViewModel.showDialog(LoginViewModel.kt:36) at ru.gkomega.maumarket.ui.login.LoginFragment$onViewCreated$1.onClick(LoginFragment.kt:50) at android.view.View.performClick(View.java:7259) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) at android.view.View.performClickInternal(View.java:7236) at android.view.View.access$3600(View.java:801) at android.view.View$PerformClick.run(View.java:27892) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)


Ответы (0 шт):