package Ġcom . the ke val . gif explorer . views Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . the ke val . gif explorer . R Ċ import Ġcom . the ke val . gif explorer . adapters . Favorite Gif Adapter Ċ import Ġcom . the ke val . gif explorer . adapters . G ifs Adapter Ċ import Ġcom . the ke val . gif explorer . adapters . TRE ND ING _ PAGE _ INDEX Ċ import Ġcom . the ke val . gif explorer . databinding . Fragment F avour ite Binding Ċ import Ġcom . the ke val . gif explorer . view models . F avour ite ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" F avour ite Fragment " Ċ Ċ @ Android EntryPoint Ċ class ĠF avour ite Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment F avour ite Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠF avour ite ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠF avorite Gif Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment F avour ite Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠF avorite Gif Adapter ( Gif Favorite FAB Clicked Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġis Ġfavor ited =${ viewModel . is F avor ited ( it . id )} ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( viewModel . is F avor ited ( it . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġremoving Ġfrom Ġfavorite Ġ${ it . id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove From Favorite ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate View : Ġadding Ġto Ġfavorite Ġ${ it . id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . addTo Favorite ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠviewModel . fetch F avor ited G ifs () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġ}, ĠSet Heart Drawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is F avor ited ( it . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ heart _ filled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ heart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . favorite Gif List . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġbinding . add Favorite . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Trend ing Page () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . f avor ited G ifs . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġlist Gif Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . has F avorites Ġ= Ġ! list Gif . isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. submit List ( list Gif ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠTODO : Ġcan Ġbe Ġconverted Ġto Ġdata Ġbinding ĊĠĠĠ Ġprivate Ġfun Ġnavigate To Trend ing Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). findViewById < ViewPager 2 >( R . id . view _ pager ). currentItem Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT RE ND ING _ PAGE _ INDEX ĊĠĠĠ Ġ} ĊĊ Ċ }