package Ġcom . y ay las . dog ce o . ui . detail Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . y ay las . dog ce o . R Ċ import Ġcom . y ay las . dog ce o . databinding . Fragment Detail Binding Ċ import Ġcom . y ay las . dog ce o . domain . Data State Ċ import Ġcom . y ay las . dog ce o . domain . model . B reed Ċ import Ġcom . y ay las . dog ce o . domain . model . Image Info Ċ import Ġcom . y ay las . dog ce o . ui . B reed s Adapter Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠDetail Fragment Ġ: ĠFragment ( R . layout . fragment _ detail ) Ġ{ ĊĊĠĠĠ Ġval Ġargs : ĠDetail Fragment Args Ġby Ġnav Args () ĊĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠDetail ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Detail Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Detail Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Arguments () ĊĠĠĠĠĠĠĠ ĠsetUp Header Title () ĊĠĠĠĠĠĠĠ ĠsetUp Recycler Views () ĊĠĠĠĠĠĠĠ Ġsubscribe Observer s () ĊĠĠĠĠĠĠĠ ĠviewModel . setState Event ( Detail State Event . Get Sub B reed s Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Header Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle Text Ġ= ĠviewModel . parent B reed . capitalize () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . bre ed ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text Ġ= Ġ"${ it . capitalize ()} Ġ$ title Text " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ĠAppCompatActivity ). support ActionBar ?. title Ġ= Ġtitle Text ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Arguments () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . bre ed Ġ= Ġargs . bre ed Name ĊĠĠĠĠĠĠĠ ĠviewModel . parent B reed Ġ= Ġargs . parent B reed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Recycler Views () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp B reed RecyclerView () ĊĠĠĠĠĠĠĠ ĠsetUp Images RecyclerView () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp B reed RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( require Context (), ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Images RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( require Context (), ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . bre eds Data State . observe ( view Lifecycle Owner , Ġ{ Ġdata State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( data State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Success < List < B reed >> Ġ-> Ġshow B reed Data ( data State . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Error Ġ-> Ġerror Occurred ( data State . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Loading Ġ-> Ġshow ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . image Info Data State . observe ( view Lifecycle Owner , Ġ{ Ġdata State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( data State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Success < List < Image Info >> Ġ-> Ġshow ImageData ( data State . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Error Ġ-> Ġerror Occurred ( data State . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Loading Ġ-> Ġshow ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow B reed Data ( data : ĠList < B reed >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . setState Event ( Detail State Event . Get Images Event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . adapter Ġ= ĠB reed s Adapter ( data , Ġ:: goto Detail ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġhide ProgressBar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow ImageData ( data : ĠList < Image Info >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . adapter Ġ= ĠB reed Images Adapter ( data ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġhide ProgressBar () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġgoto Detail ( bre ed : ĠB reed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġbundle Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" parent _ bre ed " Ġto ĠviewModel . parent B reed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" bre ed _ name " Ġto Ġb reed . name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . inner Detail Fragment , Ġbundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġerror Occurred ( errorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide ProgressBar () ĊĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), ĠerrorMessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Images . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . rv Sub B reed s . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }