package Ġcom . cr azy hit ty . ch dev . ks . news . di . modules Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . R Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . data . Constants Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . data . DataStore Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . data . News DataStore Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . data . api . News Api Config Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . data . api . News ApiService Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . di .* Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . util . DateTime Formatter Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . util . internet . App Internet Helper Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . util . internet . Internet Helper Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . util . rx . App Scheduler Provider Ċ import Ġcom . cr azy hit ty . ch dev . ks . news . util . rx . Scheduler Provider Ċ import Ġcom . facebook . ste tho . okhttp 3 . St eth o Interceptor Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġretrofit 2 . Call Adapter Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġuk . co . chr is jen x . call ig raph y . Call ig raph y Config Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton ĊĊ Ċ /** Ċ Ġ* ĠApplication Ġlevel Ġmodule Ġfor Ġproviding Ġapplication Ġspecific Ġobjects . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ ĠK art ik ĠSh arma Ġ( cr 4 2 yh 1 7 m 4 n @ gmail . com ) Ċ Ġ*/ Ċ @ Module Ċ class ĠApplication Module ( private Ġval Ġapplication : ĠApplication ) Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ ApplicationContext ĊĠĠĠ Ġfun Ġprovide Context (): ĠContext Ġ= Ġapplication ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Application () Ġ= Ġapplication ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Call ig raph y Config (): ĠCall ig raph y Config Ġ= ĠCall ig raph y Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Font Path (" fonts / Work Sans - Regular . ttf ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setFont Attr Id ( R . attr . font Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Composite Disposable () Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Scheduler Provider (): ĠScheduler Provider Ġ= ĠApp Scheduler Provider () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Connectivity Manager (@ ApplicationContext Ġcontext : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Internet Helper ( connectivity Manager : ĠConnect ivity Manager ): ĠInternet Helper Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Internet Helper ( connectivity Manager ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Api Config ĊĠĠĠ Ġfun Ġprovide Api Config () Ġ= ĠNews Api Config ( Constants . Api . BASE _ URL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . Api . HEADER _ X _ API _ KEY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . Api . API _ KEY ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide SharedPreferences (@ ApplicationContext Ġcontext : ĠContext ): ĠSharedPreferences Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( Constants . DataStore . SHARED _ PREFER ENCES _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide M oshi (): ĠM oshi Ġ= ĠM oshi . Builder (). build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Network Interceptor (): ĠInter ceptor Ġ= ĠSte tho Interceptor () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Call Adapter Factory (): ĠCall Adapter . Factory Ġ= ĠRx Java 2 Call Adapter Factory . create () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Converter Factory (): ĠConverter . Factory Ġ= ĠM oshi Converter Factory . create () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok HttpClient (@ Api Config Ġapi Config : ĠNews Api Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Interceptor : ĠInter ceptor ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . proceed ( it . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header ( api Config . api Header , Ġapi Config . apiKey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( network Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ret rofit (@ Api Config Ġapi Config : ĠNews Api Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Adapter Factory : ĠCall Adapter . Factory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Factory : ĠConverter . Factory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient ): ĠNews ApiService Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( api Config . baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( call Adapter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( converter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( News ApiService :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Provided Date ĊĠĠĠ Ġfun Ġprovide Provided Date () Ġ= ĠSimpleDateFormat ( Constants . DateFormat . PROVIDED _ DATE _ FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Normalized Date ĊĠĠĠ Ġfun Ġprovide Normalized Date () Ġ= ĠSimpleDateFormat ( Constants . DateFormat . NORMAL IZED _ DATE _ FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide DateTime Formatter (@ Provided Date Ġprovided DateFormat : ĠSimpleDateFormat ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Formatter ( provided DateFormat ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide DataStore ( mos hi : ĠM oshi , Ġshared Preferences : ĠSharedPreferences ): ĠData Store Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNews DataStore ( mos hi , Ġshared Preferences ) Ċ }