package Ġcom . ort izz ak ar ie . deal finder . viewModel . game Details Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . ort izz ak ar ie . deal finder . R Ċ import Ġcom . ort izz ak ar ie . deal finder . databinding . Fragment Game Details Binding Ċ import Ġcom . ort izz ak ar ie . deal finder . model . data Models . Game Lookup Response Ċ import Ġcom . ort izz ak ar ie . deal finder . utils . Status Ċ import Ġcom . ort izz ak ar ie . deal finder . viewModel . game Details . adapter . Deal ListAdapter Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠZ ak ar ie ĠO rt iz Ġon Ġ 1 / 1 2 / 2 1 . Ċ Ġ*/ Ċ @ Android EntryPoint Ċ class ĠGame Details Fragment Ġ: ĠFragment ( R . layout . fragment _ game _ details ), ĊĠĠĠ ĠDe al ListAdapter . On ItemClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġargs Ġby Ġnav Args < Game Details Fragment Args >() ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Game Details ViewModel >() ĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Game Details Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Inflater . from ( context ). inflate Transition ( android . R . transition . move ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Game Details Binding . bind ( view ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeals Adapter Ġ= ĠDe al ListAdapter ( this ) ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġargs . game ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv De als . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv De als . item Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv De als . adapter Ġ= Ġdeals Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv De als . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Game Thumbnail . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Name Ġ= Ġgame . thumb ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this @ Game Details Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( game . thumb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ error _ outline _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠG lide Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < Drawable > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar Circular . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource : ĠDrawable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠTarget < Drawable > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource : ĠDataSource ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Resource : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar Circular . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Title . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Title . text Ġ= Ġgame . external ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Title . transition Name Ġ= Ġgame . external ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search For Game Details ( game . game ID . toInt ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . game Details . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . status Ġ== ĠStatus . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ProgressBar Visibility ( progress Bar Circular , ĠView . GONE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Details Response Ġ= Ġit . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game Details Response Ġ!= Ġnull ) Ġ{ Ġ// Assign Ġthe Ġfragment ĠU Is Ġdata Ġhere , Ġwhere Ġthe Ġgame Details Response Ġhas Ġvalid Ġdata . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret ail Price Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ret ail ĠPrice : Ġ$" Ġ+ Ġgame Details Response . de als [ 0 ]. retail Price ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Ret ail Price . text Ġ= Ġret ail Price Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Ret ail Price . visibility Ġ= ĠView . VISIBLE ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Assign Ġthe Ġcleaned Ġdeals Ġdata Ġto Ġthe Ġadapter . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcleaned De als Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . check Game Detail De als For False De als ( game Details Response . de als Ġas ĠMutable List < Game Lookup Response . Game Deal Response >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeals Adapter . submit List ( cleaned De als ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeal Count Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcleaned De als . count (). toString () Ġ+ Ġ" Ġdeals Ġfound " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Deal Count . text Ġ= Ġdeal Count Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Game Deal Count . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . status Ġ== ĠStatus . LOADING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ProgressBar Visibility ( progress Bar Circular , ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . status Ġ== ĠStatus . ERROR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" G DF ragment . TAG ", Ġ" on View Created : Ġresponse Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : ĠDisplay Ġretry Ġbutton Ġw / error ĠUI Ġfor Ġattempting Ġto Ġreconnect . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( deal : ĠGame Lookup Response . Game Deal Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent To Deal Purchase ( deal . deal ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Will Ġredirect Ġuser Ġout Ġof Ġapp Ġand Ġto Ġtheir Ġpreferred Ġbrowser Ġto Ġpotentially Ġpurchase Ġthe Ġgame . ĊĠĠĠ Ġprivate Ġfun Ġintent To Deal Purchase ( deal ID : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeal Link Ġ= Ġ" https :// www . che ap shark . com / redirect ? deal ID =$ deal ID " ĊĠĠĠĠĠĠĠ Ġval Ġdeal Uri Ġ= ĠUri . parse ( deal Link ) ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġdeal Uri ) ĊĊĠĠĠĠĠĠĠ Ġcontext ?. startActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ProgressBar Visibility ( view : ĠProgress Bar , Ġvisibility : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= Ġvisibility ĊĠĠĠ Ġ} Ċ Ċ }