/* Ċ Ġ* Ġ ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠWeb tre kk ĠGmbH Ċ Ġ* Ċ Ġ* Ġ ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġ Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġ Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġ Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġ Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* Ġ ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġ Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* Ġ ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* Ġ ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* Ġ ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNON ĠIN FR INGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* Ġ ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* Ġ ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* Ġ ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* Ġ ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġweb tre kk . android . sdk . domain . worker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġweb tre kk . android . sdk . data . entity . Track Request Ċ import Ġweb tre kk . android . sdk . domain . internal . Clear Track Requests Ċ import Ġweb tre kk . android . sdk . domain . internal . Get Cached Data Tracks Ċ import Ġweb tre kk . android . sdk . module . App Module Ċ import Ġweb tre kk . android . sdk . module . Interactor Module Ċ import Ġweb tre kk . android . sdk . util . Coroutine Dispatch ers Ċ Ċ /** Ċ Ġ* Ġ[ Work Manager ] Ġworker Ġresponsible Ġabout Ġcleaning Ġthe Ġsuccessfully Ġexecuted Ġcached Ġrequests . Ċ Ġ*/ Ċ internal Ġclass ĠClean Up Worker ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġworker Parameters : ĠWorker Parameters Ċ ) Ġ: ĊĠĠĠ ĠCor outine Worker ( context , Ġworker Parameters ) Ġ{ ĊĊĠĠĠ Ġ// ĠTODO Ġadd Ġthis ::: Ġdelete Ġif Ġrequest Ġis Ġolder Ġthen Ġone Ġhour Ġ( server Ġlimitation ) ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ coroutine Dispatch ers ] Ġthe Ġinjected Ġcoroutine Ġdispatch ers . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġcoroutine Dispatch ers : ĠCor outine Dispatch ers Ġ= ĠApp Module . dispatch ers ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ get Cached Data Tracks ] Ġthe Ġinjected Ġinternal Ġinter actor Ġfor Ġgetting Ġthe Ġdata Ġfrom Ġthe Ġdata Ġbase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġget Cached Data Tracks : ĠGet Cached Data Tracks Ġ= ĠInter actor Module . get Cached Data Tracks () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ clear Track Requests ] Ġthe Ġinjected Ġinternal Ġinter actor Ġfor Ġdeleting Ġthe Ġdata Ġin Ġthe Ġdata Ġbase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġclear Track Requests : ĠClear Track Requests Ġ= ĠInter actor Module . clear Track Request () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ logger ] Ġthe Ġinjected Ġlogger Ġfrom ĠWeb tre kk . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġby Ġlazy Ġ{ ĠApp Module . logger Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġthe Ġdata Ġfrom Ġthe Ġdata Ġbase Ġwith Ġstate ĠDONE Ġonly . ĊĠĠĠĠĠĠĠ Ġ// Ġtodo Ġhandle ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġwith Context ( coroutine Dispatch ers . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Cached Data Tracks ( Get Cached Data Tracks . Params ( request States Ġ= ĠlistOf ( Track Request . Request State . DONE ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġdata Tracks Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Tracks . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Clean ing Ġup Ġthe Ġcompleted Ġrequests ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Track Requests ( Clear Track Requests . Params ( track Requests Ġ= Ġdata Tracks . map Ġ{ Ġit . track Request Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġlogger . debug (" Clean ed Ġup Ġthe Ġcompleted Ġrequests Ġsuccessfully ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Failed Ġwhile Ġcleaning Ġup Ġthe Ġcompleted Ġrequests : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġlogger . error (" Error Ġgetting Ġthe Ġcached Ġcompleted Ġrequests : Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" clean _ up " ĊĠĠĠ Ġ} Ċ } Ċ