/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠX iz hi ĠZ hu Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġme . x iz zh u . android . j osh ua . annotated Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . combine Ċ import Ġkotlinx . coroutines . flow . filter Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġme . x iz zh u . android . j osh ua . core .* Ċ import Ġme . x iz zh u . android . j osh ua . infra . activity . Base Settings ViewModel Ċ Ċ data Ġclass ĠAnnot ated Ver ses < V Ġ: ĠVer se Annotation >( ĊĠĠĠĠĠĠĠ Ġ@ Constants . SortOrder Ġval Ġsort Order : ĠInt , Ġval Ġver ses : ĠList < Pair < V , ĠVer se >>, ĊĠĠĠĠĠĠĠ Ġval Ġbook Names : ĠList < String >, Ġval Ġbook Short Names : ĠList < String > Ċ ) Ċ Ċ data Ġclass ĠLoading Request ( val Ġcurrent Translation : ĠString , Ġ@ Constants . SortOrder Ġval Ġsort Order : ĠInt ) Ċ Ċ abstract Ġclass ĠBase Annotated Ver ses ViewModel < V Ġ: ĠVer se Annotation >( private Ġval Ġb ible Reading Manager : ĠBible Reading Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġver se Annotation Manager : ĠVer se Annotation Manager < V >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Manager : ĠSettings Manager ) Ġ: ĠBase Settings ViewModel ( settings Manager ) Ġ{ ĊĠĠĠ Ġfun Ġsort Order (): ĠFlow < Int > Ġ= Ġver se Annotation Manager . sort Order () ĊĊĠĠĠ Ġsuspend Ġfun Ġsave SortOrder (@ Constants . SortOrder Ġsort Order : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġver se Annotation Manager . save SortOrder ( sort Order ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġloading Request (): ĠFlow < Loading Request > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombine ( bible Reading Manager . current Translation (). filter Ġ{ Ġit . isNotEmpty () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġver se Annotation Manager . sort Order ()) Ġ{ Ġcurrent Translation , Ġsort Order Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Request ( current Translation , Ġsort Order ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġannotated Ver ses ( loading Request : ĠLoading Request ): ĠFlow < Annotated Ver ses < V >> Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotations Ġ= Ġver se Annotation Manager . read ( loading Request . sort Order ) ĊĠĠĠĠĠĠĠ Ġval Ġver ses Ġ= Ġb ible Reading Manager . read Ver ses ( loading Request . current Translation , Ġannotations . map Ġ{ Ġit . verse Index Ġ}) ĊĠĠĠĠĠĠĠ Ġemit ( Annotated Ver ses ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Request . sort Order , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotations . map NotNull Ġ{ Ġannotation Ġ-> Ġver ses [ annotation . verse Index ]?. let Ġ{ ĠPair ( annotation , Ġit ) Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ible Reading Manager . read Book Names ( loading Request . current Translation ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ible Reading Manager . read Book Short Names ( loading Request . current Translation ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Current Ver se Index ( verse Index : ĠVer se Index ) Ġ{ ĊĠĠĠĠĠĠĠ Ġb ible Reading Manager . save Current Ver se Index ( verse Index ) ĊĠĠĠ Ġ} Ċ } Ċ