package Ġcom . github . lib li boom . ep ub viewer . main . view model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . github . lib li boom . ep ub viewer . dev . E Pub File Stub Ċ import Ġcom . github . lib li boom . ep ub viewer . util . file . Storage Manager Ċ import Ġcom . github . lib li boom . utils . io . FileUtils Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjavax . inject . Inject Ċ Ċ // ĠTODO : Ġ 2 0 2 0 / 0 5 / 1 3 ĠFetch Ġdata Ġform Ġlocal Ġdatabase Ċ class ĠBooks he lf ViewModel Ġ@ Inject Ġconstructor () Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġe Pub Files Ġ= ĠlistOf < String >() ĊĊĠĠĠ Ġval Ġcover Paths Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠE Pub File Stub . AS SET _ EXTRACT ED _ COVER _ FILE _ PATH _ 0 1 , ĊĠĠĠĠĠĠĠ ĠE Pub File Stub . AS SET _ EXTRACT ED _ COVER _ FILE _ PATH _ 0 2 , ĊĠĠĠĠĠĠĠ ĠE Pub File Stub . AS SET _ EXTRACT ED _ COVER _ FILE _ PATH _ 0 3 , ĊĠĠĠĠĠĠĠ ĠE Pub File Stub . AS SET _ EXTRACT ED _ COVER _ FILE _ PATH _ 0 4 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġinit Resources ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe Pub Files Ġ= Ġcontext . assets . list (" books ") ?. toList () Ġas ĠList < String > ĊĠĠĠĠĠĠĠ Ġforce Initialization ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġforce Initialization ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcached Books Path Ġ= Ġcreate Books Dir If NotExist ( context ) ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġist ream : ĠInputStream ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġo stream : ĠOutputStream ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġe Pub Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġassets File Ġ= ĠE Pub File Stub . BOOK S _ PATH Ġ+ Ġf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġist ream Ġ= Ġcontext . assets . open ( assets File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo stream Ġ= ĠFileOutputStream ( File ( cached Books Path Ġ+ Ġf )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . copy ( istream , Ġo stream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġist ream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo stream . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Books Dir If NotExist ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcached Books Path Ġ= ĠStorage Manager . get Books Path ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠFile ( cached Books Path ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dir . exists (). not ()) Ġdir . mkdir s () ĊĠĠĠĠĠĠĠ Ġreturn Ġcached Books Path ĊĠĠĠ Ġ} Ċ } Ċ