package Ġcom . ba el . d ads . feature . home . worker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . h ilt . work . H ilt Worker Ċ import Ġandroidx . work . List enable Worker . Result . retry Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . ba el . d ads . feature . home . notification . New Feed Reminder Notification Ċ import Ġcom . ba el . d ads . domain . common . response . Response . Success Ċ import Ġcom . ba el . d ads . domain . home . model . D ad Jo ke Ċ import Ġcom . ba el . d ads . domain . home . use case . Load D ad Jo ke Feed UseCase Ċ import Ġcom . ba el . d ads . domain . home . use case . Load D ad Jo ke UseCase Ċ import Ġcom . ba el . d ads . lib . preference . Preference Ċ import Ġcom . ba el . d ads . lib . presentation . notification . Notification Publisher Ċ import Ġcom . ba el . d ads . lib . worker . Base Worker Ċ import Ġdagger . ass isted . Ass isted Ċ import Ġdagger . ass isted . Ass isted Inject Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . filter Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEr ick Sum argo Ġon Ġ 0 1 / 0 1 / 2 1 . Ċ Ġ*/ Ċ Ċ @ H ilt Worker Ċ internal Ġclass ĠFetch D ad Jo ke Feed Worker Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠ Ġ@ Ass isted Ġapp Context : ĠContext , ĊĠĠĠ Ġ@ Ass isted Ġparams : ĠWorker Parameters , ĊĠĠĠ Ġprivate Ġval Ġload D ad Jo ke UseCase : ĠLoad D ad Jo ke UseCase , ĊĠĠĠ Ġprivate Ġval Ġload D ad Jo ke Feed UseCase : ĠLoad D ad Jo ke Feed UseCase , ĊĠĠĠ Ġprivate Ġval Ġpreference : ĠPreference , ĊĠĠĠ Ġprivate Ġval Ġnotification Publisher : ĠNotification Publisher Ċ ) Ġ: ĠBase Worker ( app Context , Ġparams ) Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġinput Data . getInt ( INPUT _ CURSOR _ ID , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠD ad Jo ke ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġload D ad Jo ke UseCase ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġis ĠSuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. collect Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġ( response Ġas ĠSuccess ). data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġload D ad Jo ke Feed UseCase ( cursor , Ġlimit Ġ= Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġis ĠSuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. collect Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ad J okes Ġ= Ġ( response Ġas ĠSuccess ). data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Work () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġretry () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġpush Notification ( context : ĠContext , Ġd ad J okes : ĠList < D ad Jo ke >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis New Feed Reminder Enabled Ġ= Ġpreference . read ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠNEW _ FEED _ REM IND ER _ PREFER ENCE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNew Feed Reminder Enabled ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNew Feed Reminder Notification ( context , Ġd ad J okes ) ĊĠĠĠĠĠĠĠ Ġnotification Publisher . publish ( notification ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG : ĠString Ġ= Ġ" Fetch D ad Jo ke Feed Worker " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINPUT _ CURSOR _ ID : ĠString Ġ= Ġ" cursor _ id " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNEW _ FEED _ REM IND ER _ PREFER ENCE : ĠString Ġ= Ġ" new _ feed _ reminder " ĊĠĠĠ Ġ} Ċ } Ċ