48 lines
1.3 KiB
Swift
48 lines
1.3 KiB
Swift
import SwiftUI
|
|
|
|
@main
|
|
struct KecalekApp: App {
|
|
@State private var appState = AppState()
|
|
@State private var authViewModel = AuthViewModel()
|
|
@Environment(\.scenePhase) private var scenePhase
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
if appState.isLoggedIn {
|
|
MainTabView(appState: appState)
|
|
} else {
|
|
LoginView(viewModel: authViewModel, appState: appState)
|
|
}
|
|
}
|
|
.onChange(of: scenePhase) { _, newPhase in
|
|
switch newPhase {
|
|
case .background:
|
|
appState.handleEnteredBackground()
|
|
case .active:
|
|
appState.handleBecameActive()
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct MainTabView: View {
|
|
var appState: AppState
|
|
@State private var convListVM = ConversationListVM()
|
|
|
|
var body: some View {
|
|
TabView {
|
|
ConversationListView(appState: appState, viewModel: convListVM)
|
|
.tabItem {
|
|
Label("Chats", systemImage: "bubble.left.and.bubble.right.fill")
|
|
}
|
|
|
|
ProfileView(appState: appState, isOwnProfile: true)
|
|
.tabItem {
|
|
Label("Profile", systemImage: "person.fill")
|
|
}
|
|
}
|
|
}
|
|
}
|