Created
July 3, 2017 09:13
-
-
Save nectarine/ca15a5cb0eddbefd4b1fa70a06c8c2c8 to your computer and use it in GitHub Desktop.
Revisions
-
nectarine created this gist
Jul 3, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,44 @@ class EmailSignInViewModel : GuestRxViewModel(), EmailSignInContract.ViewModel { override fun onEmailUpdate(input: Editable) { val email = input.toString() if (InputUtils.isValidEmail(email)) { emailError.set("") } else { emailError.set(getApplicationString(R.string.auth_error_invalid_email)) } emailSubject.onNext(email) } override fun onPasswordUpdate(input: Editable) { val password = input.toString() if (InputUtils.isValidPassword(password)) { passwordError.set("") } else { passwordError.set(getApplicationString(R.string.auth_error_invalid_password)) } passwordSubject.onNext(password) } override val emailError: ObservableField<String> = ObservableField("") override val passwordError: ObservableField<String> = ObservableField("") override val submitEnable = ObservableField<Boolean>(false) override fun email(): String = emailSubject.value override fun password(): String = passwordSubject.value protected val emailSubject: BehaviorSubject<String> = BehaviorSubject.create() protected val passwordSubject: BehaviorSubject<String> = BehaviorSubject.create() open fun init() { addDisposables( Observable .combineLatest(emailSubject, passwordSubject, BiFunction<String, String, Pair<String, String>> { email, password -> return@BiFunction Pair(email, password) }) .subscribe({ (email, password) -> submitEnable.set(InputUtils.isValidEmail(email) && InputUtils.isValidPassword(password)) }) ) } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true"> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?colorControlHighlight"> <item> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="@color/white" /> <solid android:color="?android:windowBackground" /> </shape> </item> </ripple> </item> <item> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="@color/grey_disabled" /> <solid android:color="?android:windowBackground" /> </shape> </item> </selector> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,94 @@ <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> <variable name="view" type="com.acciio.homeapp.ui.auth.sign.email.EmailSignInContract.View" /> <variable name="vm" type="com.acciio.homeapp.ui.auth.sign.email.EmailSignInContract.ViewModel" /> </data> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="40dp" android:paddingRight="40dp" tools:context="com.acciio.homeapp.ui.auth.sign.email.EmailSignInFragment"> <android.support.design.widget.TextInputLayout android:id="@+id/email_auth_text_email" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" app:error="@{vm.emailError}" app:errorEnabled="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> <android.support.design.widget.TextInputEditText android:id="@+id/email_auth_edit_text_email" android:layout_width="match_parent" android:layout_height="wrap_content" android:afterTextChanged="@{vm::onEmailUpdate}" android:hint="@string/auth_hint_email_address" android:inputType="textEmailAddress" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/email_auth_text_password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" app:error="@{vm.passwordError}" app:errorEnabled="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/email_auth_text_email"> <android.support.design.widget.TextInputEditText android:id="@+id/email_auth_edit_text_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:afterTextChanged="@{vm::onPasswordUpdate}" android:hint="@string/auth_hint_email_password" android:inputType="textPassword" /> </android.support.design.widget.TextInputLayout> <Button android:id="@+id/email_auth_button" style="@style/DarkPlainBorderButton" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:enabled="@{safeUnbox(vm.submitEnable)}" android:onClick="@{(v) -> view.onEmailAuth(vm.email(), vm.password())}" android:text="@string/auth_sign_in_email" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/email_auth_text_password" /> <Button android:id="@+id/button6" style="@style/DarkPlainBorderlessButton" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:onClick="@{(v)->view.onPasswordReset()}" android:text="@string/auth_email_password_find" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/email_auth_button" app:layout_constraintVertical_bias="1.0" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="566dp" /> </android.support.constraint.ConstraintLayout> </layout>