Как заставить LoadStateAdapter работать, когда у телефона нет доступа в Интернет

кто-нибудь знает как показывать LoadStateAdapter в случае, когда приложение запускается (холодный старт) с отключенной сетью? Я использую Paging 3 - 3.0.0-alpha13 (beta-01 теряет ключи к записям в моей реализации)

Ситуация

Есть PagingDataAdapter к которому добавлен LoadStateAdapter в качестве нижнего колонтитула

В случае, когда мы получаем статус LoadState.Error в LoadStateAdapter, например, в случае потери сети, этот статус делает "LoaderItem" видимым

LoaderItem отображается, когда его метод displayLoadStateAsItem на основе loadState вернет true. По умолчанию это происходит, когда loadState = LoadState.Loading или LoadState.Error.

  • Footer LoadStateAdapter "наблюдает" за loadState.append

  • Header LoadStateAdapter "наблюдает" за loadState.prepend

В случаях, когда приложение с холодного старта не имеет доступа к сети RemoteMediator выдает MediatorResult.Error ({"Unable to resolve host ..."})

Ошибка "прилетает" в loadState.mediator и в loadState.refresh append и prepend не получают ошибок имеют статус NotLoading (endOfPaginationReached = false) LoaderItem не отображается.

Как правильно получить результат когда LoadStateAdapter в ситуации холодного запуска покажется в конце, после закешированного списка?

Я пытался создать свой метод

fun LoadStateWithBlackJackAndHookers (footer: LoadStateAdapter <*>): ConcatAdapter {
addLoadStateListener {loadStates ->
            loadStates.mediator? .let {
                if (it.refresh is LoadState.Error) {
                    footer.loadState = it.refresh
                }
            }
            footer.loadState = loadStates.append
        }
        return ConcatAdapter (footer, this)
}

Это не дало желаемого результата, LoadStateAdapter начал получать сообщения об ошибках, но все равно не показывает LoaderItem


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