/* Ċ Ġ* ĠCreated Ġby ĠKar ic ĠKen an Ġon Ġ 2 1 . 4 . 2 0 2 1 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġ. ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġio . ae thi bo . fork . ui . detail . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . as LiveData Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġio . ae thi bo . data . utils . Resource Ċ import Ġio . ae thi bo . domain . Repository Ċ import Ġio . ae thi bo . domain . response . Repository Events Response Ċ import Ġio . ae thi bo . fork . R Ċ import Ġio . ae thi bo . fork . databinding . Fragment Repository Detail Binding Ċ import Ġio . ae thi bo . fork . framework . domain . Repository Detail Request Ċ import Ġio . ae thi bo . fork . ui . auth . utils . sn ackBar Ċ import Ġio . ae thi bo . fork . ui . detail . adapter . Repository Detail Adapter Ċ import Ġio . ae thi bo . fork . ui . detail . view model . Detail Repository ViewModel Ċ import Ġio . ae thi bo . fork . ui . utils . format Large Number Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠDetail Repository Fragment Ġ: ĠFragment ( R . layout . fragment _ repository _ detail ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Repository Detail Binding Ġby Ġview Binding () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠDetail Repository ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġrepository Events Adapter : ĠRepository Detail Adapter Ġby Ġlazy Ġ{ ĠRepository Detail Adapter () Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġrepository Detail : ĠRepository Detail Request ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( repository Detail : ĠRepository Detail Request ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Repository Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable (" repository Detail ", Ġrepository Detail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. get Parcelable < Repository Detail Request >(" repository Detail ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġrepository Detail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . repository Detail Ġ= Ġrepository Detail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġrepository Detail ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getRepository ( it . owner , Ġit . repository ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getRepository Events List ( it . owner , Ġit . repository , Ġmap Of (" per _ page " Ġto Ġ" 1 0 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscribe To Observer s () ĊĠĠĠĠĠĠĠ Ġsetup Adapter Click Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter Click Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Events Adapter . setOn Event ItemClickListener Ġ{ Ġrepository Events Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar (" Clicked : Ġ${ repository Events Response . type }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe To Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . repository Status . as LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġresource : ĠResource < Repository > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Loading Ġ-> Ġbinding . pb Repository Detail . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Repository Detail . isVisible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresource . data Ġas ĠRepository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Repository Ui ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Repository Detail . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar (" Error : Ġ${ resource . message Ġ?: Ġ" Unknown Ġerror Ġoccurred "} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . repository Events Status . as LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġresource : ĠResource < List < Repository Events Response >> Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Loading Ġ-> Ġbinding . pb Repository Detail . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Repository Detail . isVisible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresource . data Ġas ĠList < Repository Events Response > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Adapter ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . pb Repository Detail . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar (" Error : Ġ${ resource . message Ġ?: Ġ" Unknown Ġerror Ġoccurred "} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter ( events : ĠList < Repository Events Response >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Events Adapter . submit List ( events ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Repo Detail Events List . adapter Ġ= Ġrepository Events Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Repository Ui ( repository : ĠRepository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Title . text Ġ= Ġrepository . name ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Description . text Ġ= Ġrepository . description ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Owner . text Ġ= ĠgetString ( R . string . label Repository Owner , Ġrepository . owner ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Language . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label Repository Language , Ġrepository . language ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Updated . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label Repository Updated Date , Ġrepository . updatedAt ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Fork s Count . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label Repository Fork s , Ġformat Large Number ( repository . fork s Count )) ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail Watch ers Count . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label Repository Watch ers , Ġformat Large Number ( repository . watch ers Count )) ĊĠĠĠĠĠĠĠ Ġbinding . tv Repo Detail St arg az ers Count . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label Repository St ars , Ġformat Large Number ( repository . st arg az ers Count )) ĊĠĠĠ Ġ} Ċ }