Skip to content

Commit

Permalink
Simplify Dagger setup (#162)
Browse files Browse the repository at this point in the history
  • Loading branch information
jraska authored Aug 4, 2019
1 parent 7685bfc commit e00b77c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 51 deletions.
67 changes: 18 additions & 49 deletions client/src/main/java/com/jraska/github/client/AppComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@ package com.jraska.github.client

import android.content.Context
import androidx.lifecycle.ViewModelProvider
import com.google.firebase.database.FirebaseDatabase
import com.jraska.github.client.about.AboutModule
import com.jraska.github.client.analytics.AnalyticsProperty
import com.jraska.github.client.analytics.EventAnalytics
import com.jraska.github.client.core.android.OnAppCreate
import com.jraska.github.client.core.android.ServiceModel
import com.jraska.github.client.http.HttpComponent
import com.jraska.github.client.identity.IdentityModule
import com.jraska.github.client.logging.CrashReporter
import com.jraska.github.client.push.PushModule
import com.jraska.github.client.settings.SettingsModule
import com.jraska.github.client.shortcuts.ShortcutsModule
import com.jraska.github.client.users.UsersModule
import dagger.BindsInstance
import dagger.Component
import dagger.Module
import dagger.Provides
import retrofit2.Retrofit

@PerApp
@Component(
modules = [UsersModule::class, NavigationModule::class,
PushModule::class, AppModule::class,
SettingsModule::class, AboutModule::class,
modules = [
AppModule::class,
NavigationModule::class,
IdentityModule::class,
ShortcutsModule::class,
HttpComponentModule::class, CoreComponentModule::class]
UsersModule::class,
PushModule::class,
SettingsModule::class,
AboutModule::class,
ShortcutsModule::class],
dependencies = [
HttpComponentDelegate::class,
CoreComponentDelegate::class
]
)
interface AppComponent {

Expand All @@ -42,45 +42,14 @@ interface AppComponent {
interface Builder {
fun build(): AppComponent

fun coreComponentModule(module: CoreComponentModule): Builder
fun httpComponentModule(module: HttpComponentModule): Builder
fun coreComponent(delegate: CoreComponentDelegate): Builder
fun httpComponent(module: HttpComponentDelegate): Builder

@BindsInstance fun appContext(context: Context): Builder
@BindsInstance
fun appContext(context: Context): Builder
}
}

@Module
class HttpComponentModule(private val httpComponent: HttpComponent) {
@Provides
fun retrofit(): Retrofit {
return httpComponent.retrofit()
}
}

@Module
class CoreComponentModule(private val coreComponent: CoreComponent) {
@Provides
fun crashReporter(): CrashReporter {
return coreComponent.crashReporter()
}

@Provides
fun config(): Config {
return coreComponent.config()
}
class HttpComponentDelegate(private val httpComponent: HttpComponent) : HttpComponent by httpComponent

@Provides
fun analyticsProperty(): AnalyticsProperty {
return coreComponent.analyticsProperty()
}

@Provides
fun analytics(): EventAnalytics {
return coreComponent.analytics()
}

@Provides
fun firebaseDatabase(): FirebaseDatabase {
return coreComponent.firebaseDatabase()
}
}
class CoreComponentDelegate(private val coreComponent: CoreComponent) : CoreComponent by coreComponent
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ open class GitHubClientApp : Application(), HasViewModelFactory, HasServiceModel
private fun componentBuilder(): AppComponent.Builder {
return DaggerAppComponent.builder()
.appContext(this)
.httpComponentModule(HttpComponentModule(httpComponent()))
.coreComponentModule(CoreComponentModule(coreComponent()))
.httpComponent(HttpComponentDelegate(httpComponent()))
.coreComponent(CoreComponentDelegate(coreComponent()))
}

protected open fun coreComponent(): CoreComponent {
Expand Down

0 comments on commit e00b77c

Please sign in to comment.