package Ġcom . entity . unity . co un sell or Chat Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . entity . unity . R Ċ import Ġcom . entity . unity . Vc 2 Ċ import Ġcom . entity . unity . Vc Activity Ċ import Ġcom . entity . unity . vide oc all . Video Activity Ċ import Ġcom . entity . unity . adapter . Co un sell or Message Adapter Ċ import Ġcom . entity . unity . model . Message Data Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database .* Ċ Ċ class ĠCo un sell or Chat ting Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchat RecyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessage Box : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsent Button : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessage Adapter : ĠCo un sell or Message Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessage List : ĠArrayList < Message Data > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Db Ref : ĠDatabase Reference ĊĠĠĠ Ġvar Ġrec ie ver Room : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsender Room : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ co un sell or _ chat ting ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar : ĠAction Bar ? Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġaction Bar !!. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġemail = Ġintent . getString Extra (" email ") ĊĠĠĠĠĠĠĠ Ġval Ġrec ie ver Uid Ġ= Ġintent . getString Extra (" uid ") ĊĠĠĠĠĠĠĠ Ġval Ġsender Uid Ġ= ĠFirebase Auth . getInstance (). currentUser ?. uid ĊĠĠĠĠĠĠĠ Ġm Db Ref Ġ= ĠFirebase Database . getInstance (). getReference () ĊĊĠĠĠĠĠĠĠ Ġsender Room Ġ= Ġrec ie ver Uid Ġ+ Ġsender Uid ĊĠĠĠĠĠĠĠ Ġrec ie ver Room Ġ= Ġsender Uid Ġ+ Ġrec ie ver Uid ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġemail ĊĊĠĠĠĠĠĠĠ Ġchat RecyclerView Ġ= ĠfindViewById ( R . id . chat RecyclerView ) ĊĊĠĠĠĠĠĠĠ Ġmessage Box Ġ= ĠfindViewById ( R . id . message Box ) ĊĊĠĠĠĠĠĠĠ Ġsent Button Ġ= ĠfindViewById ( R . id . co un sell or Sent Button ) ĊĠĠĠĠĠĠĠ Ġmessage List Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġmessage Adapter Ġ= ĠCo un sell or Message Adapter ( this , Ġmessage List ) ĊĊĠĠĠĠĠĠĠ Ġchat RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġchat RecyclerView . adapter Ġ= Ġmessage Adapter ĊĊĠĠĠĠĠĠĠ Ġm Db Ref . child (" ch ats "). child ( sender Room !! ). child (" messages ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Snapshot Ġin Ġsnapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġpost Snapshot . getValue ( Message Data :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage List . add ( message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat RecyclerView . smooth Scroll To Position ( message Adapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsent Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġmessage Box . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Object Ġ= ĠMessage Data ( message , Ġsender Uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Db Ref . child (" ch ats "). child ( sender Room !! ). child (" messages "). push () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setValue ( message Object ). add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Db Ref . child (" ch ats "). child ( rec ie ver Room !! ). child (" messages "). push () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setValue ( message Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Box . setText ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . vc , menu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . vc ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠV c 2 :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ } Ċ