/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠMu ham med ĠAli ĠA mm ar Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 Ġcom . m ow ork s . mor an ews . data . source . local Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . map Ċ import Ġcom . m ow ork s . mor an ews . data . Result Ċ import Ġcom . m ow ork s . mor an ews . domain . DataModel Ċ import Ġcom . m ow ork s . mor an ews . domain . as Pop ular News Model Ċ import Ġcom . m ow ork s . mor an ews . domain . as Top Head Lines Category Model Ċ import Ġcom . m ow ork s . mor an ews . domain . as Top Head Lines Model Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context ĊĊ Ċ class ĠLocal DataSource ( ĊĠĠĠ Ġprivate Ġval Ġnews Dao : ĠNews Dao , ĊĠĠĠ Ġprivate Ġval Ġio Dispatcher Ġ: ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ): ĠLocal Source Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Top Head lines (): LiveData < Result < List < DataModel . Top Head lines Model >> >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġnews Dao . get Top Head lines (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotEmpty () Ġ-> ĠResult . Success Ġ( Ġit . as Top Head Lines Model ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ-> ĠResult . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Pop ular News (): ĠLive Data < Result < List < DataModel . Pop ular News Model >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġnews Dao . get Pop ular News (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotEmpty () Ġ-> ĠResult . Success Ġ( it . as Pop ular News Model ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ-> ĠResult . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Category ( category : ĠString ): ĠLive Data < Result < List < DataModel . Top Head lines Category Model >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġnews Dao . get Top Head lines Categories ( category ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotEmpty () Ġ-> ĠResult . Success Ġ( Ġit . as Top Head Lines Category Model ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ-> ĠResult . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Categories (): ĠLive Data < Result < List < DataModel . Top Head lines Category Model >>> Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġnews Dao . getAll Category (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotEmpty () Ġ-> ĠResult . Success Ġ( Ġ Ġit . as Top Head Lines Category Model ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ-> ĠResult . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrefresh Top Head lines ( head lines : ĠArray < Top Head lines Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnews Dao . insert Top Head lines (* head lines ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrefresh Categories ( categories : ĠArray < Category Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnews Dao . insert Top Head lines Categories (* categories ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrefresh Pop ular News ( popular News : ĠArray < Pop ular News Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnews Dao . insert Pop ular News (* popular News ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclear Top Head lines () Ġ= Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠ Ġnews Dao . clear Top Head lines () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclear Category ( category : ĠString ) Ġ= Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠ Ġnews Dao . clear Category ( category ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclear Pop ular News () Ġ= ĠĠĠ Ġwith Context ( io Dispatcher ){ ĊĠĠĠĠĠĠĠ Ġnews Dao . clear Pop ular News () ĊĠĠĠ Ġ} Ċ Ċ }