Łukasz Lendzion
03/25/2024, 1:31 PMŁukasz Lendzion
03/25/2024, 3:58 PMstruct ContactView {
@State var isGoingToSubjectSearchView = false
@Environment(\.presentationMode) private var presentationMode
}
extension ContactView: View {
var body: some View {
VStack {
ComposeViewControllerToSwiftUI(factory: ContactUiViewControllerKt
.ContactUiViewController(
navigateBackAction: {
presentationMode.wrappedValue.dismiss()
},
navigateToTopicSearchAction: {
isGoingToSubjectSearchView = true
}
)
)
}.navigationBarBackButtonHidden(true)
.ignoresSafeArea(.all, edges: .bottom)
NavigationLink(isActive: $isGoingToSubjectSearchView) {
ContactSubjectSearchView()
} label: {
EmptyView()
}
}
}
struct ContactSubjectSearchView {
@Environment(\.presentationMode) private var presentationMode
}
extension ContactSubjectSearchView: View {
var body: some View {
VStack {
ComposeViewControllerToSwiftUI(factory: ContactSearchSubjectUiViewControllerKt
.ContactSearchSubjectUiViewController(
navigateBackAction: {
presentationMode.wrappedValue.dismiss()
}
)
)
}.navigationBarBackButtonHidden(true)
}
}
struct ComposeViewControllerToSwiftUI: UIViewControllerRepresentable {
let factory: UIViewController
func makeUIViewController(context: Context) -> UIViewController {
factory
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
}
Kotlin code:
fun ContactUiViewController(
navigateBackAction: () -> Unit,
navigateToSubjectSearchAction: () -> Unit
): UIViewController = ComposeUIViewController {
println("hello ComposeUIViewController")
CompositionLocalProvider(LocalAppDimensions provides phoneDimens) {
println("hello provider")
MyTheme {
println("hello theme")
UserProfileContactScreen(
viewModel = getViewModel { getUserProfileContactViewModeliOSExt() },
navigateToSubjectSearchAction = navigateToSubjectSearchAction,
onBackAction = navigateBackAction,
)
println("hello Done")
}
}
}