isUsernameFieldEnabled: Boolean, val isPasswordFieldEnabled: Boolean, val isProgressSpinnerVisible: Boolean, val isSubmitButtonEnabled: Boolean, val submitButtonCopy: String, val errorMessageOption: Option<String>, val submitButtonIntentOption: Option<LoginIntent>, val currentTimeStringOption: Option<String> )
isUsernameFieldEnabled: Boolean, val isPasswordFieldEnabled: Boolean, val isProgressSpinnerVisible: Boolean, val isSubmitButtonEnabled: Boolean, val submitButtonCopy: String, val errorMessageOption: Option<String>, val submitButtonIntentOption: Option<LoginIntent>, val currentTimeStringOption: Option<String> )
val password: String, val currentTime: Option<Date> ) : LoginState() data class Submitting( val username: String, val password: String, val currentTime: Option<Date> ) : LoginState() data class Error( val username: String, val password: String, val error: LoginError, val currentTime: Option<Date> ) : LoginState() enum class LoginError { IncorrectCredentials, NetworkError } }
https://www.youtube.com/watch?v=0IKHxjkgop4 2. Borrowing the Best of the Web to Make Native Better by Christina Lee a. https://www.youtube.com/watch?v=GOVMkQp3LZ4 3. Unidirectional data flow architectures by Andre Staltz a. https://www.youtube.com/watch?v=1c6XiQsnh_U b. https://staltz.com/unidirectional-user-interface-architectures.html 4. Reactive Apps with Model View Intent by Hannes Dorfmann a. http://hannesdorfmann.com/android/mosby3-mvi-1 5. My Take on Model View Intent by Zak Taccardi a. https://hackernoon.com/model-view-intent-mvi-part-1-state-renderer-187e270db15c 6. Login MVI by Yousuf Haque a. https://github.com/yousuf-haque/LoginMvi