package Ġbr . com . help dev . github ers . worker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġbr . com . help dev . github ers . data . db . entity . User Ċ import Ġbr . com . help dev . github ers . data . repository . Favorite Repository Ċ import Ġbr . com . help dev . github ers . data . repository . UserRepository Ċ import Ġbr . com . help dev . github ers . di . worker . I Worker Factory Ċ import Ġkotlinx . coroutines .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ class ĠGithub Users Worker ( ĊĠĠĠ Ġcontext : ĠContext , Ġworker Params : ĠWorker Parameters , ĊĠĠĠ Ġprivate Ġval Ġuser Repository : ĠUser Repository , ĊĠĠĠ Ġprivate Ġval Ġfavorite Repository : ĠF avorite Repository Ċ ) Ġ: ĠCor outine Worker ( context , Ġworker Params ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Github Users Worker " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDATA _ INT _ LAST _ ID Ġ= Ġ" last _ id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDATA _ LOAD _ ONLY _ USER Ġ= Ġ" login " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDATA _ BOOL _ SAVE _ IN _ FA V OR ITES Ġ= Ġ" DATA _ SAVE _ IN _ FA V OR ITES " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠCor outine ExceptionHandler Ġ{ Ġ_, Ġex Ġ-> ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Github Users Worker + Coroutine ExceptionHandler ", Ġex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Context . plus ( handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Data . getString ( DATA _ LOAD _ ONLY _ USER )?. let Ġ{ Ġlogin Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġuser Repository . load User ( login , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Data . getBoolean ( DATA _ BOOL _ SAVE _ IN _ FA V OR ITES , Ġfalse ) Ġ&& Ġuser Ġis ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Repository . add Favorite ( user . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġuser Repository . load UserList ( input Data . getInt ( DATA _ INT _ LAST _ ID , Ġ 0 ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Repository : ĠProvider < UserRepository >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfavorite Repository : ĠProvider < Favorite Repository > ĊĠĠĠ Ġ) Ġ: ĠI Worker Factory < Github Users Worker > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( app Context : ĠContext , Ġparams : ĠWorker Parameters ): ĠGithub Users Worker Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGithub Users Worker ( app Context , Ġparams , Ġuser Repository . get (), Ġfavorite Repository . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }