|
|
||
|---|---|---|
| .. | ||
| src/main | ||
| .gitignore | ||
| build.gradle | ||
| readme.md | ||
readme.md
Сущность для централизованнной обработки deeplink'ов
Поддерживает
- Добавление диплинка в очередь
- Очистка очереди и отмена всех активных операций
- Асинхронная обработка диплинка
- Цепочка обработчиков для диплинка
- Поиск обработчика в иерархии экранов
Использование
Корневая навигация
DeepLinkHandler
.observeDeeplink(
observerOrder = 0,
navigateAction = { deeplink ->
binding.bottomNavigation.selectedItemId = deeplink.getBottomNavigationItem().menuId
})
.launchIn(viewLifecycleOwner.lifecycleScope)
Навигация на втором уровне
DeepLinkHandler
.observeDeeplink(
observerOrder = 1,
canHandle = { it.getBottomNavigationItem() == args.tabType },
isFinalObserver = { !it.isListDeeplink() },
navigateAction = { it.navigateToListScreen() }
)
.launchIn(viewLifecycleOwner.lifecycleScope)
Навигация на третьем уровне
DeepLinkHandler
.observeDeeplink(
observerOrder = 2,
canHandle = { it.getBottomNavigationItem() == args.tabType && it.isListDeeplink() },
navigateCondition = { it.getItemId() != null },
navigateAction = { it.navigateToDetailsScreen() }
)
.launchIn(viewLifecycleOwner.lifecycleScope)
Пример проекта можно посмотреть в: https://github.com/duwna/Deeplinks-test