package Ġcom . social box . chat . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . app bar . Material Toolbar Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . social box . R Ċ import Ġcom . social box . R . id Ċ import Ġcom . social box . R . string Ċ import Ġcom . social box . chat . data . model . Message Ċ import Ġcom . social box . group . data . model . Group Ċ import Ġcom . social box . login . data . model . User Ċ import Ġjava . util . Calendar Ċ Ċ class ĠChat Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġprivate Ġvar Ġmessages : ĠList < Message > Ġ= ĠlistOf () ĊĠ Ġprivate Ġval Ġgroup Ġby Ġlazy Ġ{ Ġintent . get Parcelable Extra < Group >( GROUP ) Ġ} ĊĠ Ġprivate Ġval Ġuser Ġby Ġlazy Ġ{ Ġintent . get Parcelable Extra < User >( USER ) Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ chat ) ĊĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Material Toolbar >( id . chat Name Bar ) ĊĠĠĠ Ġtoolbar . title Ġ= Ġgroup ?. name Ġ?: ĠgetString ( string . appName ) ĊĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠ Ġsupport ActionBar ?. set Display Show Title Enabled ( true ) ĊĊĠĠĠ Ġval Ġre cyclerView : ĠRecyclerView Ġ= ĠfindViewById ( id . recycler Chat ) ĊĠĠĠ Ġval Ġmessage Input : ĠEditText Ġ= ĠfindViewById ( id . message Input ) ĊĠĠĠ Ġval Ġmessage Send Fab : ĠFloating ActionButton Ġ= ĠfindViewById ( id . send Button ) ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠMessage Adapter ( user ?. id , Ġuser ?. photo URL ) ĊĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĊĠĠĠ Ġmessage Send Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġval Ġdate Ġ= ĠCalendar . getInstance (). time . toString (). split (" Ġ") ĊĠĠĠĠĠ Ġif Ġ( message Input . text . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage ( ĊĠĠĠĠĠĠĠĠĠ Ġsender Id Ġ= Ġuser ?. id !! , ĊĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġmessage Input . text . toString (). trim (), ĊĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġ"${ date [ 1 ]} Ġ${ date [ 2 ]} Ġ${ date [ 3 ] }", ĊĠĠĠĠĠĠĠĠĠ Ġsender Name Ġ= Ġuser ?. name !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Messages Ġ= Ġmessages Ġ+ ĠlistOf ( message ) ĊĠĠĠĠĠĠĠ Ġmessages Ġ= Ġnew Messages ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( new Messages ) ĊĠĠĠĠĠĠĠ Ġmessage Input . text . clear () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtoolbar . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġval Ġintent Ġ= ĠChat Settings Activity . create Intent ( this , Ġgroup , Ġuser ) ĊĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠGROUP Ġ= Ġ" group " ĊĠĠĠ Ġprivate Ġconst Ġval ĠUSER Ġ= Ġ" user " ĊĊĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , Ġgroup : ĠGroup ?, Ġuser : ĠUser ?): ĠIntent Ġ{ ĊĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠChat Activity :: class . java ) ĊĠĠĠĠĠ Ġintent . putExtra ( GROUP , Ġgroup ) ĊĠĠĠĠĠ Ġintent . putExtra ( USER , Ġuser ) ĊĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }