package Ġcom . example . android . nasa _ ap od . domain . repository Ċ Ċ import Ġcom . example . android . nasa _ ap od . api . Ap od Service Ċ import Ġcom . example . android . nasa _ ap od . domain . dao . Ap od Dao Ċ import Ġcom . example . android . nasa _ ap od . domain . util . Resource Ċ import Ġcom . example . android . nasa _ ap od . domain . util . network Bound Resource Ċ import Ġcom . example . android . nasa _ ap od . model . Ap od Entity Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAp od Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapp Dao : ĠAp od Dao , ĊĠĠĠ Ġprivate Ġval Ġap od Service : ĠAp od Service Ċ ) Ġ: ĊĠĠĠ ĠAp od Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Latest Ap ods ( ĊĠĠĠĠĠĠĠ Ġis Refresh : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġparam : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ ĠonSuccess : Ġ() Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ ĠonError : Ġ( Throwable ) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠFlow < Resource < List < Ap od Entity >>> Ġ= ĊĠĠĠĠĠĠĠ Ġnetwork Bound Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload From Db Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dao . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Call Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġap od Service . get Ap od List ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave To Db Ġ= Ġ{ Ġentities Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dao . delete All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dao . save Entries ( entities ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Fetch Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Call Success Ġ= ĠonSuccess , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Call Failed Ġ= ĠonError ĊĠĠĠĠĠĠĠ Ġ) Ċ }