package Ġcom . sample . android . ca feb az aar . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġcom . sample . android . ca feb az aar . database . Category Database Ċ import Ġcom . sample . android . ca feb az aar . database . as Domain Model Ċ import Ġcom . sample . android . ca feb az aar . domain . Category Ċ import Ġcom . sample . android . ca feb az aar . network . F ours quare Service Ċ import Ġcom . sample . android . ca feb az aar . network . as Database Model Ċ import Ġcom . sample . android . ca feb az aar . util . sched ular s . Base Scheduler Provider Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠCategory Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠCategory Database , ĊĠĠĠ Ġprivate Ġval Ġapi : ĠF ours quare Service , ĊĠĠĠ Ġprivate Ġval Ġscheduler Provider : ĠBase Scheduler Provider Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġcategories Ġthat Ġcan Ġbe Ġshown Ġon Ġthe Ġscreen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcategories : ĠLive Data < List < Category >> Ġ= ĊĠĠĠĠĠĠĠ ĠTransform ations . map ( database . category Dao . getC ategories ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . as Domain Model () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRefresh Ġthe Ġcategories Ġstored Ġin Ġthe Ġoffline Ġcache . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrefresh Categories ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠDis posable Ġ= ĊĠĠĠĠĠĠĠ Ġapi . getC ategories ("$ latitude ,$ longitude ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( scheduler Provider . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġresponse Wrapper Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . category Dao . insert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* response Wrapper . response . groups [ 0 ]. as Database Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ }