package Ġcom . ra ul . mac ias . wiki hero es . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . ra ul . mac ias . wiki hero es . Build Config Ċ import Ġcom . ra ul . mac ias . wiki hero es . api . ApiResponse Ċ import Ġcom . ra ul . mac ias . wiki hero es . api . Mar vel Api Ċ import Ġcom . ra ul . mac ias . wiki hero es . api . Resource Ċ import Ġcom . ra ul . mac ias . wiki hero es . models . Detail Ċ import Ġcom . ra ul . mac ias . wiki hero es . models . Detail Response Ċ import Ġcom . ra ul . mac ias . wiki hero es . models . Desk Item Ċ import Ġcom . ra ul . mac ias . wiki hero es . room . Com ics Dao Ċ import Ġcom . ra ul . mac ias . wiki hero es . room . Shop Dao Ċ import Ġcom . ra ul . mac ias . wiki hero es . utils . Preference Manager Ċ import Ġcom . ra ul . mac ias . wiki hero es . utils . Utils Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ import Ġkotlin . concurrent . thread Ċ Ċ @ Singleton Ċ class ĠCom ics Repository Ġ@ Inject Ċ constructor ( private Ġval Ġmar vel Api : ĠMar vel Api , Ġval Ġcom ics Dao : ĠCom ics Dao , Ġval Ġshop Dao : ĠShop Dao , Ġval Ġpreference Manager : ĠPreference Manager ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdefault Limit Ġ= Ġ 1 0 ĊĊĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval Ġtimestamp Ġ= ĠDate (). time ĊĊĠĠĠ Ġprivate Ġval Ġhash Ġ= ĠUtils . md 5 ( timestamp . toString () Ġ+ ĠBuild Config . MAR VEL _ PRIVATE _ KEY Ġ+ ĠBuild Config . MAR VEL _ API _ KEY ) ĊĊĠĠĠ Ġfun Ġget Com ics By Series Id ( id : ĠString ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Series Id ( id , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ"- issue Number ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics By Series Id ( id : ĠString , Ġoffset : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Series Id ( id , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ"- issue Number ", Ġoffset , Ġdefault Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics By Creator Id ( id : ĠString , Ġoffset : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Creator Id ( id , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġtrue , Ġ"- ons ale Date ", Ġoffset , Ġdefault Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics By Creator Id ( id : ĠString ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Creator Id ( id , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġtrue , Ġ"- ons ale Date ", Ġ 0 , Ġdefault Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics By Character Id ( id : ĠInt , Ġoffset : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Character Id ( id . toString (), ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ"- ons ale Date ", Ġoffset , Ġdefault Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Events By Creator Id ( id : ĠString , Ġoffset : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Events By Creator Id ( id , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ" issue Number ", Ġoffset , Ġdefault Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics By Character Id ( id : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Character Id ( id . toString (), ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ"- ons ale Date ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Com ics Of The Week ( week : ĠUtils . WEEK ): ĠLive Data < Resource < List < Detail >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠNetwork Bound Resource < List < Detail >, ĠDetail Response >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave Fetch Data ( item : ĠDetail Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Manager . setString ( Preference Manager . LAST _ DATE _ SYNC , ĠUtils . getCurrent Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Com ics Ġ= Ġitem . data . results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Com ics . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( week Ġ== ĠUtils . WEEK . this Week ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Manager . setString ( Preference Manager . THIS _ WEEK , Ġget Published Date ( new Com ics [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġdefault Limit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Com ics . forEach Ġ{ Ġcom ic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ic . page Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ic . week Ġ= Ġweek ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ics Dao . insert Com ics ( new Com ics ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Fetch ( data : ĠList < Detail >? ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġdata . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Ġ== Ġnull Ġ|| Ġdata . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload From Db (): ĠLive Data < List < Detail >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcom ics Dao . get Com ics ( week ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfetch Service (): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics Of The Week ( week . toString (), Ġ"- ons ale Date ", Ġtimestamp . toString (), ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġ 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fetch Failed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. as LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ol dest Com ics By Character Id ( id : ĠInt ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . get Com ics By Character Id ( id . toString (), ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ" ons ale Date ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Sync Com ics () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcal . add ( Calendar . DAY _ OF _ WEEK , Ġ-( cal . get ( Calendar . DAY _ OF _ WEEK ) Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġtoday Calendar Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= Ġtoday Calendar . time ĊĠĠĠĠĠĠĠ Ġval Ġlast S unday Ġ= Ġcal . time ĊĊĊĠĠĠĠĠĠĠ Ġif ( today . after ( last S unday ) Ġ|| Ġtoday Ġ== Ġlast S unday ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ics Dao . delete Com ics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠaddTo Shop ( det : ĠDetail ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshop Item Ġ= ĠDes k Item ( det . id , Ġdet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop Dao . insert Item In Shop ( shop Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove From Shop ( det : ĠDetail ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop Dao . removeItem From Shop ( det . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem From Shop ( det : ĠDetail ): ĠLive Data < Desk Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshop Dao . getItem From Shop ( det . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Items From Shop (): ĠLive Data < List < Desk Item >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshop Dao . get Com ics In Desk () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Published Date ( item : ĠDetail ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . dates Ġ!= Ġnull Ġ&& Ġitem . dates . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( date Ġin Ġitem . dates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( date . type . equals (" ons ale Date ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate . date . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget This Week Date (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpreference Manager . getString ( Preference Manager . THIS _ WEEK , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch Com ics Name StartsWith ( name StartsWith : ĠString ): ĠLive Data < ApiResponse < Detail Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmar vel Api . search Com ics Name StartsWith ( name StartsWith , ĠBuild Config . MAR VEL _ API _ KEY , Ġhash , Ġtimestamp . toString (), Ġ"- ons ale Date ", Ġoffset , Ġdefault Limit ) ĊĠĠĠ Ġ} Ċ }