package Ġhr . algebra . android . api Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġhr . algebra . android . Android Receiver Ċ import Ġhr . algebra . android . BE ER _ PROVIDER _ URI Ċ import Ġhr . algebra . android . DATA _ IMPORTED Ċ import Ġhr . algebra . android . framework . send Broadcast Ċ import Ġhr . algebra . android . framework . set Boolean Preference Ċ import Ġhr . algebra . android . handler . download Image And Store Ċ import Ġhr . algebra . android . model . Item Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ class ĠBe er Fetcher ( private Ġval Ġcontext : ĠContext ) Ġ Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbeer Api : ĠBe er Api ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( API _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġbeer Api Ġ= Ġretrofit . create ( Be er Api :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Items (){ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġbeer Api . fetch Items () ĊĊĠĠĠĠĠĠĠ Ġrequest . enqueue ( object : ĠCallback < List < Be er >> { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Be er >>, Ġresponse : ĠResponse < List < Be er >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Items ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Be er >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( java Class . name , Ġt . message , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Items ( beer Items : ĠList < Be er >) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbeer Items . forEach Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Path Ġ= Ġdownload Image And Store ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . image _ url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . replace (" Ġ", Ġ"_ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: name . name , Ġit . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: tag line . name , Ġit . tag line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: first _ brew ed . name , Ġit . first _ brew ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: description . name , Ġit . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: image _ url . name , Ġimage Path Ġ?: Ġ Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: brew ers _ tips . name , Ġit . brew ers _ tips ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: contribut ed _ by . name , Ġit . contribut ed _ by ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Item :: read . name , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . insert ( BE ER _ PROVIDER _ URI , Ġvalues ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . set Boolean Preference ( DATA _ IMPORTED , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Broadcast < Android Receiver >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }