package Ġshort course . read ium . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Destination Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . on Nav Destination Selected Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġshort course . read ium . R Ċ import Ġshort course . read ium . core . base . Base Activity Ċ import Ġshort course . read ium . core . storage . Account Prefs Ċ import Ġshort course . read ium . databinding . MainActivity Binding Ċ import Ġshort course . read ium . view . fragment . Comment Fragment Directions Ċ import Ġshort course . read ium . view . fragment . Home Fragment Directions Ċ import Ġshort course . read ium . view . fragment . Post Fragment Directions Ċ import Ġshort course . read ium . view . fragment . Settings Fragment Directions Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠMainActivity Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontroller : ĠNav Controller ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠAccount Prefs Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . main _ activity ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNav Controller ĊĠĠĠĠĠĠĠ Ġcontroller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠData Ġbinding ĊĠĠĠĠĠĠĠ Ġbinding . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Support ActionBar ( bottom AppBar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠListen Ġfor Ġdestination Ġchange Ġevents ĊĠĠĠĠĠĠĠ Ġcontroller . add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Bottom AppBar For Destination ( destination ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom AppBar For Destination ( nav Destination : ĠNav Destination ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( nav Destination . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ account , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ search , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ auth , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ post , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ on boarding , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ registration , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ compose Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom AppBar . perform Hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab Bottom AppBar . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ settings , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ comment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom AppBar . perform Hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab Bottom AppBar . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection : ĠNav Directions Ġ= Ġwhen Ġ( nav Destination . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ post Ġ-> ĠPost Fragment Directions . action Nav Post To Nav Compose ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ settings Ġ-> ĠSettings Fragment Directions . action Nav Settings To Nav Compose ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ comment Ġ-> ĠComment Fragment Directions . action Nav Comment To Nav Compose ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠHome Fragment Directions . action Nav Home To Nav Compose ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . navigate ( direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom AppBar . perform Show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab Bottom AppBar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab Bottom AppBar . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . navigate ( Home Fragment Directions . action Nav Home To Nav Compose ( null )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . bottom _ app _ bar _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitem . on Nav Destination Selected ( controller ) Ġ|| Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ Ċ }