/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠBSD - style Ġlicense Ċ Ġ* Ġavailable Ġin Ġthe Ġtop - level ĠLICENSE Ġfile Ġof Ġthe Ġproject . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . test app . books he lf Ċ Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . read ium . r 2 . shared . publication . Locator Ċ import Ġorg . read ium . r 2 . shared . publication . Publication Ċ import Ġorg . read ium . r 2 . shared . publication . indexOf First With Href Ċ import Ġorg . read ium . r 2 . test app . db . Books Dao Ċ import Ġorg . read ium . r 2 . test app . domain . model . Book Ċ import Ġorg . read ium . r 2 . test app . domain . model . Bookmark Ċ import Ġorg . read ium . r 2 . test app . domain . model . Highlight Ċ import Ġorg . read ium . r 2 . test app . utils . extensions . author Name Ċ import Ġjava . util .* Ċ import Ġorg . read ium . r 2 . navigator . ep ub . Highlight Ġas ĠNavigator Highlight Ċ Ċ class ĠBook Repository ( private Ġval Ġbooks Dao : ĠBooks Dao ) Ġ{ ĊĊĠĠĠ Ġfun Ġbooks (): ĠLive Data < List < Book >> Ġ= Ġbooks Dao . getAll Books () ĊĊĠĠĠ Ġsuspend Ġfun Ġinsert Book ( href : ĠString , Ġextension : ĠString , Ġpublication : ĠPublic ation ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Ġ= ĠBook ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Ġ= ĠDateTime (). toDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġpublication . metadata . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġpublication . metadata . author Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhref Ġ= Ġhref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġpublication . metadata . identifier Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext Ġ= Ġ".$ extension ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġ"{} " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbooks Dao . insert Book ( book ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Book ( id : ĠLong ) Ġ= Ġbooks Dao . delete Book ( id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Progress ion ( locator : ĠString , Ġbook Id : ĠLong ) Ġ= ĊĠĠĠĠĠĠĠ Ġbooks Dao . save Progress ion ( locator , Ġbook Id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġinsert Bookmark ( book Id : ĠLong , Ġpublication : ĠPublic ation , Ġlocator : ĠLoc ator ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġpublication . reading Order . indexOf First With Href ( locator . href ) !! ĊĠĠĠĠĠĠĠ Ġval Ġbookmark Ġ= ĠBook mark ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Ġ= ĠDateTime (). toDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Id Ġ= Ġbook Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublication Id Ġ= Ġpublication . metadata . identifier Ġ?: Ġpublication . metadata . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Index Ġ= Ġresource . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Href Ġ= Ġlocator . href , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Type Ġ= Ġlocator . type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Title Ġ= Ġlocator . title . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= ĠLoc ator . Locations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġlocator . locations . progress ion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġlocator . locations . position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toJSON (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocator Text Ġ= ĠLoc ator . Text (). toJSON (). toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbooks Dao . insert Bookmark ( bookmark ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbook marks For Book ( book Id : ĠLong ): ĠLive Data < Mutable List < Bookmark >> Ġ= ĊĠĠĠĠĠĠĠ Ġbooks Dao . get Book marks For Book ( book Id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Bookmark ( bookmark Id : ĠLong ) Ġ= Ġbooks Dao . delete Bookmark ( bookmark Id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġhighlight ById ( id : ĠLong ): ĠHighlight ? Ġ= ĊĠĠĠĠĠĠĠ Ġbooks Dao . get Highlight ById ( id ) ĊĊĠĠĠ Ġfun Ġhighlight s For Book ( book Id : ĠLong ): ĠFlow < List < Highlight >> Ġ= ĊĠĠĠĠĠĠĠ Ġbooks Dao . get Highlight s For Book ( book Id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġadd Highlight ( book Id : ĠLong , Ġstyle : ĠHighlight . Style , Ġ@ Color Int Ġt int : ĠInt , Ġlocator : ĠLoc ator , Ġannotation : ĠString ): ĠLong Ġ= ĊĠĠĠĠĠĠĠ Ġbooks Dao . insert Highlight ( Highlight ( book Id , Ġstyle , Ġt int , Ġlocator , Ġannotation )) ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Highlight ( id : ĠLong ) Ġ= Ġbooks Dao . delete Highlight ( id ) ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Highlight Annotation ( id : ĠLong , Ġannotation : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbooks Dao . update Highlight Annotation ( id , Ġannotation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Highlight Style ( id : ĠLong , Ġstyle : ĠHighlight . Style , Ġ@ Color Int Ġt int : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbooks Dao . update Highlight Style ( id , Ġstyle , Ġt int ) ĊĠĠĠ Ġ} Ċ }