package Ġcom . br . mar cus mart ins . twitter analyze . features . tweets Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . String Res Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . View Ċ import Ġcom . br . mar cus mart ins . twitter analyze . R Ċ import Ġcom . br . mar cus mart ins . twitter analyze . core . exception . Failure Ċ import Ġcom . br . mar cus mart ins . twitter analyze . core . extension .* Ċ import Ġcom . br . mar cus mart ins . twitter analyze . core . platform . Base Fragment Ċ import Ġcom . br . mar cus mart ins . twitter analyze . features . tweets . entities . T weets Ċ import Ġkotlinx . android . synt hetic . main . fragment _ tweets .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠT weets Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġquery Ġ= Ġ"" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ ACCOUNT _ NAME Ġ= Ġ" param _ account _ name " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( account Name : ĠString ): ĠT weets Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweets Fragment Ġ= ĠT weets Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . putString ( PARAM _ ACCOUNT _ NAME , Ġaccount Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets Fragment . arguments Ġ= Ġarguments ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtweets Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġtweets Adapter : ĠT weets Adapter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtweets ViewModel : ĠT weets ViewModel ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Id () Ġ= ĠR . layout . fragment _ tweets ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġapp Component . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġtweets ViewModel Ġ= ĠviewModel ( viewModel Factory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve ( tweets , Ġ:: render T weets List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve ( analyze , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. run Ġ{ Ġ Ġshow Snackbar ( message , ĠbackgroundColor , ĠtextColor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( failure , Ġ:: handle Failure ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( first Time Created ( savedInstanceState )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġarguments ?. getString ( PARAM _ ACCOUNT _ NAME ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets ViewModel . load T weets ( query ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinitialize View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize View () Ġ{ ĊĠĠĠĠĠĠĠ Ġtweets List . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġtweets List . adapter Ġ= Ġtweets Adapter ĊĠĠĠĠĠĠĠ Ġtweets Adapter . click Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets ViewModel . on Tweet Clicked ( it . text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender T weets List ( tweets : ĠList < T weets > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! tweets . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets Adapter . collection Ġ= Ġtweets . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets List . visible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . invisible () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtweets List . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . visible () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Failure (@ String Res Ġmessage : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtweets List . invisible () ĊĠĠĠĠĠĠĠ Ġempty View . visible () ĊĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠ Ġnotify With Action ( message , ĠR . string . action _ refresh ) Ġ{ Ġtweets ViewModel . load T weets ( query ) Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Failure ( failure : ĠFailure ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( failure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure . Network Connection Ġ-> Ġ{ Ġrender Failure ( R . string . failure _ network _ connection ); Ġclose () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure . ServerError Ġ-> Ġ{ Ġrender Failure ( R . string . failure _ server _ error ); Ġclose () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }