@@ -11,15 +11,19 @@ struct RootView: View {
1111 @Environment ( \. diContainer) var container : DIContainer
1212 @State var viewModel : RootViewModel
1313 @State private var selectedRoute : AppRoute ?
14+ @State private var selectedMainTab = MainTab . home
1415
1516 var body : some View {
1617 ZStack {
1718 Color ( UIColor . systemGroupedBackground) . ignoresSafeArea ( )
1819 if let signIn = viewModel. state. signIn {
1920 if signIn {
20- MainView ( viewModel: MainViewModel (
21- unreadPushCountUseCase: container. resolve ( ObserveUnreadPushCountUseCase . self)
22- ) )
21+ MainView (
22+ viewModel: MainViewModel (
23+ unreadPushCountUseCase: container. resolve ( ObserveUnreadPushCountUseCase . self)
24+ ) ,
25+ selectedTab: $selectedMainTab
26+ )
2327 } else {
2428 LoginView ( viewModel: LoginViewModel (
2529 signInUseCase: container. resolve ( SignInUseCase . self) )
@@ -29,6 +33,19 @@ struct RootView: View {
2933 }
3034 . preferredColorScheme ( viewModel. state. theme. colorScheme)
3135 . onAppear { viewModel. send ( . onAppear) }
36+ . onChange ( of: viewModel. state. signIn) { _, value in
37+ guard value == false else { return }
38+ selectedMainTab = . home
39+ }
40+ . onOpenURL { url in
41+ guard let mainTab = MainTab ( widgetURL: url) else { return }
42+ switch viewModel. state. signIn {
43+ case . some( false ) :
44+ selectedMainTab = . home
45+ case . some( true ) , . none:
46+ selectedMainTab = mainTab
47+ }
48+ }
3249 . alert ( viewModel. state. alertTitle, isPresented: Binding (
3350 get: { viewModel. state. showAlert } ,
3451 set: { viewModel. send ( . setAlert( $0) ) }
0 commit comments