package Ġuk . co . bar buzz . app widget . data . updater Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġdagger . android . D agger Broadcast Receiver Ċ import Ġio . reactivex . Comp letable Ċ import Ġuk . co . bar buzz . app widget . base . extensions . Scheduling Strategy Ċ import Ġuk . co . bar buzz . app widget . base . extensions . flatten Ċ import Ġuk . co . bar buzz . app widget . base . widget . Widget Updater Ċ import Ġuk . co . bar buzz . app widget . data . App Ċ import Ġuk . co . bar buzz . app widget . data . App Dao Ċ import Ġuk . co . bar buzz . app widget . data . Filter Dao Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPackage Added Receiver Ġ: ĠD agger Broadcast Receiver () Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġfilter Dao : ĠFilter Dao ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġapp Dao : ĠApp Dao ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġscheduling : ĠS cheduling Strategy ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġwidget Updater : ĠWidget Updater ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Receive ( context , Ġintent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ!= ĠIntent . ACTION _ PACKAGE _ AD DED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Unexpected Ġreceiver Ġwith Ġaction : Ġ${ intent . action }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpending Result Ġ= Ġgo Async () ĊĠĠĠĠĠĠĠ Ġval Ġinstalled Package Ġ= Ġintent . data !!. scheme Specific Part ĊĊĠĠĠĠĠĠĠ Ġfilter Dao . all Filters () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatten () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Package ( it . package Matcher ). test ( installed Package ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Dao . insert App ( App ( installed Package , Ġit . package Matcher , Ġit . app Widget Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Then ( update Widget ( it . app Widget Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( scheduling . for Comp letable ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Result . finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Widget ( app Widget Id : ĠInt ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠComp letable . from Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Updater . notify Widget Data Changed ( app Widget Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ