package Ġcom . example . bab ble Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . bab ble . fragments . Ch ats Fragment Ċ import Ġcom . example . bab ble . fragments . Profile Fragment Ċ import Ġcom . example . bab ble . fragments . Search Fragment Ċ import Ġcom . example . bab ble . glide . G lide App Ċ import Ġcom . example . bab ble . service . My Firebase Messaging Service Ċ import Ġcom . example . bab ble . service . My Firebase Messaging Service . Companion . shared Pref Ċ import Ġcom . example . bab ble . utils . Constants Ċ import Ġcom . example . bab ble . utils . Fire store Ċ import Ġcom . example . bab ble . utils . Storage Util Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Service Ċ import Ġkotlinx . android . synt hetic . main . activity _ ch ats .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ sign _ up .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile .* Ċ import Ġkotlinx . android . synt hetic . main . nav _ header .* Ċ Ċ class ĠCh ats Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawer : ĠDraw er Layout ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ch ats ) ĊĊĠĠĠĠĠĠĠ Ġ// Reference Ġthe ĠCh ats Ġand ĠSearch ĠF rag ments ĊĠĠĠĠĠĠĠ Ġval Ġch ats Fragment Ġ= ĠCh ats Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġsearch Fragment Ġ= ĠSearch Fragment () ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġthe Ġdefault Ġfragment Ġview Ġto ĠCh ats Fragment ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ ch ats . setBackground Resource ( R . drawable . rounded _ corners ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( Ch ats Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Make Ġthe ĠView ĠFull Screen ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġdrawer Ġby ĠID ĊĠĠĠĠĠĠĠ Ġdrawer Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġvar Ġnavigation View : ĠNavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġnavigation View . set Navigation ItemSelected Listener ( m On Navigation ItemSelected Listener ) ĊĊĠĠĠĠĠĠĠ Ġ// Menu ĠIcon ĊĠĠĠĠĠĠĠ Ġvar Ġmenu _ icon Ġ= ĠfindViewById < ImageView >( R . id . bur ger _ menu ) ĊĊĠĠĠĠĠĠĠ Ġ// Toggle Ġfor Ġnavigation Ġdrawer Ġopen Ġand Ġclose ĊĠĠĠĠĠĠĠ Ġvar Ġtoggle : ĠAction Bar Drawer Toggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . navigation _ drawer _ open , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . navigation _ drawer _ close ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdrawer . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĊĠĠĠĠĠĠĠ Ġ// On ĠMenu ĠIcon ĠClick ĠOpen ĠMenu ĊĠĠĠĠĠĠĠ Ġmenu _ icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . open Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġprofile Icon Ġ= ĠfindViewById < ImageView >( R . id . profile _ image ) ĊĊĠĠĠĠĠĠĠ Ġprofile Icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent Ġ( this , ĠProfile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv _ ch ats . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ ch ats . setBackground Resource ( R . drawable . rounded _ corners ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ search . setBackground Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fl _ fragment , Ġch ats Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv _ search . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ search . setBackground Resource ( R . drawable . rounded _ corners ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ ch ats . setBackground Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fl _ fragment , Ġsearch Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace Fragment ( fragment : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fl _ fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġm On Navigation ItemSelected Listener Ġ= ĠNavigation View . On Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . profile _ menu Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠProfile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . profile _ layout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠCh ats Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer . is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }