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. 20
      PadelClub/Views/User/MainUserView.swift

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

@ -8,22 +8,6 @@
import SwiftUI import SwiftUI
import LeStorage 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 { struct LoginView: View {
@EnvironmentObject var dataStore: DataStore @EnvironmentObject var dataStore: DataStore

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

Loading…
Cancel
Save