package Ġcom . br ins . light music . ui . fragment . discovery ĊĊ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear Snap Helper Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . br ins . light music . R Ċ import Ġcom . br ins . light music . model . banner . Banner Ċ import Ġcom . br ins . light music . model . on lin em usic . Music List Bean Ċ import Ġcom . br ins . light music . ui . activity . MainActivity Ċ import Ġcom . br ins . light music . ui . base . Base Fragment Ċ import Ġcom . br ins . light music . utils . launch Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . android . synt hetic . main . fragment _ discovery .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ @ Android EntryPoint Ċ class ĠDiscovery Fragment Ġ: ĠBase Fragment (), ĠDiscovery Contract . View , ĊĠĠĠ ĠSw ipe Refresh Layout . On Refresh Listener , ĠDiscovery Adapter . On ItemClickListener Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Presenter : ĠDis cover Presenter ĊĠĠĠ Ġprivate Ġvar Ġis Fresh : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġcount : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbanner List : ĠArrayList < Banner > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmusic List Bean : ĠArrayList < Music List Bean > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmusic Hot List Bean : ĠArrayList < Music List Bean > ĊĠĠĠ Ġprivate Ġval Ġbanner Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDiscovery Adapter ( Discovery Adapter . TYPE _ BAN NER , Ġbanner List ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġmusic ListAdapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDiscovery Adapter ( Discovery Adapter . TYPE _ M US IC _ LIST , Ġmusic List Bean ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmusic Hot Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDiscovery Adapter ( Discovery Adapter . TYPE _ M US IC _ LIST , Ġmusic Hot List Bean ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lazy Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Lazy Load () ĊĠĠĠĠĠĠĠ Ġget Banner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Banner () Ġ{ ĊĠĠĠĠĠĠĠ ĠDis cover Presenter . instance . subscribe ( this @ Discovery Fragment ) ĊĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠ Ġinit Loading More () ĊĠĠĠĠĠĠĠ Ġinit Banner List () ĊĠĠĠĠĠĠĠ Ġinit Music List () ĊĠĠĠĠĠĠĠ Ġinit Hot Music List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġèİ·åıĸ æ¨ ª å¹ ħ å¹¿åĳĬ ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Banner List () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbanner List Ġ= Ġget Banner Data (). b ann ners !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Banner View () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġit . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Banner Data () Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbanner Ġ= Ġm Presenter . load Banner () ĊĠĠĠĠĠĠĠ Ġbanner ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Banner View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cycler Banner . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ ĠLinear Snap Helper (). attach To RecyclerView ( recycler Banner ) ĊĠĠĠĠĠĠĠ Ġre cycler Banner . adapter Ġ= Ġbanner Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġèİ·åıĸ çĥŃ éĹ¨ æŃĮ åįķ ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Hot Music List ( limit : ĠInt Ġ= Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic Hot List Ġ= Ġget Hot Music List ( limit ). play lists Ġas ĠArrayList < Music List Bean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( music Hot List . size Ġ> Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List Bean . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List Bean . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List . sub List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List . size Ġ- Ġ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Hot List Bean Ġ= Ġmusic Hot List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Hot Music View () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġit . message , ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Hot Music List ( limit : ĠInt ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic list Ġ= Ġm Presenter . load Hot Music List ( limit ) ĊĠĠĠĠĠĠĠ Ġmusic list ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Hot Music View () Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Hot Adapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġre cycle Music list 2 . adapter Ġ= Ġmusic Hot Adapter ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠLinearLayoutManager ( context !! ) ĊĠĠĠĠĠĠĠ Ġmanager . orientation Ġ= ĠLinearLayoutManager . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġre cycle Music list 2 . layout Manager Ġ= Ġmanager ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġèİ·åıĸ æŃĮ åįķ ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Music List ( limit : ĠInt Ġ= Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= Ġget Music List ( limit ). play lists Ġas ĠArrayList < Music List Bean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( music List . size Ġ> Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List Bean . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List Bean . addAll ( music List . sub List ( music List . size Ġ- Ġ 6 , Ġmusic List . size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List Bean Ġ= Ġmusic List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Music View () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġit . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Music List ( limit : ĠInt ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= Ġm Presenter . load Music List ( limit ) ĊĠĠĠĠĠĠĠ Ġmusic List ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Music View () Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic ListAdapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġre cycle Music list . adapter Ġ= Ġmusic ListAdapter ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠLinearLayoutManager ( context !! ) ĊĠĠĠĠĠĠĠ Ġmanager . orientation Ġ= ĠLinearLayoutManager . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġre cycle Music list . layout Manager Ġ= Ġmanager ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Loading More () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( loading More Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġloading More . setColor Scheme Colors ( Color . BLUE , ĠColor . GREEN , ĠColor . YELLOW , ĠColor . RED ) ĊĠĠĠĠĠĠĠ Ġloading More . set Distance To Trigger Sync ( 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġloading More . set Progress BackgroundColor Scheme Color ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġloading More . setSize ( Swipe Refresh Layout . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġloading More . setOn Refresh Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Fresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fresh Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading More . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Music List ( count Ġ* Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Hot Music List ( count Ġ* Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ discovery ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMusic Detail Activity . start This (( activity Ġas ĠAppCompatActivity ), Ġid ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ