Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Возможно ли управление поведением onBackClick() в компоненте ? #22

Open
smwed opened this issue Dec 19, 2023 · 2 comments
Labels
enhancement New feature or request question Further information is requested

Comments

@smwed
Copy link

smwed commented Dec 19, 2023

Здравствуйте!

Возможно ли сделать что-то вроде такого?

class MyComponentViewModel(router: TreeRouter) : ViewModel {

val oldBackClicked = router.onBackClicked

init {
    router.onBackClicked = { if (myСonditions) foo() else oldBackclicked() }
}

fun onDestroy() {
    router.onBackclicked = oldBackClicked
}

fun foo() {
   .....
   oldBackClicked()
}

}

Или, может быть, уже есть какая-то другая возможность получить подобное поведение?
Спасибо. :)

@alphicc alphicc added the question Further information is requested label Dec 20, 2023
@alphicc
Copy link
Owner

alphicc commented Dec 21, 2023

Доброго времени суток!

На данный момент условие перед навигацией можно реализовать с помощью переопределения BackHandler и составления условия во MyComponentViewModel.
Пример.

...
BackHandler() {
    viewModel.onBackClicked()
}
...
...
//MyComponentViewModel
...
fun onBackClicked() {
     if (myСonditions) foo() else oldBackclicked()
}

fun foo() {
   .....
   oldBackClicked()
}
...

На данный момент вижу такой вариант реализации.

Еще планируется обновление с изменением некоторых функций библиотеки, включу эту штуку в рассмотрение, чтобы была возможность сделать что-то подобное.

Спасибо за вопрос)

@smwed
Copy link
Author

smwed commented Dec 21, 2023

Спасибо за предложенное решение, но, как мне кажется, использование возможности (пере)назначения поведения TreeRouter.onBackClicked() делает код viewmodel более элегантным и, главное, инкапсулирует всё поведение внутри самой viewmodel.

Буду ждать вашего решения и надеюсь на реализацию предложенного в следующих обновлениях.
Спасибо!

@alphicc alphicc added the enhancement New feature or request label Jan 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants