diff options
Diffstat (limited to 'iosApp')
-rw-r--r-- | iosApp/iosApp.xcodeproj/project.pbxproj | 22 | ||||
-rw-r--r-- | iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate | bin | 36126 -> 38983 bytes | |||
-rw-r--r-- | iosApp/iosApp/Session/LoginView.swift (renamed from iosApp/iosApp/Authentication/LoginView.swift) | 49 | ||||
-rw-r--r-- | iosApp/iosApp/Session/LoginViewModel.swift | 38 | ||||
-rw-r--r-- | iosApp/iosApp/Units/UnitsView.swift | 15 |
5 files changed, 91 insertions, 33 deletions
diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj index 60172de..71d898c 100644 --- a/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 7555FF83242A565900829871 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* LoginView.swift */; }; E38F241527A242870069FC45 /* Inject.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241427A242870069FC45 /* Inject.swift */; }; E38F241727A242C70069FC45 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241627A242C70069FC45 /* Resolver.swift */; }; + E38F241C27A26DD70069FC45 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241B27A26DD70069FC45 /* LoginViewModel.swift */; }; + E38F241E27A270D50069FC45 /* UnitsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241D27A270D50069FC45 /* UnitsView.swift */; }; E3E77EDF279D2B5A00150070 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E3E77EDE279D2B5A00150070 /* Localizable.strings */; }; E3E77EE6279E6CE400150070 /* FlowCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3E77EE5279E6CE400150070 /* FlowCollector.swift */; }; /* End PBXBuildFile section */ @@ -39,6 +41,8 @@ 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; E38F241427A242870069FC45 /* Inject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Inject.swift; sourceTree = "<group>"; }; E38F241627A242C70069FC45 /* Resolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Resolver.swift; sourceTree = "<group>"; }; + E38F241B27A26DD70069FC45 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = "<group>"; }; + E38F241D27A270D50069FC45 /* UnitsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitsView.swift; sourceTree = "<group>"; }; E3E77EDE279D2B5A00150070 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; E3E77EE5279E6CE400150070 /* FlowCollector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowCollector.swift; sourceTree = "<group>"; }; /* End PBXFileReference section */ @@ -83,9 +87,10 @@ 7555FF7D242A565900829871 /* iosApp */ = { isa = PBXGroup; children = ( + E38F241A27A2659C0069FC45 /* Units */, E3E77EE1279D43C000150070 /* Shared */, 058557BA273AAA24004C7B11 /* Assets.xcassets */, - E3E77EE0279D43B400150070 /* Authentication */, + E3E77EE0279D43B400150070 /* Session */, 7555FF8C242A565B00829871 /* Info.plist */, 2152FB032600AC8F00CF470E /* iOSApp.swift */, 058557D7273AAEEB004C7B11 /* Preview Content */, @@ -100,12 +105,21 @@ name = Frameworks; sourceTree = "<group>"; }; - E3E77EE0279D43B400150070 /* Authentication */ = { + E38F241A27A2659C0069FC45 /* Units */ = { + isa = PBXGroup; + children = ( + E38F241D27A270D50069FC45 /* UnitsView.swift */, + ); + path = Units; + sourceTree = "<group>"; + }; + E3E77EE0279D43B400150070 /* Session */ = { isa = PBXGroup; children = ( 7555FF82242A565900829871 /* LoginView.swift */, + E38F241B27A26DD70069FC45 /* LoginViewModel.swift */, ); - path = Authentication; + path = Session; sourceTree = "<group>"; }; E3E77EE1279D43C000150070 /* Shared */ = { @@ -217,8 +231,10 @@ files = ( E38F241727A242C70069FC45 /* Resolver.swift in Sources */, E38F241527A242870069FC45 /* Inject.swift in Sources */, + E38F241C27A26DD70069FC45 /* LoginViewModel.swift in Sources */, E3E77EE6279E6CE400150070 /* FlowCollector.swift in Sources */, 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + E38F241E27A270D50069FC45 /* UnitsView.swift in Sources */, 7555FF83242A565900829871 /* LoginView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex fe8ed03..7b173a3 100644 --- a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate +++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/iosApp/iosApp/Authentication/LoginView.swift b/iosApp/iosApp/Session/LoginView.swift index 9e7a64f..0637ff2 100644 --- a/iosApp/iosApp/Authentication/LoginView.swift +++ b/iosApp/iosApp/Session/LoginView.swift @@ -1,47 +1,33 @@ import SwiftUI import shared -struct LoginContainerView: View { - @Inject private var sessionController: SessionController - +struct RootView: View { + @StateObject private var loginViewModel = LoginViewModel() @State private var username = "" @State private var password = "" @State private var server = "" - init() { - sessionController.loginStateFlow.collect(collector: Collector<SessionController.LoginState?> { state in - print("State is: \(state?.debugDescription ?? "")") - }) { (unit, error) in - - } - sessionController.restoreSession() - } - var body: some View { - LoginView(username: $username, - password: $password, - server: $server, - onLogin: login) - } - - private func login() { - print("Username: \(username)") - print("Password: \(password)") - print("Server URL: \(server)") - sessionController.login( - body: SessionBody(url: server, - email: username, - password: password, - fcmToken: nil)) + switch loginViewModel.loginState { + case is SessionController.LoginStateLoading: + Text("loading") + case is SessionController.LoginStateSuccess: + UnitsView() + default: + LoginContentView(username: $username, + password: $password, + server: $server, + onLogin: loginViewModel.login) + } } } -struct LoginView: View { +struct LoginContentView: View { @Binding var username: String @Binding var password: String @Binding var server: String - let onLogin: () -> Void + let onLogin: (SessionBody) -> Void var body: some View { VStack { @@ -54,7 +40,10 @@ struct LoginView: View { server: $server) Button(action: { - self.onLogin() + self.onLogin(SessionBody(url: server, + email: username, + password: password, + fcmToken: nil)) }) { Text("login") .font(.system(size: 18)) diff --git a/iosApp/iosApp/Session/LoginViewModel.swift b/iosApp/iosApp/Session/LoginViewModel.swift new file mode 100644 index 0000000..ee3038e --- /dev/null +++ b/iosApp/iosApp/Session/LoginViewModel.swift @@ -0,0 +1,38 @@ +// +// LoginViewModel.swift +// iosApp +// +// Created by Iván on 27/01/22. +// Copyright © 2022 orgName. All rights reserved. +// + +import Foundation +import shared + +class LoginViewModel: ObservableObject { + @Inject private var sessionController: SessionController + + @Published var loginState: SessionController.LoginState = SessionController.LoginStateNothing() + + init () { + let collector = Collector<SessionController.LoginState?>(callback: setLoginState) + sessionController.loginStateFlow.collect(collector: collector) { (unit, error) in } + restoreSession() + } + + func setLoginState (state: SessionController.LoginState?) { + print("State is: \(state?.debugDescription ?? "")") + self.loginState = state ?? SessionController.LoginStateNothing() + } + + func restoreSession() { + sessionController.restoreSession() + } + + func login (session: SessionBody) { + print("Username: \(session.email)") + print("Password: \(session.password)") + print("Server URL: \(session.url)") + sessionController.login(body: session) + } +} diff --git a/iosApp/iosApp/Units/UnitsView.swift b/iosApp/iosApp/Units/UnitsView.swift new file mode 100644 index 0000000..1088a5f --- /dev/null +++ b/iosApp/iosApp/Units/UnitsView.swift @@ -0,0 +1,15 @@ +// +// UnitsView.swift +// iosApp +// +// Created by Iván on 27/01/22. +// Copyright © 2022 orgName. All rights reserved. +// + +import SwiftUI + +struct UnitsView: View { + var body: some View { + Text("Welcome to UnitsView!") + } +} |