package Ġchat . rocket . android . fragment . chat room . list Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġchat . rocket . android . R Ċ import Ġchat . rocket . android . helper . End less RecyclerView Scroll Listener Ċ import Ġchat . rocket . android . layout helper . chat room . list . Room FileList Adapter Ċ import Ġchat . rocket . android . layout helper . chat room . list . Room Member ListAdapter Ċ import Ġchat . rocket . android . layout helper . chat room . list . Room Messages Adapter Ċ import Ġchat . rocket . core . models . Attachment Ċ import Ġchat . rocket . core . models . Message Ċ import Ġchat . rocket . core . models . User Ċ import Ġkotlinx . android . synt hetic . main . fragment _ room _ list .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠF ili pe Ġde ĠL ima ĠB rito Ġ( fil ipe delim ab rito @ gmail . com ) Ġon Ġ 9 / 2 2 / 1 7 . Ċ Ġ*/ Ċ class ĠRoom List Fragment Ġ: ĠFragment (), ĠRoom List Contract . View Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( action Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhostname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId : ĠString ): ĠRoom List Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int (" action Id ", Ġaction Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" roomId ", Ġroom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" room Type ", Ġroom Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" hostname ", Ġhostname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" token ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" userId ", ĠuserId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroom FileList Dialog Fragment Ġ= ĠRoom List Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom FileList Dialog Fragment . arguments Ġ= Ġargs ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroom FileList Dialog Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġarguments ĊĠĠĠĠĠĠĠ Ġargs ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Id Ġ= Ġargs . getInt (" action Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id Ġ= Ġargs . getString (" roomId ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type Ġ= Ġargs . getString (" room Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhostname Ġ= Ġargs . getString (" hostname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġargs . getString (" token ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġargs . getString (" userId ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ= Ġinflater . inflate ( R . layout . fragment _ room _ list , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠRoom List Presenter ( context !! , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Data Requested ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Data ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Data Requested Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġpresenter . cancel Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Data ( offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pinned _ messages Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . request Pin ned Messages ( roomId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhostname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ file _ list Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . request FileList ( roomId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhostname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ favorite _ messages Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . request Favorite Messages ( roomId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhostname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ member _ list Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . request Member List ( roomId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhostname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Pin ned Messages ( data Set : ĠArrayList < Message >, Ġtotal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= ĠgetString ( R . string . fragment _ room _ list _ pinned _ message _ title , Ġtotal ) ĊĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠRoom Messages Adapter ( data Set , Ġhostname , Ġcontext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Set . size Ġ>= Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( object Ġ: ĠEnd less RecyclerView Scroll Listener ( linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More ( page : ĠInt , Ġtotal Items Count : ĠInt , Ġre cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Next Data From Api ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( re cyclerView . adapter Ġas ĠRoom Messages Adapter ). add DataSet ( data Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Favorite Messages ( data Set : ĠArrayList < Message >, Ġtotal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= ĠgetString ( R . string . fragment _ room _ list _ favorite _ message _ title , Ġtotal ) ĊĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠRoom Messages Adapter ( data Set , Ġhostname , Ġcontext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Set . size Ġ>= Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( object Ġ: ĠEnd less RecyclerView Scroll Listener ( linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More ( page : ĠInt , Ġtotal Items Count : ĠInt , Ġre cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Next Data From Api ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( re cyclerView . adapter Ġas ĠRoom Messages Adapter ). add DataSet ( data Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow FileList ( data Set : ĠArrayList < Attachment >, Ġtotal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= ĠgetString ( R . string . fragment _ room _ list _ file _ list _ title , Ġtotal ) ĊĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠRoom FileList Adapter ( data Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Set . size Ġ>= Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( object Ġ: ĠEnd less RecyclerView Scroll Listener ( linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More ( page : ĠInt , Ġtotal Items Count : ĠInt , Ġre cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Next Data From Api ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( re cyclerView . adapter Ġas ĠRoom FileList Adapter ). add DataSet ( data Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Member List ( data Set : ĠArrayList < User >, Ġtotal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= ĠgetString ( R . string . fragment _ room _ list _ member _ list _ title , Ġtotal ) ĊĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠRoom Member ListAdapter ( data Set , Ġhostname , Ġcontext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Set . size Ġ>= Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . add On Scroll Listener ( object Ġ: ĠEnd less RecyclerView Scroll Listener ( linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More ( page : ĠInt , Ġtotal Items Count : ĠInt , Ġre cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Next Data From Api ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( re cyclerView . adapter Ġas ĠRoom Member ListAdapter ). add DataSet ( data Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Text . text Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġmessage Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Waiting View ( should Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwaiting View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwaiting View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Next Data From Api ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Data ( page Ġ* Ġ 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġaction Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroom Id : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroom Type : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhostname : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoken : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠuserId : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠRoom List Contract . Presenter ĊĠĠĠ Ġprivate Ġvar Ġis Data Requested : ĠBoolean Ġ= Ġfalse Ċ }