package Ġcom . k ard ia . membership . core . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . preference . Preference Manager Ċ import Ġcom . k ard ia . membership . Build Config Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . itk acher . okhttp profiler . Ok Http Profiler Interceptor Ċ import Ġcom . k ard ia . membership . Android Application Ċ import Ġcom . k ard ia . membership . data . cache . User Token Cache Ċ import Ġcom . k ard ia . membership . domain . network . Service Interceptor Ċ import Ġcom . k ard ia . membership . domain . repositories .* Ċ import Ġcom . read yst ates o ftware . ch uck . Ch uck Interceptor Ċ 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 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . converter . scal ars . Scalars Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Module Ċ class ĠApplication Module ( private Ġval Ġapplication : ĠAndroid Application ) Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide ApplicationContext (): ĠContext Ġ= Ġapplication ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Android Application (): ĠAndroid Application Ġ= Ġapplication ĊĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ret rofit ( user Token Cache : ĠUser Token Cache , Ġgson : ĠGson ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . URL _ APP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( create Client ( user Token Cache )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Len ient () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Share Preference (): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPreference Manager . getDefault SharedPreferences ( application ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Client ( user Token Cache : ĠUser Token Cache ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Builder : ĠOk HttpClient . Builder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 5 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 5 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 5 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( Service Interceptor ( user Token Cache )) ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( Ch uck Interceptor ( application )) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Interceptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( Ok Http Profiler Interceptor ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Device Repository ( dataSource : ĠDevice Repository . Network ): ĠDevice Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Auth Repository ( dataSource : ĠAuth Repository . Network ): ĠAuth Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Pass code Repository ( dataSource : ĠPass code Repository . Network ): ĠPass code Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide UserRepository ( dataSource : ĠUser Repository . Network ): ĠUser Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Transaction Repository ( dataSource : ĠTransaction Repository . Network ): ĠTransaction Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Config Repository ( dataSource : ĠConfig Repository . Network ): ĠConfig Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Top Up Repository ( dataSource : ĠTop Up Repository . Network ): ĠTop Up Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Quest Repository ( dataSource : ĠQuest Repository . Network ): ĠQuest Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Tracking Repository ( dataSource : ĠTracking Repository . Network ): ĠTracking Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Captcha Repository ( dataSource : ĠCapt cha Repository . Network ): ĠCapt cha Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide News Repository ( dataSource : ĠNews Repository . Network ): ĠNews Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Twitter Repository ( dataSource : ĠTwitter Repository . Network ): ĠTwitter Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Wallet Repository ( dataSource : ĠWallet Repository . Network ): ĠWallet Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ref erral Repository ( dataSource : ĠRef erral Repository . Network ): ĠRef erral Repository Ġ= ĊĠĠĠĠĠĠĠ ĠdataSource Ċ } Ċ