package Ġcom . d roid af ric ana . move ery . di . modules Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġandroidx . room . Room Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . d roid af ric ana . move ery . Movie Application Ċ import Ġcom . d roid af ric ana . move ery . R Ċ import Ġcom . d roid af ric ana . move ery . data . Movie Local Cache Ċ import Ġcom . d roid af ric ana . move ery . data . Movie Room Database Ċ import Ġcom . d roid af ric ana . move ery . network . Movie ApiService Ċ import Ġcom . jak ew h art on . ret rofit 2 . adapter . kotlin . coroutines . Coroutine Call Adapter Factory Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ 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 Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Named Ċ import Ġjavax . inject . Singleton Ċ Ċ /** The Ġmain Ġmodule Ġto Ġinject Ġdependencies */ Ċ @ Module ( includes Ġ= Ġ[ ViewModels Module :: class ]) Ċ class ĠApp Module Ġ{ ĊĊĠĠĠ Ġ/** Provide Ġthe Ġlocal Ġmovie Ġcache */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Local Cache ( movie Room Database : ĠMovie Room Database ): ĠMovie Local Cache Ġ= ĊĠĠĠĠĠĠĠ ĠMovie Local Cache ( movie Room Database ) ĊĊĠĠĠ Ġ/** Provide Ġthe ĠG lide Ġinstance */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide G lide Instance ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġrequest Options : ĠRequest Options ĊĠĠĠ Ġ): ĠRequest Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault RequestOptions ( request Options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġrequest Ġoptions Ġfor ĠG lide */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide RequestOptions (): ĠRequest Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder Of ( R . drawable . movie _ loading _ animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ broken _ image ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġapi Ġfor Ġnetwork Ġcalls */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Movie Api ( ret rofit : ĠRet rofit ): ĠMovie ApiService Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Movie ApiService :: class . java ) ĊĊĠĠĠ Ġ/** Provide Ġthe Ġretrofit Ġinstance */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ret rofit Instance ( ĊĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient , ĊĠĠĠĠĠĠĠ Ġ@ Named (" baseUrl ") ĠbaseUrl : ĠString ĊĠĠĠ Ġ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Coroutine Call Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġinterceptor */ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Logging Interceptor (): ĠHttp Logging Interceptor Ġ= ĊĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BASIC ) ĊĊĠĠĠ Ġ/** Provide Ġthe Ġclient */ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Ok HttpClient ( interceptor : ĠHttp Logging Interceptor ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġbase Ġurl Ġof Ġretrofit */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Named (" baseUrl ") ĊĠĠĠ Ġfun Ġprovide BaseUrl (): ĠString Ġ= Ġ" https :// api . the mov ied b . org / 4 /" ĊĊĠĠĠ Ġ/** Provide Ġthe Ġ[ Movie Room Database ] */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Data Base ( context : ĠContext ): ĠMovie Room Database Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMovie Room Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" movies _ database " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġ[ Context ] */ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Context ( application : ĠMovie Application ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapplication . application Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Provide Ġthe Ġ[ Coroutine Scope ] */ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Coroutine Scope IO () Ġ= ĠCor outine Scope ( Dispatch ers . IO ) ĊĊĠĠĠ Ġ/** Provides Ġthe Ġshared Ġpreferences */ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide SharedPreferences ( context : ĠContext ): ĠSharedPreferences Ġ= ĊĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( context ) Ċ } ĊĊ