RoboSwag/deeplink-utils/readme.md

1.7 KiB

Сущность для централизованнной обработки 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