package Ġcom . commit 4 5 1 . gitlab . fragment Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . OnClick Ċ import Ġcom . commit 4 5 1 . gitlab . App Ċ import Ġcom . commit 4 5 1 . gitlab . R Ċ import Ġcom . commit 4 5 1 . gitlab . activity . Project Activity Ċ import Ġcom . commit 4 5 1 . gitlab . adapter . Project Members Adapter Ċ import Ġcom . commit 4 5 1 . gitlab . dialog . Access Dialog Ċ import Ġcom . commit 4 5 1 . gitlab . event . Member Added Event Ċ import Ġcom . commit 4 5 1 . gitlab . event . Project Reload Event Ċ import Ġcom . commit 4 5 1 . gitlab . extension . belongsTo Group Ċ import Ġcom . commit 4 5 1 . gitlab . extension . with Ċ import Ġcom . commit 4 5 1 . gitlab . model . api . Project Ċ import Ġcom . commit 4 5 1 . gitlab . model . api . User Ċ import Ġcom . commit 4 5 1 . gitlab . navigation . Navigator Ċ import Ġcom . commit 4 5 1 . gitlab . rx . Custom Complete Observer Ċ import Ġcom . commit 4 5 1 . gitlab . rx . Custom Response Single Observer Ċ import Ġcom . commit 4 5 1 . gitlab . util . Link Header Parser Ċ import Ġcom . commit 4 5 1 . gitlab . view Holder . Project Member ViewHolder Ċ import Ġio . reactivex . Single Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġretrofit 2 . Response Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠProject Members Fragment Ġ: ĠB utter Kn ife Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠProject Members Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠProject Members Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BindView ( R . id . root ) ĊĠĠĠ Ġlateinit Ġvar Ġroot : ĠView ĊĠĠĠ Ġ@ BindView ( R . id . swipe _ layout ) ĊĠĠĠ Ġlateinit Ġvar Ġswipe Refresh Layout : ĠSw ipe Refresh Layout ĊĠĠĠ Ġ@ BindView ( R . id . list ) ĊĠĠĠ Ġlateinit Ġvar Ġlist Members : ĠRecyclerView ĊĠĠĠ Ġ@ BindView ( R . id . message _ text ) ĊĠĠĠ Ġlateinit Ġvar Ġtext Message : ĠTextView ĊĠĠĠ Ġ@ BindView ( R . id . add _ user _ button ) ĊĠĠĠ Ġlateinit Ġvar Ġbutton Add User : ĠFloating ActionButton ĊĊĠĠĠ Ġlateinit Ġvar Ġadapter Project Members : ĠProject Members Adapter ĊĠĠĠ Ġlateinit Ġvar Ġlayout Manager Members : ĠGrid LayoutManager ĊĊĠĠĠ Ġvar Ġproject : ĠProject ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġmember : ĠUser ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġnext Page Url : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġloading Ġ= Ġfalse ĊĊĠĠĠ Ġval Ġon Scroll Listener Ġ= Ġobject Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView ?, Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible ItemCount Ġ= Ġlayout Manager Members . child Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal ItemCount Ġ= Ġlayout Manager Members . item Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Ġ= Ġlayout Manager Members . findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Visible Item Ġ+ Ġvisible ItemCount Ġ>= Ġtotal ItemCount Ġ&& Ġ! loading Ġ&& Ġnext Page Url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ OnClick ( R . id . add _ user _ button ) ĊĠĠĠ Ġfun Ġon Add User Click ( fab : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNavigator . navigate ToAdd Project Member ( base Activ ty , Ġfab , Ġproject !!. id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ members , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠApp . bus (). register ( this ) ĊĊĠĠĠĠĠĠĠ Ġadapter Project Members Ġ= ĠProject Members Adapter ( object Ġ: ĠProject Members Adapter . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Project Member Clicked ( member : ĠUser , Ġmember Group ViewHolder : ĠProject Member ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigator . navigate To User ( base Activ ty , Ġmember Group ViewHolder . image , Ġmember ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Remove Member ( member : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Project Members Fragment . member Ġ= Ġmember ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . get (). git Lab . remove Project Member ( project !!. id , Ġmember . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( this @ Project Members Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠCustom Complete Observer () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġerror ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( root , ĠR . string . failed _ to _ remove _ member , ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcomplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . remove Member ( this @ Project Members Fragment . member !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChange Access ( member : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccess Dialog Ġ= ĠAccess Dialog ( base Activ ty , Ġmember , Ġproject !!. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Dialog . setOn Access Changed Listener ( object Ġ: ĠAccess Dialog . On Access Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Access Changed ( member : ĠUser , Ġaccess Level : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon See Group Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigator . navigate To Group ( base Activ ty , Ġproject !!. namespace . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġlayout Manager Members Ġ= ĠGrid LayoutManager ( activity , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġlayout Manager Members . span Size Lookup Ġ= Ġadapter Project Members . span Size Lookup ĊĠĠĠĠĠĠĠ Ġlist Members . layout Manager Ġ= Ġlayout Manager Members ĊĠĠĠĠĠĠĠ Ġlist Members . adapter Ġ= Ġadapter Project Members ĊĠĠĠĠĠĠĠ Ġlist Members . add On Scroll Listener ( on Scroll Listener ) ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ Ġload Data () Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠProject Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġ( activity Ġas ĠProject Activity ). project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Namespace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Incorrect Ġparent Ġactivity ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . bus (). unregister ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( project Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġnext Page Url Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġloading Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġload ( App . get (). git Lab . getProject Members ( project !!. id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( next Page Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġloading Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠTim ber . d (" load More Ġcalled Ġfor Ġ" Ġ+ Ġnext Page Url !! ) ĊĠĠĠĠĠĠĠ Ġload ( App . get (). git Lab . getProject Members ( next Page Url !!. toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload ( observable : ĠSingle < Response < List < User >> >) Ġ{ ĊĠĠĠĠĠĠĠ Ġobservable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠCustom Response Single Observer < List < User >>() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġerror ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Message . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Message . setText ( R . string . connection _ error _ users ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Add User . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . set Project Members ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Page Url Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresponse NonNull Success ( members : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! members . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Message . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( next Page Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" No Ġproject Ġmembers Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Message . setText ( R . string . no _ project _ members ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Message . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Add User . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Page Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . set Project Members ( members ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . add Project Members ( members ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Page Url Ġ= ĠLink Header Parser . parse ( response ()). next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Next Ġpage Ġurl Ġ" Ġ+ Ġnext Page Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Namespace () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( project Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// If Ġthere Ġis Ġan Ġowner , Ġthen Ġthere Ġis Ġno Ġgroup ĊĠĠĠĠĠĠĠ Ġif Ġ( project !!. belongsTo Group ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . set Namespace ( project !!. namespace ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Project Members . set Namespace ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ĊĠĠĠ Ġfun Ġon Project Reload ( event : ĠProject Reload Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Ġ= Ġevent . project ĊĠĠĠĠĠĠĠ Ġset Namespace () ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ĊĠĠĠ Ġfun Ġon Member Added ( event : ĠMember Added Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Project Members . add Member ( event . member ) ĊĠĠĠĠĠĠĠ Ġtext Message . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ }