Я работаю на страницах входа и регистрации, используя Firebase Auth по электронной почте и паролю.
Что успешно сделано:
Если сеанс (вход или регистрация) не nil , затем пользователь переходит к представлению Welcome Back.
Вопрос следующий:
Я не хочу, чтобы новый пользователь набрал от go до " Welcome Back " Просмотрите, вместо этого, я хочу его после нажатия кнопки" Зарегистрироваться "(сессия не ноль до go для нового просмотра -" Загрузить просмотр фотографий "
Мой класс хранилища сеансов (@ObservableObject):
@Published var session: User? {didSet{self.didChange.send(self)}}
var didChange = PassthroughSubject<SessionStore, Never>()
var handle: AuthStateDidChangeListenerHandle?
let currentuser = Auth.auth().currentUser
func listen(){
handle = Auth.auth().addStateDidChangeListener({(auth, user) in
if let user = user{
self.session = User(uid: user.uid, email: user.email)
} else {
self.session = nil
}
})
}
func signUp(email: String, password: String, fullname: String, username: String, handler: @escaping AuthDataResultCallback){
Auth.auth().createUser(withEmail: email, password: password, completion: handler)
}
func signIn(email: String, password: String, handler: @escaping AuthDataResultCallback){
Auth.auth().signIn(withEmail: email, password: password){ (res,err) in
if err != nil{
return
}
}
}
func signOut(){
do{
try Auth.auth().signOut()
self.session = nil
}catch{
print("Error signing out")
}
}
func unbind() {
if let handle = handle {
Auth.auth().removeStateDidChangeListener(handle)
}
}
deinit {
unbind()
}
func addUsername(username: String){
session?.username = username
}
func addFullname(fullname: String){
session?.fullname = fullname
}
class User:ObservableObject{
var uid: String
var email: String?
var username: String?
var fullname: String?
init(uid:String, email:String?){
self.uid = uid
self.email = email
}
}}
Просмотр моего контента выглядит так:
Group {if (session .session! = ноль) {
Button(action: {
try! Auth.auth().signOut()
UserDefaults.standard.set(false, forKey: "status")
NotificationCenter.default.post(name: NSNotification.Name("statusChange"), object: nil)
}){
Text("Log out")
}
ExploreView()
}else{
AuthView()
}
}.onAppear(perform: getUser)