package Ġcom . v on age . v app . presentation . login Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . v on age . v app . R Ċ import Ġcom . v on age . v app . core . ext . observe Ċ import Ġcom . v on age . v app . core . ext . toast Ċ import Ġcom . v on age . v app . databinding . Fragment Login Binding Ċ import Ġcom . v on age . v app . presentation . login . Login ViewModel . Action Ċ import Ġcom . v on age . v app . utils . view Binding Ċ Ċ class ĠLogin Fragment Ġ: ĠFragment ( R . layout . fragment _ login ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding < Fragment Login Binding >() ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Login ViewModel >() ĊĊĠĠĠ Ġprivate Ġval Ġaction Observer Ġ= ĠObserver < Action > Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Show Content Ġ-> ĠviewModel . navigate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . Error Ġ-> Ġtoast Ġ{ Ġit . message Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . login Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . signup Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . navigate To Signup () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobserve ( viewModel . view Action LiveData , Ġaction Observer ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate TextView ( binding . name TextView , Ġ" Enter Ġname ") ĊĠĠĠĠĠĠĠ Ġupdate TextView ( binding . password TextView , Ġ" Enter Ġpassword ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( binding . name TextView . error Ġ!= Ġnull Ġ|| Ġbinding . password TextView . error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . login ( binding . name TextView . text . toString (), Ġbinding . password TextView . text . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate TextView ( textView : ĠTextView , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġif Ġ( text . toString (). isEmpty ()) ĠerrorMessage Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }