package Ġcom . cor bell ini . j okes . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . cor bell ini . data . remote . Jo ke Service Ċ import Ġcom . cor bell ini . data . repositories . Jo ke Repository Imp Ċ import Ġcom . cor bell ini . domain . repositories . Jo ke Repository Ċ import Ġcom . cor bell ini . domain . use cases . Get Random Jo ke UseCase Ċ import Ġcom . cor bell ini . domain . use cases . Get Random Jo ke UseCase Imp Ċ import Ġcom . cor bell ini . j okes . Build Config Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . components . ViewModel Component Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġdagger . h ilt . components . Singleton Component Ċ 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 Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ class ĠApp Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok HttpClient (@ ApplicationContext Ġcontext : ĠContext ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Build Config . DEBUG ) Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( Http Logging Interceptor Ġ{ ĠTim ber . tag (" Ok Http Ġ:: :\ t "). d ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ret rofit Builder ( ok HttpClient : ĠOk HttpClient ): ĠRet rofit . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Jo ke Service ( ret rofit : ĠRet rofit . Builder ): ĠJo ke Service Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . baseUrl ( Jo ke Service . BASE _ URL ). build (). create ( Jo ke Service :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Jo ke Repository ( service : ĠJo ke Service ): ĠJo ke Repository Ġ= ĊĠĠĠĠĠĠĠ ĠJo ke Repository Imp ( jo ke Service Ġ= Ġservice ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide List Random J okes UseCase ( jo ke Repository : ĠJo ke Repository ): ĠGet Random Jo ke UseCase Ġ= ĊĠĠĠĠĠĠĠ ĠGet Random Jo ke UseCase Imp ( jo ke Repository Ġ= Ġjo ke Repository ) ĊĊ Ċ } Ċ Ċ @ Module Ċ @ Install In ( ViewModel Component :: class ) Ċ class ĠModule