package Ġcom . eye . eye . ui . community . follow Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . eye . eye . R Ċ import Ġcom . eye . eye . event . Message Event Ċ import Ġcom . eye . eye . event . Refresh Event Ċ import Ġcom . eye . eye . extension . g one Ċ import Ġcom . eye . eye . extension . log D Ċ import Ġcom . eye . eye . extension . show To as Ċ import Ġcom . eye . eye . extension . visible Ċ import Ġcom . eye . eye . ui . common . callback . Auto Play Scroll Listener Ċ import Ġcom . eye . eye . ui . common . ui . Base Fragment Ċ import Ġcom . eye . eye . util . Global Util Ċ import Ġcom . eye . eye . util . Injector Util Ċ import Ġcom . eye . eye . util . Response Handler Ċ import Ġcom . sc wang . smart . refresh . layout . constant . Refresh State Ċ import Ġcom . sh uy u . gs y vide op layer . G SY Video Manager Ċ import Ġkotlinx . android . synt hetic . main . fragment _ refresh _ layout .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search . re cyclerView Ċ Ċ class ĠFollow Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Provider ( this , Injector Util . get Follow ViewModel Factory ()). get ( Follow ViewModel :: class . java ) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : Follow Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater . inflate ( R . layout . fragment _ refresh _ layout , container , false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠFollow Adapter ( this , viewModel . data List ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . item Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( Auto Play Scroll Listener ( R . id . video Player , Auto Play Scroll Listener . PLAY _ RANGE _ TOP , Auto Play Scroll Listener . PLAY _ RANGE _ BOTTOM )) Ġ Ġ// å®ŀçİ° æ»ļ åĬ¨ çļĦ èĩªåĬ¨ æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ Ġrefresh Layout . setOn Refresh Listener Ġ{ ĠviewModel . on Refresh () Ġ} ĊĠĠĠĠĠĠĠ Ġrefresh Layout . setOn Load More Listener Ġ{ ĠviewModel . on Load More () Ġ} ĊĠĠĠĠĠĠĠ Ġrefresh Layout . g one () ĊĠĠĠĠĠĠĠ Ġobserve () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Message Event ( message Event : ĠMessage Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Message Event ( message Event ) ĊĠĠĠĠĠĠĠ Ġif Ġ( message Event Ġis ĠRefresh Event Ġ&& Ġjava Class Ġ== Ġmessage Event . activity Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . auto Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . adapter ?. item Count Ġ?: Ġ 0 Ġ> Ġ 0 ) Ġre cyclerView . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . data List LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresult . get OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Handler . get Failure Tips ( result . exception OrNull ()). let Ġ{ Ġif Ġ( viewModel . data List . isNull OrEmpty ()) Ġload Failed ( it ) Ġelse Ġit . show To as () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . close Header Or Footer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Finished () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . next Page Url Ġ= Ġresponse . next Page Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . item List . isNull OrEmpty () Ġ&& ĠviewModel . data List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . close Header Or Footer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . item List . isNull OrEmpty () Ġ&& ĠviewModel . data List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . finish Load More With No More Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( refresh Layout . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRefresh State . None , Refresh State . Refresh ing Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . addAll ( response . item List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRefresh State . Loading Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Count Ġ= ĠviewModel . data List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . addAll ( response . item List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify Item Range Inserted ( item Count , response . item List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> {} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . next Page Url . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . finish Load More With No More Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . close Header Or Footer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠG SY Video Manager . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠG SY Video Manager . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ ĠG SY Video Manager . release All Videos () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data Once () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . load Data Once () ĊĠĠĠĠĠĠĠ Ġstart Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . start Loading () ĊĠĠĠĠĠĠĠ ĠviewModel . on Refresh () ĊĠĠĠĠĠĠĠ Ġrefresh Layout . g one () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Finished () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . load Finished () ĊĠĠĠĠĠĠĠ Ġrefresh Layout . visible () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Failed ( mas : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . load Failed ( mas ) ĊĠĠĠĠĠĠĠ Ġshow Load Error View ( mas ?: ĠGlobal Util . getString ( R . string . unknown _ error )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠFollow Fragment () ĊĠĠĠ Ġ} Ċ }