/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠRR sa ik at . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . re zw an . code challenge by sh ik ho . ui . fragments ĊĊ Ċ import Ġandroid . widget . Radio Group Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . re zw an . code challenge by sh ik ho . R Ċ import Ġcom . re zw an . code challenge by sh ik ho . databinding . Fragment Query Binding Ċ import Ġcom . re zw an . code challenge by sh ik ho . di . ViewModel Factory Ċ import Ġcom . re zw an . code challenge by sh ik ho . ext . error Ċ import Ġcom . re zw an . code challenge by sh ik ho . ext . hide Keyboard Ċ import Ġcom . re zw an . code challenge by sh ik ho . ext . show Short Toast Ċ import Ġcom . re zw an . code challenge by sh ik ho . ui . base . Base Fragment Ċ import Ġcom . re zw an . code challenge by sh ik ho . ui . view model . Shared ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠQ L Fragment Ġ: ĠBase Fragment < Fragment Query Binding >(), ĠRadio Group . On Checked ChangeListener Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Factory ĊĊĠĠĠ Ġval ĠviewModel : ĠShared ViewModel Ġby Ġview Models Ġ{ ĠviewModel Factory Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġquery Type : ĠQuery Type Ġ= ĠQuery Type . NONE ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res (): ĠInt Ġ= ĠR . layout . fragment _ query ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Initial izers () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . radio Group . setOn Checked ChangeListener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . btn Submit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun User Pre ffer ed QL () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . post ById L ived ata . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Query Details . text Ġ= Ġif Ġ( it Ġ== Ġnull ) Ġ" No Ġpost Ġinfo Ġfound " Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ID : Ġ${ it . id } Ġ\ n " Ġ+ Ġ" Title : Ġ${ it . title }" ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . user ById L ived ata . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Query Details . text Ġ= Ġif Ġ( it Ġ== Ġnull ) Ġ" No Ġuser Ġinfo Ġfound " Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ID : Ġ${ it . id } Ġ\ n " Ġ+ Ġ" Username : Ġ${ it . username } Ġ\ n " Ġ+ Ġ" Email : Ġ${ it . email } Ġ\ n " Ġ+ Ġ" Geo : Ġ${ it . address ?. geo ?. lat } Ġ, Ġ${ it . address ?. geo ?. lng } Ġ\ n " ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . isLoading . observe ( this , ĠObserver Ġ{ Ġloader value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . isVisible Ġ= Ġloader value ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Android Support Injection . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( group : ĠRadio Group ?, Ġchecked Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġerror ( this , Ġchecked Id ) ĊĠĠĠĠĠĠĠ Ġquery Type Ġ= Ġget QL Type ( checked Id ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun User Pre ffer ed QL () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( query Type Ġ== ĠQuery Type . POST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Post Query () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( query Type Ġ== ĠQuery Type . USER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun User Query () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. show Short Toast (" Please Ġselect Ġquery Ġtype Ġfirst ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun User Query () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding . ed t Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . isNull OrEmpty ()) Ġ ĠsetError (" This Ġfield Ġis Ġrequired ") Ġelse ĠviewModel . getUser ( text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Post Query () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding . ed t Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text . isNull OrEmpty ()) Ġ ĠsetError (" This Ġfield Ġis Ġrequired ") Ġelse ĠviewModel . getPost ( text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget QL Type ( checked Id : ĠInt ): ĠQuery Type Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ user Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠQuery Type . USER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ post Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠQuery Type . POST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠQuery Type . NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠQuery Type Ġ{ ĠNONE , ĠUSER , ĠPOST Ġ} ĊĊ Ċ }