Skip to content

Commit 8db2db2

Browse files
committed
fix: 로그아웃 상태에서 위젯을 탭해 앱에 들어간 후 로그인 하면 해당 해당 탭으로 들어가지는 현상 제거
1 parent 30dfb90 commit 8db2db2

2 files changed

Lines changed: 21 additions & 8 deletions

File tree

DevLog/App/RootView.swift

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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)) }

DevLog/UI/Common/MainView.swift

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import SwiftUI
1010
struct MainView: View {
1111
@Environment(\.diContainer) var container: DIContainer
1212
@State var viewModel: MainViewModel
13-
@State private var selectedTab = MainTab.home
13+
@Binding var selectedTab: MainTab
1414

1515
var body: some View {
1616
TabView(selection: $selectedTab) {
@@ -73,10 +73,6 @@ struct MainView: View {
7373
.onAppear {
7474
viewModel.send(.onAppear)
7575
}
76-
.onOpenURL { url in
77-
guard let mainTab = MainTab(widgetURL: url) else { return }
78-
selectedTab = mainTab
79-
}
8076
.alert(
8177
viewModel.state.alertTitle,
8278
isPresented: Binding(

0 commit comments

Comments
 (0)