package Ġcom . example . sh opt ok application . view model Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . am it . app . data . model . api . response . Login Response Ċ import Ġcom . example . sh opt ok application . base . Base ViewModel Ċ import Ġcom . example . sh opt ok application . datamodel . Login DataModel Ċ import Ġcom . example . sh opt ok application . datamodel . O tp DataModel Ċ import Ġcom . example . sh opt ok application . response . otp . UserData Ċ import Ġcom . example . sh opt ok application . utils . Input V all id ator Ċ import Ġcom . example . sh opt ok application . utils . Input V all id ator . isValid PhoneNumber Ċ import Ġcom . example . sh opt ok application . utils . String Constants Ċ import Ġcom . mv aa han . data . model . local . pref . App Preference Storage Ċ Ċ open Ġclass ĠLogin ViewModel Ġ: ĠBase ViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogin Response Ġ= ĠMutable LiveData < Login Response >() ĊĠĠĠ Ġprivate Ġval Ġo tp Response Ġ= ĠMutable LiveData < UserData >() ĊĊĠĠĠ Ġfun Ġget O tp ( login DataModel : ĠLogin DataModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalid Message Ġ= ĠisValid Inputs ( login DataModel !!. phone No ) ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( valid Message )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Preference Storage . save User Phone ( Ġlogin DataModel !!. phone No !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Disposable Ġ= Ġm Network Client . do Login Api Call ( login DataModel , Ġthis ) !! ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( valid Message !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Inputs ( phone : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isValid PhoneNumber ( phone )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Please Ġenter Ġvalid Ġmobile Ġno ." ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġo tp Validation Api Call ( otp DataModel : ĠO tp DataModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalid message : ĠString ? Ġ= ĠisValid O tp ( otp DataModel !!. otp ) ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( valid message )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Disposable Ġ= Ġm Network Client . otp Api Call ( otp DataModel , Ġthis ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid O tp ( otp : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( TextUtils . isEmpty ( otp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Constants . ERROR _ EMPTY _ OTP ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( otp !!. length Ġ== Ġ 4 Ġ&& ĠInput V all id ator . is Numeric ( otp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Constants . ERROR _ INVALID _ OTP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Login Response (): ĠMutable LiveData < Login Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlogin Response ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget O tp Response (): ĠMutable LiveData < UserData > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġo tp Response ĊĠĠĠ Ġ} Ċ }