package Ġcom . rick n out . r ug by rank er . matches . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . work . Work Info . State Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . rick n out . r ug by rank er . core . li ved ata . Event Observer Ċ import Ġcom . rick n out . r ug by rank er . core . ui . d agger . D agger Android X Fragment Ċ import Ġcom . rick n out . r ug by rank er . core . util . do If Res umed Ċ import Ġcom . rick n out . r ug by rank er . core . vo . Sport Ċ import Ġcom . rick n out . r ug by rank er . matches . Matches Nav Graph Directions Ċ import Ġcom . rick n out . r ug by rank er . matches . R Ċ import Ġcom . rick n out . r ug by rank er . matches . vo . Match Status Ċ import Ġjavax . inject . Inject Ċ import Ġkotlinx . android . synt hetic . main . fragment _ matches .* Ċ Ċ class ĠMat ches Fragment Ġ: ĠD agger Android X Fragment ( R . layout . fragment _ matches ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠMat ches Fragment Args Ġby Ġnav Args () ĊĊĠĠĠ Ġprivate Ġval Ġs port : ĠS port Ġby Ġlazy Ġ{ Ġargs . sport Ġ} ĊĠĠĠ Ġprivate Ġval Ġmatch Status : ĠMatch Status Ġby Ġlazy Ġ{ Ġargs . match Status Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMat ches ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port Ġ== ĠS port . M ENS Ġ&& Ġmatch Status Ġ== ĠMatch Status . UN PLAY ED Ġ-> Ġactivity ViewModels < Mens Un play ed Matches ViewModel > Ġ{ ĠviewModel Factory Ġ}. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port Ġ== ĠS port . M ENS Ġ&& Ġmatch Status Ġ== ĠMatch Status . COMPLETE Ġ-> Ġactivity ViewModels < Mens Complete Matches ViewModel > Ġ{ ĠviewModel Factory Ġ}. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port Ġ== ĠS port . W OM ENS Ġ&& Ġmatch Status Ġ== ĠMatch Status . UN PLAY ED Ġ-> Ġactivity ViewModels < W om ens Un play ed Matches ViewModel > Ġ{ ĠviewModel Factory Ġ}. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port Ġ== ĠS port . W OM ENS Ġ&& Ġmatch Status Ġ== ĠMatch Status . COMPLETE Ġ-> Ġactivity ViewModels < W om ens Complete Matches ViewModel > Ġ{ ĠviewModel Factory Ġ}. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Cannot Ġhandle Ġ$ sport Ġand Ġ$ match Status Ġcombination Ġin ĠMat ches Fragment ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcoord inator Layout : ĠCoord inator Layout ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠActivity Compat . require ViewById ( require Activity (), ĠR . id . coordinator Layout ) ĊĊĠĠĠ Ġprivate Ġvar Ġworker Sn ackBar : ĠSn ackbar ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġworld R ug by Match Paged ListAdapter : ĠWorld R ug by Match Paged ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġworld R ug by Match Date Item Decoration : ĠWorld R ug by Match Date Item Decoration ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġsetup ViewModel () ĊĠĠĠĠĠĠĠ Ġsetup Swipe Refresh Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġdismiss Worker Snackbar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġworld R ug by Match Date Item Decoration Ġ= ĠWorld R ug by Match Date Item Decoration ( require Context ()) ĊĠĠĠĠĠĠĠ Ġmatches RecyclerView . addItem Decoration ( world R ug by Match Date Item Decoration , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġworld R ug by Match Paged ListAdapter Ġ= ĠWorld R ug by Match Paged ListAdapter ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatest World R ug by Matches Ġ= ĠviewModel . latest World R ug by Matches . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ World R ug by Match Paged ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld R ug by Match Date Item Decoration . matches Ġ= Ġlatest World R ug by Matches ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġworld R ug by Match Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . predict ( world R ug by Match ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmatches RecyclerView . adapter Ġ= Ġworld R ug by Match Paged ListAdapter ĊĠĠĠĠĠĠĠ Ġmatches RecyclerView . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Scroll ( delta Ġ= Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . latest World R ug by Matches . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġlatest World R ug by Matches Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld R ug by Match Paged ListAdapter . submit List ( latest World R ug by Matches ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld R ug by Match Date Item Decoration . matches Ġ= Ġlatest World R ug by Matches ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisEmpty Ġ= Ġlatest World R ug by Matches ?. isEmpty () Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . isVisible Ġ= ĠisEmpty ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . latest World R ug by Matches Work Infos . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġwork Infos Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Info Ġ= Ġwork Infos ?. first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( work Info ?. state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . RUNNING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo If Res umed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Sn ackBar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . sn ackbar _ fetch ing _ world _ r ug by _ matches , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġshow () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Worker Snackbar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . refresh ing Latest World R ug by Matches . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġrefresh ing Latest World R ug by Matches Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġrefresh ing Latest World R ug by Matches ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . world R ug by Rank ings Team Ids . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġworld R ug by Rank ings Team Ids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld R ug by Match Paged ListAdapter . world R ug by Rank ings Team Ids Ġ= Ġworld R ug by Rank ings Team Ids . associate By ({ Ġit Ġ}, Ġ{ Ġtrue Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . scrollTo Top . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo If Res umed Ġ{ Ġmatches RecyclerView . smooth Scroll To Position ( 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Swipe Refresh Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġswipe Refresh Colors Ġ= Ġresources . getInt Array ( R . array . colors _ swipe _ refresh ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setColor Scheme Colors (* swipe Refresh Colors ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . set Progress BackgroundColor Scheme Resource ( R . color . color _ surface ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . set Progress View Offset ( true , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . progress View Start Offset Ġ+ Ġresources . get Dimension Pixel Size ( R . dim en . spacing _ double ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . progress View End Offset ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . refresh Latest World R ug by Matches Ġ{ Ġsuccess Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo If Res umed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . sn ackbar _ failed _ to _ refresh _ world _ r ug by _ matches , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss Worker Snackbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġworker Sn ackBar ?. dismiss () ĊĠĠĠĠĠĠĠ Ġworker Sn ackBar Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Matches Fragment " ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( sport : ĠS port , Ġmatch Status : ĠMatch Status ): ĠMat ches Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Fragment Ġ= ĠMat ches Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Fragment . arguments Ġ= ĠMat ches Nav Graph Directions . matches Fragment Action ( sport , Ġmatch Status ). arguments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmatches Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ