/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠD uck Duck Go Ċ Ġ* Ċ Ġ* Ġ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 . duck duck go . privacy . config . impl . workers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ import Ġandroidx . work . Backoff Policy Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Existing Periodic Work Policy Ċ import Ġandroidx . work . Periodic Work RequestBuilder Ċ import Ġandroidx . work . Work Manager Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . duck duck go . app . global . Dispatcher Provider Ċ import Ġcom . duck duck go . di . scopes . App Scope Ċ import Ġcom . duck duck go . privacy . config . impl . Privacy Config Downloader Ċ import Ġcom . squareup . an vil . annotations . Contribut es Mult ib ind ing Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPrivacy Config Download Worker ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġworker Parameters : ĠWorker Parameters Ċ ) Ġ: ĠCor outine Worker ( context , Ġworker Parameters ) Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġprivacy Config Downloader : ĠPrivacy Config Downloader ĊĠĠĠ Ġlateinit Ġvar Ġdispatcher Provider : ĠDispatcher Provider ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( dispatcher Provider . io ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprivacy Config Downloader . download () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . retry () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Contribut es Mult ib ind ing ( App Scope :: class ) Ċ class ĠPrivacy Config Download Worker Scheduler Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġwork Manager : ĠWork Manager Ċ ) Ġ: ĠLifecycle Observer Ġ{ ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġfun Ġschedule Remote Config Download () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . v (" Scheduling Ġremote Ġconfig Ġworker ") ĊĠĠĠĠĠĠĠ Ġval Ġworker Request Ġ= ĠPeriod ic Work RequestBuilder < Privacy Config Download Worker >( 1 2 , ĠTimeUnit . HOUR S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Tag ( PRIV ACY _ CONFIG _ DOWNLOAD ER _ WORK ER _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Backoff Criteria ( Backoff Policy . LINEAR , Ġ 1 0 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġwork Manager . enqueue Unique Periodic Work ( PRIV ACY _ CONFIG _ DOWNLOAD ER _ WORK ER _ TAG , ĠExisting Periodic Work Policy . REPLACE , Ġworker Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRIV ACY _ CONFIG _ DOWNLOAD ER _ WORK ER _ TAG Ġ= Ġ" PRIV ACY _ CONFIG _ DOWNLOAD ER _ WORK ER _ TAG " ĊĠĠĠ Ġ} Ċ } Ċ