package Ġcom . bern af err ari . sdk monitor . main Ċ Ċ import Ġcom . af ol le st ad . rx kp refs . Pref Ċ import Ġcom . bern af err ari . sdk monitor . core . App Manager Ċ import Ġcom . bern af err ari . sdk monitor . data . App Ċ import Ġcom . bern af err ari . sdk monitor . data . Version Ċ import Ġcom . bern af err ari . sdk monitor . data . source . local . Apps Dao Ċ import Ġcom . bern af err ari . sdk monitor . data . source . local . Versions Dao Ċ import Ġcom . bern af err ari . sdk monitor . extensions . convert Timestamp ToDate Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠDatabase DataSource Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġm Versions Dao : ĠVersions Dao , ĊĠĠĠ Ġprivate Ġval Ġm Apps Dao : ĠApps Dao , ĊĠĠĠ Ġprivate Ġval ĠorderBy Sdk : ĠPref < Boolean >, ĊĠĠĠ Ġprivate Ġval Ġshow System Apps : ĠPref < Boolean > Ċ ) Ġ: ĠMain DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġset Should Show System Apps ( value : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow System Apps . set ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshould OrderBy Sdk (): ĠObservable < Boolean > Ġ= ĠorderBy Sdk . observe () ĊĊĠĠĠ Ġoverride Ġfun ĠgetLast Item ( packageName : ĠString ): ĠVersion ? Ġ= Ġm Versions Dao . getLast Value ( packageName ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Apps List (): ĠObservable < List < App >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġshow System Apps . observe (). switch Map Ġ{ Ġsystem Apps Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( system Apps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturn Ġall Ġapps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Apps Dao . get Apps List Flow able () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturn Ġonly Ġthe Ġones Ġfrom ĠPlay ĠStore Ġor Ġthat Ġwere Ġinstalled Ġmanually . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Apps Dao . get Apps List Flow able Filtered ( has Known Origin Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmap Sdk Date ( app : ĠApp ): ĠApp Version Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġsince Ġinsert App Ġis Ġcalled Ġbefore Ġinsert Version , Ġm Versions Dao . getValue (...) Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġnull Ġon Ġapp 's Ġfirst Ġrun . ĠThis Ġwill Ġavoid Ġthe Ġsituation . ĊĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġm Versions Dao . getLast Value ( app . packageName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsdk Version Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion ?. target Sdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠApp Manager . getApplication Info ( app . packageName )?. target Sdk Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġlast Update Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion ?. last UpdateTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠApp Manager . get Package Info ( app . packageName )?. last UpdateTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġreturn ĠApp Version ( app , Ġsdk Version , Ġlast Update . convert Timestamp ToDate ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ