Как избежать ненужных вызовов API и выполнять вызов API только при наличии каких-либо изменений на стороне сервера - PullRequest
0 голосов
/ 23 сентября 2019
fun getNotifications(priorityNum: Int) =
        object : NetworkBoundResource<List<Notification>, Resource<List<Notification>>>(exec) {
            override fun saveCallResult(item: Resource<List<Notification>>) {
                item.data!!.forEach {
                    val id = db.notification().insert(it)
                    if (id == -1L) {
                        db.notification().update(
                            it.id,
                            it.subject,
                            it.description,
                            it.priority,
                            it.community,
                            it.createdTime
                        )
                    }
                }
            }

            override fun shouldFetch(data: List<Notification>?) = true

            override fun loadFromDb(): LiveData<List<Notification>> {
                return db.notification().getAllNotifications()
            }

            override fun createCall(): LiveData<ApiResponse<Resource<List<Notification>>>> =
                api.getNotifications(pref.userId!!, priorityNum)

        }.asLiveData()

Я использую что-то подобное в своем хранилище для локальной базы данных. Я хочу, чтобы вы могли видеть, что mustFetch () всегда имеет значение true, что приводит к вызову API, даже если данные не изменены.Итак, это вызывает нежелательные вызовы API. Как избежать этого и вызывать серверную часть только при наличии новой вставки или обновления на стороне сервера

...