package Ġcom . s be ve . j ada . utils . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġcom . s be ve . j ada . utils . Constants Ċ import Ġcom . s be ve . j ada . utils . SharedPreferences Util Ċ import Ġcom . s be ve . j ada . utils . SharedPreferences Util Impl Ċ import Ġcom . s be ve . j ada . utils . ret rofit . Ret rofit Access Api Ċ import Ġcom . s be ve . j ada . utils . room . Dictionary Database Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ object ĠApp Module Ġ{ ĊĠĠĠĠĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Room Database (@ ApplicationContext Ġcontext : ĠContext ) Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( context , ĠDictionary Database :: class . java , Ġ" dictionary _ database ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Database DAO ( dictionary Database : ĠDictionary Database ) Ġ= Ġdictionary Database . get Dao () ĊĠĠĠĠĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Ret rofit Access Api (): ĠRet rofit Access Api Ġ{ ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// add Ġheaders Ġto Ġthe Ġhttp Ġrequest ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHeaders . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" app _ id ", Ġ" dec 3 3 f 7 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" app _ key ", Ġ" a 3 3 9 ad 0 3 8 db 6 2 2 f 0 af 5 9 6 df 6 8 6 7 0 c 2 ff ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// make Ġand Ġokhttp client Ġto Ġbe Ġused Ġby Ġretrofit ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . proceed ( it . request (). newBuilder (). headers ( headers ). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Constants . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// add Ġthe Ġokhttp client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// use Ġm oshi Ġfor Ġconversion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( Ret rofit Access Api :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides SharedPreferences Util (@ ApplicationContext Ġapplication Context : ĠContext ): ĠSharedPreferences Util Ġ= ĠSharedPreferences Util Impl ( ĊĠĠĠĠĠĠĠ Ġapplication Context . get SharedPreferences ( Constants . SHARED _ PREFER ENCES _ NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ) Ċ } Ċ