Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Singleton
- @Component(
- modules = [
- AndroidSupportInjectionModule::class,
- AppModule::class,
- ActivityBuilderModule::class]
- )
- interface AppComponent {
- @Component.Builder
- interface Builder {
- @BindsInstance
- fun application(application: Application): Builder
- fun build(): AppComponent
- }
- fun inject(app: App)
- }
- class App : Application(), HasActivityInjector {
- @Inject
- lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
- override fun onCreate() {
- super.onCreate()
- AppInjector.init(this)
- initOneSignal()
- }
- private fun initOneSignal() = OneSignal.startInit(this).setNotificationOpenedHandler(CustomNotificationOpenedHandler()).inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification).init()
- override fun activityInjector() = dispatchingAndroidInjector
- }
- @Module
- abstract class ActivityBuilderModule {
- @ContributesAndroidInjector
- abstract fun contributeSplashActivity(): SplashActivity
- }
- @Module(includes = [(ViewModelModule::class)])
- class AppModule {
- @Singleton
- @Provides
- fun provideContext(app: Application): Context = app.applicationContext;
- @Singleton
- @Provides
- fun provideApiService(client: OkHttpClient): ApiService {
- return Retrofit.Builder()
- .baseUrl(Constants.baseUrl)
- .client(client)
- .addConverterFactory(GsonConverterFactory.create())
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .build()
- .create(ApiService::class.java)
- }
- @Singleton
- @Provides
- fun provideOkHttpClient(interceptor: HttpLoggingInterceptor): OkHttpClient {
- return OkHttpClient.Builder().addInterceptor(interceptor).build()
- }
- @Singleton
- @Provides
- fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor {
- val interceptor = HttpLoggingInterceptor()
- interceptor.level = HttpLoggingInterceptor.Level.BODY
- return interceptor
- }
- }
Add Comment
Please, Sign In to add comment