alphicc / Brick

🧱 Brick - Multiplatform navigation library for Compose.
MIT License
55 stars 1 forks source link

Переданные через passArgument данные приходят дважды. #12

Closed smwed closed 1 year ago

smwed commented 1 year ago

Здравствуйте. (Я новичок и не знаю как правильно писать такие сообщения, поэтому поправьте меня если нужно.)

Используется: Android + Jetpack Compose.

Имеем:

  1. childRouter - вложенный в mainRouter.
  2. в childRouter два компонента TestA и TestB (оба имеют собственные viewModel и screenContent)
  3. в viewModelTestB делаем childRouter.passArgument(TestA.key, "test")
  4. в TestA данные приходят дважды Если сделать mainRouter.passArgument(TestA.key, "test"), то данные приходят как положено - один раз.

Исследование показало, что в функции override suspend fun redirectArgument( from: ArgumentTranslator, componentKey: String, argument: A ) { if (parentRouter !== from) { parentRouter?.redirectArgument(this, componentKey, argument) } childRouters.value.forEach { it.second.redirectArgument(this, componentKey, argument) } emitArguments(componentKey, argument) }

отправка (emitArguments(...)) вызывается и для mainRouter (родительского) и для childRouter.

--- в моем коде так: Объявление mainRouter: val mainRouter = TreeRouter.new()

Объявление childRouter: private val childRouter by lazy { mainRouter.branch(Screens.mainScreen.key).apply { addComponent(Screens.TestA, this) } }

Переход на TestB в TestAViewModel childRouter.addComponent(Screens.TestB, childRouter)

Отправка данных в TestBViewModel: childRouter.passArgument(Screens.TestA.key, argument)

Прием в TestAViewModel: viewModelScope.launch { channel.collect { data -> //skip } }

Пожалуйста, подскажите, что я делаю не правильно? Можем связаться через e-mail?

alphicc commented 1 year ago

Добрый день.

Мне необходимо попробовать воспроизвести Вашу проблему, у себя. Пока есть подозрение на баг. Собираюсь заняться этой проблемой в ближайшее время.

smwed commented 1 year ago

...Собираюсь заняться этой проблемой в ближайшее время.

Добрый день. Есть ли какое-либо продвижение?

alphicc commented 1 year ago

Добрый вечер, был загружен по работе. Работа успешно завершена, сейчас на этапе тестирования. К вечеру уже будет релиз

alphicc commented 1 year ago

Релиз сделал, проверьте устранена ли проблема. В ближайшее время библиотеку можно будет подтянуть из репозитория

smwed commented 1 year ago

Релиз сделал, проверьте устранена ли проблема. В ближайшее время библиотеку можно будет подтянуть из репозитория

Да, проблема устранена - данные приходят только 1 раз. Баг можно закрывать. Большое спасибо!