package Ġcom . dan . arch ite c ure component kotlin . di Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . arch . persistence . room . Room Ċ import Ġcom . dan . arch ite c ure component kotlin . api . Api Config Ċ import Ġcom . dan . arch ite c ure component kotlin . api . Image Service Ċ import Ġcom . dan . arch ite c ure component kotlin . db . Database Config Ċ import Ġcom . dan . arch ite c ure component kotlin . db . Image Dao Ċ import Ġcom . dan . arch ite c ure component kotlin . db . Image Db Ċ import Ġcom . dan . arch ite c ure component kotlin . repository . Image Repository Ċ import Ġcom . dan . arch ite c ure component kotlin . repository . Image Repository Impl Ċ import Ġcom . dan . arch ite c ure component kotlin . mapper . Image Mapper Ċ import Ġcom . dan . arch ite c ure component kotlin . mapper . Image Mapper Impl Ċ import Ġcom . dan . arch ite c ure component kotlin . util . rx . App Scheduler Provider Ċ import Ġcom . dan . arch ite c ure component kotlin . util . rx . Scheduler Provider Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjavax . inject . Singleton Ċ Ċ /* Ċ Ġ* ĠCreated Ġby Ġthan ht uan Ġon Ġ 4 / 1 1 / 1 8 . Ċ Ġ*/ Ċ @ Module ( includes Ġ= Ġ[( ViewModel Module :: class )]) Ċ class ĠApp Module Ġ{ ĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ok HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor (). setLevel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor . Level . BODY ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Github Service ( ok HttpClient : ĠOk HttpClient ): ĠImage Service Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Api Config . IMAGE _ BASE _ HOST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( Image Service :: class . java ) ĊĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Db ( app : ĠApplication ): ĠImage Db Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoom . database Builder ( app , ĠImage Db :: class . java , ĠDatabase Config . DATABASE _ NAME ). build () ĊĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Image Dao ( db : ĠImage Db ): ĠImage Dao Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . image Dao () ĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Image Repository ( image Repository Impl : ĠImage Repository Impl ): ĠImage Repository Ġ= Ġimage Repository Impl ĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Image Mapper (): ĠImage Mapper Ġ= ĠImage Mapper Impl () ĊĊĠĠĠ Ġ@ Singleton Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Scheduler Provider (): ĠScheduler Provider Ġ= ĠApp Scheduler Provider () Ċ } Ċ