package Ġcom . app . missed notifications reminder . data Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġcom . app . missed notifications reminder . data . source . Default Resource DataSource Ċ import Ġcom . app . missed notifications reminder . data . source . Resource DataSource Ċ import Ġcom . app . missed notifications reminder . settings . application selection . data . model . util . Application Icon Handler Ċ import Ġcom . app . missed notifications reminder . util . event . Flow EventBus Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . tf cp or ci unc ula . flow . Flow SharedPreferences Ċ import Ġdagger . Bind s Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . mult ib ind ings . Elements Into Set Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠThe ĠD agger Ġdependency Ġinjection Ġmodule Ġfor Ġthe Ġdata Ġlayer Ċ Ġ*/ Ċ @ Module ( includes Ġ= Ġ[ Data Module Bind s :: class ]) Ċ class ĠData Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide SharedPreferences ( app : ĠApplication ): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapp . get SharedPreferences (" missing notification reminder ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Flow SharedPreferences ( prefs : ĠSharedPreferences ): ĠFlow SharedPreferences Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow SharedPreferences ( prefs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide PackageManager ( app : ĠApplication ): ĠPackage Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapp . package Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Pic asso ( app : ĠApplication , Ġpackage Manager : ĠPackage Manager ): ĠPic asso Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPic asso . Builder ( app ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add RequestHandler ( Application Icon Handler ( package Manager )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener Ġ{ Ġ_, Ġuri , Ġe Ġ-> ĠTim ber . e ( e , Ġ" Failed Ġto Ġload Ġimage : Ġ% s ", Ġuri ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide EventBus (): ĠFlow EventBus Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow EventBus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Elements Into Set ĊĠĠĠ Ġfun Ġprovide Json Adapters (): ĠSet < Json Adapter < Any >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide M oshi ( adapters : ĠSet < @ Jvm Suppress W ild cards ĠJson Adapter < Any >> ): ĠM oshi Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠM oshi . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapters . forEach Ġ{ Ġadd ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Module Ċ abstract Ġclass ĠData Module Bind s Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġabstract Ġfun Ġbind Resources ( resources : ĠDefault Resource DataSource ): ĠResource DataSource Ċ }