package Ġstream . re config . kir in mar u . android . ui . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . Id Res Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcommon s . android . arch . ViewModel Factory Ċ import Ġcommon s . android . arch . observe NonNull Ċ import Ġcommon s . android . arch . viewModel Ċ import Ġcommon s . android . core . activity . Drawer Binding Activity Ċ import Ġstream . re config . kir in mar u . android . ui . navigation . Fragment Navigator Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠDraw er Binding Activity () Ġ{ ĊĠ Ġoverride Ġfun Ġtoggle Bottom Nav ( enabled : ĠBoolean ) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow Drawer ( gravity : ĠInt ) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġvm f : ĠViewModel Factory ĊĊĠ Ġprivate Ġval Ġm vm Ġby Ġlazy Ġ{ ĠviewModel ( vm f , ĠMain ViewModel :: class . java ) Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠ Ġbind ContentView () ĊĠĠĠ Ġbinding . drawer Navigation . set Navigation ItemSelected Listener ( this ) ĊĊĠĠĠ Ġm vm . app State . observe NonNull ( this ) Ġ{ Ġapp State Ġ-> ĊĠĠĠĠĠ Ġapp State . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Load Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġfuture Ġfirst Load Ġfeatures ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinit Drawer Nav ( first Nav ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn ĠFragment Navigator . side Navigate ( ĊĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠ Ġitem , ĊĠĠĠĠĠ Ġbinding . drawer Navigation . menu , ĊĠĠĠĠĠ Ġm vm . app State . value !!. first Origin !! ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit Drawer Nav (@ Id Res Ġid : ĠInt ) Ġ{ ĊĠĠĠ Ġbinding . drawer Navigation . apply Ġ{ ĊĠĠĠĠĠ Ġmenu . perform Identifier Action ( id , ĠMenu . FLAG _ PER FORM _ NO _ CLOSE ) ĊĠĠĠĠĠ Ġset Checked Item ( id ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }