package Ġcom . net no vel reader . ui . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . net no vel reader . R Ċ import Ġcom . net no vel reader . repo . Site Selector Repo Ċ import Ġcom . net no vel reader . utils .* Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . io . File Ċ Ċ class ĠSpl ash Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġval Ġreq Ġ= Ġ 2 1 7 ĊĠĠĠ Ġvar Ġcomposite Disposable : ĠComposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ splash ) ĊĠĠĠĠĠĠĠ Ġval Ġis Init Ġ= Ġshared Preferences (). get ( getString ( R . string . is Init Key ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġrepo Ġ= ĠSite Selector Repo ( application ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . get Selectors From Net () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . from ( IO _ EXECUT OR )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences (). put ( getString ( R . string . is Init Key ), Ġit . size Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . save All ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart MainActivity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( getString ( R . string . get _ site _ selector _ failed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart MainActivity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġcomposite Disposable . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Dir Ġ= ĠFile ( books Dir Old ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Dir . copy Re cursively ( File ( books Dir ()), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Dir . delete Re cursively () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . cacheDir . list Files (). forEach Ġ{ Ġit . delete Re cursively () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart MainActivity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġreq ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Splash Activity , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart MainActivity () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Splash Activity , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Permission ( android . Manifest . permission . WRITE _ EXTERNAL _ STORAGE , Ġreq ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Permission () Ġ= ĊĠĠĠĠĠĠĠ ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĊĠĠĠ Ġprivate Ġfun Ġrequire Permission ( permission : ĠString , Ġreq Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠArray ( 1 ) Ġ{ Ġpermission Ġ}, Ġreq Code ) ĊĠĠĠ Ġ} Ċ } Ċ