package Ġjp . co . sor am its u . app . root . presentation Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġjp . co . sor am its u . app . R Ċ import Ġjp . co . sor am its u . app . root . di . Root Api Ċ import Ġjp . co . sor am its u . app . root . di . Root Component Ċ import Ġjp . co . sor am its u . app . root . navigation . Navigator Ċ import Ġjp . co . sor am its u . common . base . Base Activity Ċ import Ġjp . co . sor am its u . common . di . Feature Utils Ċ import Ġjp . co . sor am its u . common . utils . Event Observer Ċ import Ġjp . co . sor am its u . common . utils . setVisible Ċ import Ġjp . co . sor am its u . common . utils . show Toast Ċ import Ġjp . co . sor am its u . common . utils . update Padding Ċ import Ġjp . co . sor am its u . splash . presentation . Splash Background Holder Ċ import Ġkotlinx . android . synt hetic . main . activity _ root . main View Ċ import Ġkotlinx . android . synt hetic . main . activity _ root . root Network Bar Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRoot Activity Ġ: ĠBase Activity < Root ViewModel >(), ĠSpl ash Background Holder Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnavigator : ĠNavigator ĊĊĠĠĠ Ġoverride Ġfun Ġinject () Ġ{ ĊĠĠĠĠĠĠĠ ĠFeature Utils . get Feature < Root Component >( this , ĠRoot Api :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. main Activity Component Factory () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġremove Splash Background () ĊĊĠĠĠĠĠĠĠ ĠviewModel . restore d After Config Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġnavigator . attach ( nav Controller , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġroot Network Bar . setOn Apply Window Insets Listener Ġ{ Ġview , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . update Padding ( top Ġ= Ġin sets . system Window Inset Top ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġintent ?. let (:: process Intent ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġprocess Json Open Intent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġnavigator . detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Resource (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . activity _ root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĊĠĠĠĠĠĠĠ Ġprocess Intent ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĊĠĠĠĠĠĠĠ ĠviewModel . notice In Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ ĠviewModel . notice In Foreground () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe ( viewModel : ĠRoot ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . show Connecting Bar LiveData . observe ( this ) Ġ{ Ġshow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Network Bar . setVisible ( show ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . message LiveData . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Splash Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġmain View . setBackground Resource ( R . color . black ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Language () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . notice Language Language () ĊĊĠĠĠĠĠĠĠ Ġrecreate () Ċ Ċ // ĠĠĠĠĠĠĠ Ġrestart After Language Change ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġintent . data ?. toString () ĊĊĠĠĠĠĠĠĠ Ġuri ?. let Ġ{ ĠviewModel . external Url Opened ( uri ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġprivate Ġfun Ġprocess Json Open Intent () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Intent . ACTION _ VIEW Ġ== Ġintent . action Ġ&& Ġintent . type Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" application / json " Ġ== Ġintent . type ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġthis . content Resolver . open InputStream ( intent . data !! ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġfile ?. reader ( Charsets . UTF _ 8 )?. read Text () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . json File Opened ( content ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnav Controller : ĠNav Controller Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( R . id . nav Host ) Ġas ĠNav Host Fragment ĊĊĠĠĠĠĠĠĠ Ġnav Host Fragment . nav Controller ĊĠĠĠ Ġ} Ċ } Ċ