Fix connection cycle

multistore
Laurent 2 years ago
parent ea806eb00b
commit 22760cdcac
  1. 10
      PadelClub/Views/User/AccountView.swift
  2. 16
      PadelClub/Views/User/LoginView.swift
  3. 22
      PadelClub/Views/User/MainUserView.swift

@ -6,20 +6,28 @@
//
import SwiftUI
import LeStorage
struct AccountView: View {
var user: User
var handler: () -> ()
var body: some View {
Form {
NavigationLink("Change password") {
ChangePasswordView()
}
Button("Disconnect") {
Store.main.disconnect()
handler()
}
}.navigationTitle(user.username)
}
}
#Preview {
AccountView(user: User(username: "coco"))
AccountView(user: User(username: "coco")) {
}
}

@ -8,22 +8,6 @@
import SwiftUI
import LeStorage
struct LoginAccountView: View {
@State var user: User? = nil
var body: some View {
if let user {
AccountView(user: user)
} else {
LoginView(handler: { user in
self.user = user
})
}
}
}
struct LoginView: View {
@EnvironmentObject var dataStore: DataStore

@ -12,14 +12,28 @@ struct MainUserView: View {
@EnvironmentObject var dataStore: DataStore
@State var isConnected: Bool = false
var body: some View {
if let user = dataStore.user, Store.main.hasToken() {
AccountView(user: user)
} else {
LoginAccountView()
Group {
if self.isConnected, let user = dataStore.user {
AccountView(user: user) {
self._checkConnection()
}
} else {
LoginView { user in
self._checkConnection()
}
}
}.onAppear {
self._checkConnection()
}
}
fileprivate func _checkConnection() {
self.isConnected = dataStore.user != nil && Store.main.hasToken()
}
}
#Preview {

Loading…
Cancel
Save