diff --git a/PadelClub/Views/User/AccountView.swift b/PadelClub/Views/User/AccountView.swift index e3377c9..d386646 100644 --- a/PadelClub/Views/User/AccountView.swift +++ b/PadelClub/Views/User/AccountView.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")) { + + } } diff --git a/PadelClub/Views/User/LoginView.swift b/PadelClub/Views/User/LoginView.swift index 09ec6d0..d835a05 100644 --- a/PadelClub/Views/User/LoginView.swift +++ b/PadelClub/Views/User/LoginView.swift @@ -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 diff --git a/PadelClub/Views/User/MainUserView.swift b/PadelClub/Views/User/MainUserView.swift index b0eefd2..1d572f4 100644 --- a/PadelClub/Views/User/MainUserView.swift +++ b/PadelClub/Views/User/MainUserView.swift @@ -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 {