package Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . activities Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . paging . Paged List Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . Which Button Ċ import Ġcom . af ol le st ad . material dialogs . actions . set ActionButton Enabled Ċ import Ġcom . af ol le st ad . material dialogs . input . getInput Field Ċ import Ġcom . af ol le st ad . material dialogs . input . input Ċ import Ġcom . firebase . ui . firestore . paging . Fire store Paging Options Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . firebase . firestore . Query . Direction . DESC ENDING Ċ import Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . R Ċ import Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . adapters . paging . Show Messages Paging Adapter Ċ import Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . data . entities . Message Ċ import Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . data . repository . Message Repository Ċ import Ġcz . pr ague . cv ut . fit . ste ue jan . am tel app . view _ models . activities . Match Dis cussion Activity VM Ċ Ċ class ĠMatch Dis cussion Activity Ġ: ĠAbstract Base Activity (), ĠShow Messages Paging Adapter . Data Loaded Listener Ċ { ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Match Dis cussion Activity VM >() ĊĊĠĠĠ Ġprivate Ġvar Ġmatch Id Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadd Message Button : ĠFloating ActionButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġswipe Refresh Layout : ĠSw ipe Refresh Layout ĊĊĠĠĠ Ġprivate Ġvar Ġmessages RecyclerView : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmessages Adapter : ĠShow Messages Paging Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMATCH _ ID Ġ= Ġ" match Id " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . match _ discussion ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Toolbar Title ( getString ( R . string . discussion )) ĊĠĠĠĠĠĠĠ Ġset Arrow Back () ĊĊĠĠĠĠĠĠĠ Ġintent . extras ?. let Ġ{ Ġbundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Id Ġ= Ġbundle . getString ( MATCH _ ID , Ġ" Who Ġis Ġreading Ġthis , ĠI Ġwish Ġyou Ġa Ġvery Ġnice Ġday .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrefresh Messages () ĊĠĠĠĠĠĠĠ Ġadd Message () ĊĠĠĠĠĠĠĠ Ġshow Messages () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif (:: addMessage Button . is Late init ) Ġadd Message Button . setOnClickListener ( null ) ĊĊĠĠĠĠĠĠĠ Ġmessages Adapter ?. data Loaded Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView ?. adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmessages Adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Messages () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout Ġ= ĠfindViewById ( R . id . match _ discussion _ refresh ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setColor Scheme Resources ( R . color . blue ) ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Adapter ?. refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Message () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Message Button Ġ= ĠfindViewById ( R . id . match _ discussion _ add _ button ) ĊĊĠĠĠĠĠĠĠ Ġadd Message Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( text Ġ= ĠgetString ( R . string . add _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinput : ĠCharSequence Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput ( hint Ġ= ĠgetString ( R . string . add _ message _ hint ), ĠmaxLength Ġ= Ġ 1 0 2 4 , ĠwaitFor Positive Button Ġ= Ġfalse ) Ġ{ Ġdialog , Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Field Ġ= Ġdialog . getInput Field () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// multiple Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Field . set Single Line ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Field . ime Options Ġ= ĠEditor Info . IME _ FLAG _ NO _ ENTER _ ACTION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Field . max Lines Ġ= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// fixed Ġjump ing Ġcursor Ġto Ġthe Ġbeginning Ġof Ġthe Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( text . length Ġ== Ġ 1 ) Ġinput Field . setSelection ( text . length ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Field . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( text . trim (). isNotEmpty ()) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠgetString ( R . string . add _ message _ isEmpty ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set ActionButton Enabled ( Which Button . POSITIVE , Ġtext . trim (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= ĠgetString ( R . string . add )) Ġ{ ĠviewModel . addMessage ( input . toString (), Ġmatch Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . message . observe ( this ) Ġ{ Ġsent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( sent ) Ġmessages Adapter ?. refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Messages () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView Ġ= ĠfindViewById ( R . id . match _ discussion _ re cyclerView ) ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView ?. set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView ?. layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠMessage Repository . get Messages ( match Id , Ġfalse , ĠDESC ENDING ) ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Enable Place holders ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pref etch Distance ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠFire store Paging Options . Builder < Message >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Query ( query , Ġconfig , ĠMessage :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Lifecycle Owner ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġmessages Adapter Ġ= ĠShow Messages Paging Adapter ( options ) ĊĠĠĠĠĠĠĠ Ġmessages Adapter ?. data Loaded Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġmessages RecyclerView ?. adapter Ġ= Ġmessages Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loaded () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Loading () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ }