Navigation Menu

Skip to content
This repository has been archived by the owner on Feb 17, 2020. It is now read-only.

Commit

Permalink
Merge pull request #599 from squanchy-dev/optimising_dagger_pt2
Browse files Browse the repository at this point in the history
Optimising dagger pt2
  • Loading branch information
rock3r committed Oct 28, 2018
2 parents 7decef0 + 7cd38a4 commit 11618cd
Show file tree
Hide file tree
Showing 26 changed files with 140 additions and 120 deletions.
10 changes: 7 additions & 3 deletions app/src/main/java/net/squanchy/about/AboutComponent.kt
Expand Up @@ -2,19 +2,23 @@ package net.squanchy.about

import androidx.appcompat.app.AppCompatActivity
import dagger.Component
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.navigation.NavigationModule
import net.squanchy.navigation.Navigator

fun aboutComponent(activity: AppCompatActivity): AboutComponent =
DaggerAboutComponent.builder()
.activityContextModule(ActivityContextModule(activity))
.activity(activity)
.build()

@ActivityLifecycle
@Component(modules = [NavigationModule::class])
@Component(modules = [NavigationModule::class], dependencies = [ApplicationComponent::class])
interface AboutComponent {

fun navigator(): Navigator

@Component.Builder
interface Builder : BaseActivityComponentBuilder<AboutComponent>
}
4 changes: 2 additions & 2 deletions app/src/main/java/net/squanchy/analytics/AnalyticsModule.kt
Expand Up @@ -8,10 +8,10 @@ import dagger.Module
import dagger.Provides

@Module
class AnalyticsModule(private val application: Application) {
class AnalyticsModule {

@Provides
internal fun firebaseAnalytics(): FirebaseAnalytics = FirebaseAnalytics.getInstance(application)
internal fun firebaseAnalytics(application: Application): FirebaseAnalytics = FirebaseAnalytics.getInstance(application)

@Provides
internal fun crashlytics(): Crashlytics = Crashlytics.getInstance()
Expand Down
@@ -1,17 +1,17 @@
package net.squanchy.eventdetails

import dagger.Component
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.applicationComponent
import net.squanchy.navigation.NavigationModule
import net.squanchy.navigation.Navigator

internal fun eventDetailsComponent(activity: EventDetailsActivity) =
internal fun eventDetailsComponent(activity: EventDetailsActivity): EventDetailsComponent =
DaggerEventDetailsComponent.builder()
.applicationComponent(activity.applicationComponent)
.activityContextModule(ActivityContextModule(activity))
.activity(activity)
.build()

@ActivityLifecycle
Expand All @@ -21,4 +21,7 @@ internal interface EventDetailsComponent {
fun service(): EventDetailsService

fun navigator(): Navigator

@Component.Builder
interface Builder : BaseActivityComponentBuilder<EventDetailsComponent>
}
16 changes: 9 additions & 7 deletions app/src/main/java/net/squanchy/favorites/FavoritesComponent.kt
Expand Up @@ -3,14 +3,20 @@ package net.squanchy.favorites
import androidx.appcompat.app.AppCompatActivity
import dagger.Component
import net.squanchy.analytics.Analytics
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.applicationComponent
import net.squanchy.navigation.NavigationModule
import net.squanchy.navigation.Navigator
import net.squanchy.remoteconfig.FeatureFlags

internal fun favoritesComponent(activity: AppCompatActivity): FavoritesComponent =
DaggerFavoritesComponent.builder()
.applicationComponent(activity.applicationComponent)
.activity(activity)
.build()

@ActivityLifecycle
@Component(modules = [FavoritesModule::class, NavigationModule::class], dependencies = [ApplicationComponent::class])
internal interface FavoritesComponent {
Expand All @@ -22,11 +28,7 @@ internal interface FavoritesComponent {
fun analytics(): Analytics

fun featureFlags(): FeatureFlags
}

internal fun favoritesComponent(activity: AppCompatActivity): FavoritesComponent {
return DaggerFavoritesComponent.builder()
.applicationComponent(activity.application.applicationComponent)
.activityContextModule(ActivityContextModule(activity))
.build()
@Component.Builder
interface Builder : BaseActivityComponentBuilder<FavoritesComponent>
}
9 changes: 6 additions & 3 deletions app/src/main/java/net/squanchy/home/HomeComponent.kt
Expand Up @@ -3,18 +3,18 @@ package net.squanchy.home
import androidx.appcompat.app.AppCompatActivity
import dagger.Component
import net.squanchy.analytics.Analytics
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.applicationComponent
import net.squanchy.navigation.NavigationModule
import net.squanchy.navigation.Navigator
import net.squanchy.support.injection.CurrentTimeModule

fun homeComponent(activity: AppCompatActivity) =
fun homeComponent(activity: AppCompatActivity): HomeComponent =
DaggerHomeComponent.builder()
.applicationComponent(activity.applicationComponent)
.activityContextModule(ActivityContextModule(activity))
.activity(activity)
.build()

@ActivityLifecycle
Expand All @@ -24,4 +24,7 @@ interface HomeComponent {
fun analytics(): Analytics

fun navigator(): Navigator

@Component.Builder
interface Builder : BaseActivityComponentBuilder<HomeComponent>
}
18 changes: 13 additions & 5 deletions app/src/main/java/net/squanchy/imageloader/ImageLoaderComponent.kt
@@ -1,17 +1,25 @@
package net.squanchy.imageloader

import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import dagger.BindsInstance
import dagger.Component
import net.squanchy.injection.ActivityContextModule

fun imageLoaderComponent(activity: AppCompatActivity): ImageLoaderComponent =
internal fun imageLoaderComponent(activity: AppCompatActivity): ImageLoaderComponent =
DaggerImageLoaderComponent.builder()
.activityContextModule(ActivityContextModule(activity))
.imageLoaderModule(ImageLoaderModule())
.activity(activity)
.build()

@Component(modules = [ImageLoaderModule::class])
interface ImageLoaderComponent {
internal interface ImageLoaderComponent {

fun imageLoader(): ImageLoader

@Component.Builder
interface Builder {
@BindsInstance
fun activity(activity: Activity): Builder

fun build(): ImageLoaderComponent
}
}
Expand Up @@ -5,9 +5,8 @@ import com.bumptech.glide.RequestManager
import com.google.firebase.storage.FirebaseStorage
import dagger.Module
import dagger.Provides
import net.squanchy.injection.ActivityContextModule

@Module(includes = [ActivityContextModule::class])
@Module
internal class ImageLoaderModule {

@Provides
Expand Down
17 changes: 0 additions & 17 deletions app/src/main/java/net/squanchy/injection/ActivityContextModule.kt

This file was deleted.

19 changes: 10 additions & 9 deletions app/src/main/java/net/squanchy/injection/ApplicationComponent.kt
@@ -1,6 +1,7 @@
package net.squanchy.injection

import android.app.Application
import dagger.BindsInstance
import dagger.Component
import net.squanchy.analytics.Analytics
import net.squanchy.analytics.AnalyticsModule
Expand All @@ -23,22 +24,14 @@ import net.squanchy.support.injection.CurrentTimeModule

fun createApplicationComponent(application: Application): ApplicationComponent {
return DaggerApplicationComponent.builder()
.firestoreModule(FirestoreModule())
.repositoryModule(RepositoryModule())
.checksumModule(ChecksumModule())
.applicationContextModule(ApplicationContextModule(application))
.algoliaModule(AlgoliaModule())
.analyticsModule(AnalyticsModule(application))
.remoteConfigModule(RemoteConfigModule())
.tracksFilterModule(TracksFilterModule())
.application(application)
.build()
}

@ApplicationLifecycle
@Component(
modules = [
AlgoliaModule::class,
ApplicationContextModule::class,
FirestoreModule::class,
ChecksumModule::class,
RepositoryModule::class,
Expand Down Expand Up @@ -71,4 +64,12 @@ interface ApplicationComponent {
fun application(): Application

fun algoliaSearchEngine(): AlgoliaSearchEngine

@Component.Builder
interface Builder {
@BindsInstance
fun application(app: Application): Builder

fun build(): ApplicationComponent
}
}

This file was deleted.

@@ -0,0 +1,12 @@
package net.squanchy.injection

import android.app.Activity
import dagger.BindsInstance

interface BaseActivityComponentBuilder<T> {
fun applicationComponent(applicationComponent: ApplicationComponent): BaseActivityComponentBuilder<T>
@BindsInstance
fun activity(activity: Activity): BaseActivityComponentBuilder<T>

fun build(): T
}
Expand Up @@ -3,9 +3,8 @@ package net.squanchy.navigation
import android.app.Activity
import dagger.Module
import dagger.Provides
import net.squanchy.injection.ActivityContextModule

@Module(includes = [ActivityContextModule::class])
@Module
internal class NavigationModule {

@Provides
Expand Down
13 changes: 8 additions & 5 deletions app/src/main/java/net/squanchy/navigation/RoutingComponent.kt
Expand Up @@ -2,7 +2,7 @@ package net.squanchy.navigation

import androidx.appcompat.app.AppCompatActivity
import dagger.Component
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.applicationComponent
Expand All @@ -13,16 +13,16 @@ import net.squanchy.onboarding.OnboardingModule
import net.squanchy.signin.SignInModule
import net.squanchy.signin.SignInService

internal fun routingComponent(activity: AppCompatActivity) =
internal fun routingComponent(activity: AppCompatActivity): RoutingComponent =
DaggerRoutingComponent.builder()
.activityContextModule(ActivityContextModule(activity))
.applicationComponent(activity.applicationComponent)
.activity(activity)
.build()

@ActivityLifecycle
@Component(
modules = [DeepLinkModule::class, SignInModule::class, OnboardingModule::class, RoutingModule::class],
dependencies = [ApplicationComponent::class]
modules = [DeepLinkModule::class, SignInModule::class, OnboardingModule::class, RoutingModule::class],
dependencies = [ApplicationComponent::class]
)
internal interface RoutingComponent {

Expand All @@ -35,4 +35,7 @@ internal interface RoutingComponent {
fun firstStartPersister(): FirstStartPersister

fun onboarding(): Onboarding

@Component.Builder
interface Builder : BaseActivityComponentBuilder<RoutingComponent>
}
3 changes: 1 addition & 2 deletions app/src/main/java/net/squanchy/navigation/RoutingModule.kt
Expand Up @@ -4,9 +4,8 @@ import android.app.Activity
import android.content.Context
import dagger.Module
import dagger.Provides
import net.squanchy.injection.ActivityContextModule

@Module(includes = [ActivityContextModule::class])
@Module
internal class RoutingModule {

@Provides
Expand Down
Expand Up @@ -4,11 +4,10 @@ import android.app.Activity
import dagger.Module
import dagger.Provides
import net.squanchy.R
import net.squanchy.injection.ActivityContextModule
import net.squanchy.navigation.NavigationModule
import net.squanchy.navigation.Navigator

@Module(includes = [ActivityContextModule::class, NavigationModule::class])
@Module(includes = [NavigationModule::class])
class DeepLinkModule {

@Provides
Expand Down
Expand Up @@ -9,12 +9,11 @@ import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.ServiceContextModule
import net.squanchy.injection.applicationComponent

internal fun notificationComponent(service: Service): NotificationComponent {
return DaggerNotificationComponent.builder()
internal fun notificationComponent(service: Service): NotificationComponent =
DaggerNotificationComponent.builder()
.applicationComponent(service.applicationComponent)
.serviceContextModule(ServiceContextModule(service))
.build()
}

@ActivityLifecycle
@Component(modules = [NotificationModule::class], dependencies = [ApplicationComponent::class])
Expand Down
Expand Up @@ -4,9 +4,8 @@ import android.app.Activity
import android.content.Context
import dagger.Module
import dagger.Provides
import net.squanchy.injection.ActivityContextModule

@Module(includes = [ActivityContextModule::class])
@Module
class OnboardingModule {

@Provides
Expand Down
Expand Up @@ -2,7 +2,7 @@ package net.squanchy.onboarding.account

import androidx.appcompat.app.AppCompatActivity
import dagger.Component
import net.squanchy.injection.ActivityContextModule
import net.squanchy.injection.BaseActivityComponentBuilder
import net.squanchy.injection.ActivityLifecycle
import net.squanchy.injection.ApplicationComponent
import net.squanchy.injection.applicationComponent
Expand All @@ -13,10 +13,10 @@ import net.squanchy.onboarding.OnboardingModule
import net.squanchy.signin.SignInModule
import net.squanchy.signin.SignInService

internal fun accountOnboardingComponent(activity: AppCompatActivity) =
internal fun accountOnboardingComponent(activity: AppCompatActivity): AccountOnboardingComponent =
DaggerAccountOnboardingComponent.builder()
.activityContextModule(ActivityContextModule(activity))
.applicationComponent(activity.applicationComponent)
.activity(activity)
.build()

@ActivityLifecycle
Expand All @@ -31,4 +31,7 @@ internal interface AccountOnboardingComponent {
fun signInService(): SignInService

fun navigator(): Navigator

@Component.Builder
interface Builder : BaseActivityComponentBuilder<AccountOnboardingComponent>
}

0 comments on commit 11618cd

Please sign in to comment.