package Ġcom . s ud z us ama . compare phones . domain Ċ Ċ import Ġcom . s ud z us ama . compare phones . domain . repository . Device Repository Ċ import Ġcom . s ud z us ama . compare phones . domain . use case .* Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjavax . inject . Named Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ class ĠUse Cases Module Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" IO ") ĊĠĠĠ Ġfun Ġprovide Io Scheduler () Ġ= ĠS chedulers . io () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" Main ") ĊĠĠĠ Ġfun Ġprovide MainThread Scheduler () Ġ= ĠAndroid Schedulers . main Thread () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide UseCase Save Comp ar sion ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ): ĠSave Comp ar sion UseCase Ġ= ĊĠĠĠĠĠĠĠ ĠSave Comp ar sion UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide UseCase Get Comp ar sion ById ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ): ĠGet Comp ar sion ById UseCase Ġ= ĊĠĠĠĠĠĠĠ ĠGet Comp ar sion ById UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide UseCase Recent Comp ar sion s ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ) Ġ= ĠGet Recent Comp ar sion s UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Get Devices ByName UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ) Ġ= ĠGet Devices ByName UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Update Device e UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ) Ġ= ĠUpdate Device UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Get Last Used Device e UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository : ĠDevice Repository , ĊĠĠĠĠĠĠĠ Ġ@ Named (" IO ") Ġsubs Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġ@ Named (" Main ") Ġpost Exec Scheduler : ĠScheduler ĊĠĠĠ Ġ) Ġ= ĠGet Recent Devices UseCase ( ĊĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠ Ġsubs Scheduler , ĊĠĠĠĠĠĠĠ Ġpost Exec Scheduler ĊĠĠĠ Ġ) ĊĊ Ċ }