Hello Claude 31,
I have two MainView files:
This is MainView.swift
import SwiftUI
struct MainView: View {
@StateObject var viewModel = MainView_ViewModel()
var body: some View {
if viewModel.isSignedIn, !viewModel.currentUserId.isEmpty {
// signed in state
ToDoListView()
} else {
LoginView()
}
}
}
struct MainView_Previews: PreviewProvider {
static var previews: some View {
MainView()
}
}
This is MainView_ViewModel.swift
import FirebaseAuth
import Foundation
class MainView_ViewModel: ObservableObject {
@Published var currentUserId: String = ""
private var handler: AuthStateDidChangeListenerHandle?
// when user signs in or out this published will be triggered and update oru view
// if we have a user it means they are signed in
// nil = not signed in
init() {
self.handler = Auth.auth().addStateDidChangeListener { [weak self] _, user in
DispatchQueue.main.async {
self?.currentUserId = user?.uid ?? ""
}
}
}
public var isSignedIn: Bool {
return Auth.auth().currentUser != nil
}
}
Thank you.
Lorna
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: