package Ġcom . my project . radio jo urney . presentation . authentication . sign Up Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . my project . radio jo urney . R Ċ import Ġcom . my project . radio jo urney . databinding . Layout SignUp Binding Ċ import Ġcom . my project . radio jo urney . presentation . authentication . base . Base Auth Fragment Abstract Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ /** Ċ Ġ* ĠÐĲ ÑĥÑĤ ÐµÐ½ÑĤ Ð¸ÑĦ Ð¸ ÐºÐ° ÑĨÐ¸Ñı . ĠÐ ¤ ÑĢÐ°Ð ³ Ð¼ ÐµÐ½ÑĤ ĠÐ´Ð»Ñı ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸Ð¸ Ċ Ġ*/ Ċ @ Android EntryPoint Ċ class ĠSign Up Fragment Ġ: ĠBase Auth Fragment Abstract () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" SignUp Fragment " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠVIEW ĠB IND ING Ġ-> Ġ 1 . ĠÐŀ Ð± ÑĬ Ñı Ð²Ð»Ñı ÐµÐ¼ ĠÐ¿ÐµÑĢ ÐµÐ¼ ÐµÐ½ Ð½ÑĥÑİ . ĠThis Ġproperty Ġis Ġonly Ġvalid Ġbetween ĠonCreate View Ġand Ġon Destroy View ĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠLayout SignUp Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < SignUp ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠVIEW ĠB IND ING Ġ-> Ġ 2 . ĠÐĺ Ð½Ð¸ ÑĨÐ¸ Ð°Ð»Ð¸Ð· Ð°ÑĨÐ¸Ñı ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠLayout SignUp Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ?. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġinit Listeners () ĊĠĠĠĠĠĠĠ Ġsubscribe On LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠÐ¡ Ð¾ Ñħ ÑĢÐ°Ð½ Ñı ÐµÐ¼ ĠÐ² Ð²ÐµÐ´ ÐµÐ½ Ð½ÑĭÐµ ĠÐ² ĠÐ¿Ð¾Ð» Ñı ĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı ĠÐ´Ð»Ñı ĠÐ¿Ð¾ÑģÐ» ÐµÐ´ Ð½ÑĥÑİ Ñī ÐµÐ³Ð¾ ĠÐ² Ð¾Ñģ ÑģÑĤÐ°Ð½Ð¾Ð² Ð»ÐµÐ½Ð¸Ñı ĠÐ¿ÑĢÐ¸ ĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´ Ð¸Ð¼Ð¾ÑģÑĤ Ð¸ : ĊĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. edit Text ?. add TextChanged Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐĺ Ð· Ð¼ÐµÐ½ ÐµÐ½Ð¸Ðµ ĠÑĨ Ð²ÐµÑĤ Ð° ĠÐ³ ÑĢ Ð°Ð½Ð¸ÑĨ Ñĭ ĠÐ¿Ð¾Ð» Ñı ĠÐ² Ð² Ð¾Ð´Ð° ĠÐ¿ÑĢÐ¸ ĠÐ² Ð²Ð¾Ð´ Ðµ ĠÑģ Ð¸Ð¼ Ð²Ð¾Ð» Ð¾Ð² ĠÐ² ĠÑįÑĤÐ¾ ĠÐ¿Ð¾Ð» Ðµ : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. set Box Stroke Color State List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. set Box Stroke Color State List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. hint TextColor Ġ= Ġcolor List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . icon _ in _ box _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. set Start Icon Tint List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. edit Text ?. add TextChanged Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐĺ Ð· Ð¼ÐµÐ½ ÐµÐ½Ð¸Ðµ ĠÑĨ Ð²ÐµÑĤ Ð° ĠÐ³ ÑĢ Ð°Ð½Ð¸ÑĨ Ñĭ ĠÐ¿Ð¾Ð» Ñı ĠÐ² Ð² Ð¾Ð´Ð° ĠÐ¿ÑĢÐ¸ ĠÐ² Ð²Ð¾Ð´ Ðµ ĠÑģ Ð¸Ð¼ Ð²Ð¾Ð» Ð¾Ð² ĠÐ² ĠÑįÑĤÐ¾ ĠÐ¿Ð¾Ð» Ðµ : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. set Box Stroke Color State List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. set Box Stroke Color State List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. hint TextColor Ġ= Ġcolor List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . icon _ in _ box _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. set Start Icon Tint List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. edit Text ?. add TextChanged Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐĺ Ð· Ð¼ÐµÐ½ ÐµÐ½Ð¸Ðµ ĠÑĨ Ð²ÐµÑĤ Ð° ĠÐ³ ÑĢ Ð°Ð½Ð¸ÑĨ Ñĭ ĠÐ¿Ð¾Ð» Ñı ĠÐ² Ð² Ð¾Ð´Ð° ĠÐ¿ÑĢÐ¸ ĠÐ² Ð²Ð¾Ð´ Ðµ ĠÑģ Ð¸Ð¼ Ð²Ð¾Ð» Ð¾Ð² ĠÐ² ĠÑįÑĤÐ¾ ĠÐ¿Ð¾Ð» Ðµ : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. set Box Stroke Color State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . box _ stroke _ color _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. set Box Stroke Color State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. hint TextColor Ġ= Ġcolor List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . icon _ in _ box _ with _ text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġcolor List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. set Start Icon Tint List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. set End Icon Tint List ( color List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐŀ Ð¿ ÑĢÐµÐ´ ÐµÐ»Ñı ÐµÐ¼ ĠÐ´ ÐµÐ¹ ÑģÑĤÐ² Ð¸Ðµ ĠÐ¿Ð¾ ĠÐº Ð»Ð¸ ÐºÑĥ ĠÐ½Ð° ĠÐº Ð½ Ð¾Ð¿ ÐºÑĥ : ĊĠĠĠĠĠĠĠ Ġbinding ?. button SignUp ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemail Text Ġ= Ġbinding ?. textField Email SignUp ?. edit Text ?. text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Text Ġ= Ġbinding ?. textField Password SignUp ?. edit Text ?. text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirm Password Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. edit Text ?. text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on SignUp Clicked ( email Text , Ġpassword Text , Ġconfirm Password Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐŁ ÐµÑĢ Ðµ ÑħÐ¾Ð´ ĠÐ½Ð° ĠSign In Fragment ĊĠĠĠĠĠĠĠ Ġbinding ?. linear Sign Un Bottom Component Text Go To SignIn ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . find Nav Controller (). navigate ( R . id . action _ sign Up Fragment _ to _ signIn Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe On LiveData () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠÐŁ ÐµÑĢ Ðµ ÑħÐ¾Ð´ ĠÐ½Ð° ĠÐºÐ¾Ð½ ÑĤ ÐµÐ½ÑĤ ĠÐ² ĠÑģÐ» ÑĥÑĩ Ð° Ðµ ĠÑĥ ÑģÐ¿ ÐµÑĪ Ð½Ð¾Ð¹ ĠÐ° ÑĥÑĤ ÐµÐ½ÑĤ Ð¸ÑĦ Ð¸ ÐºÐ° ÑĨÐ¸Ð¸ ĊĠĠĠĠĠĠĠ ĠviewModel . sign Up Success LiveData . observe ( view Lifecycle Owner , Ġ{ Ġemail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠÐŁ ÐµÑĢ ÐµÐ½ ÐµÑģ Ñĳ Ð¼ Ġemail ĠÐ½Ð¾Ð² Ð¾Ð³Ð¾ ĠÐ· Ð°ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ¸ ÑĢÐ¾Ð² Ð°Ð½ Ð½Ð¾Ð³Ð¾ ĠÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ ÐµÐ»Ñı ĠÐ½Ð° ĠSign In Ġ( Ð¿ ÐµÑĢ ÐµÐ´ Ð°Ð´ Ð¸Ð¼ ĠÐ° ÑĢ Ð³ ÑĥÐ¼ÐµÐ½ÑĤ ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠSign Up Fragment Directions . action SignUp Fragment To SignIn Fragment ( email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . find Nav Controller (). navigate ( direction ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Successful Ġregistration . ĠNow Ġlog Ġin Ġand Ġbegin Ġyour Ġradio Ġjourney !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" sign Up Success LiveData Ġcalled ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐŀ ÑĪÐ¸Ð± ÐºÐ¸ ĠÐ° ÑĥÑĤ ÐµÐ½ÑĤ Ð¸ÑĦ Ð¸ ÐºÐ° ÑĨÐ¸Ð¸ ĊĠĠĠĠĠĠĠ ĠviewModel . show Email Error LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. error Ġ= ĠgetString ( R . string . sign Up _ email _ incorrect ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Something Ġwrong Ġwith Ġyour Ġemail . ĠPlease , Ġtry Ġagain !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" show Email Error LiveData Ġcalled ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . show Password Error LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. error Ġ= ĠgetString ( R . string . sign Up _ password _ incorrect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . sign Up _ password _ incorrect ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Something Ġwrong Ġwith Ġyour Ġpassword . ĠPlease , Ġtry Ġagain !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" show Password Error LiveData Ġcalled ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . empty Email Error LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Email SignUp ?. error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" empty Email Error LiveData Ġcalled ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . empty Password Error LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Password SignUp ?. error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding ?. textField Confirm Password SignUp ?. error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" empty Password Error LiveData Ġcalled ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠÐŁ Ð¾Ðº Ð°Ð· ÑĭÐ² Ð°ÐµÐ¼ ĠÐ¸Ð»Ð¸ ĠÐ¿ÑĢ Ñı Ñĩ ÐµÐ¼ ĠProgress ĊĠĠĠĠĠĠĠ ĠviewModel . show Progress LiveData . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . hide Progress LiveData . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. frame Layout ?. isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding ?. progress Circular ?. isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. frame Layout ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbinding ?. progress Circular ?. isVisible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠVIEW ĠB IND ING Ġ-> Ġ 3 . Ġon Destroy View () ĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġbinding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }