diff --git a/app/src/main/java/net/squanchy/about/AboutComponent.kt b/app/src/main/java/net/squanchy/about/AboutComponent.kt index e0383d15..fbda3e20 100644 --- a/app/src/main/java/net/squanchy/about/AboutComponent.kt +++ b/app/src/main/java/net/squanchy/about/AboutComponent.kt @@ -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 } diff --git a/app/src/main/java/net/squanchy/analytics/AnalyticsModule.kt b/app/src/main/java/net/squanchy/analytics/AnalyticsModule.kt index f8476c38..6cbdd217 100644 --- a/app/src/main/java/net/squanchy/analytics/AnalyticsModule.kt +++ b/app/src/main/java/net/squanchy/analytics/AnalyticsModule.kt @@ -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() diff --git a/app/src/main/java/net/squanchy/eventdetails/EventDetailsComponent.kt b/app/src/main/java/net/squanchy/eventdetails/EventDetailsComponent.kt index aba3338f..9b403d3e 100644 --- a/app/src/main/java/net/squanchy/eventdetails/EventDetailsComponent.kt +++ b/app/src/main/java/net/squanchy/eventdetails/EventDetailsComponent.kt @@ -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 @@ -21,4 +21,7 @@ internal interface EventDetailsComponent { fun service(): EventDetailsService fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/favorites/FavoritesComponent.kt b/app/src/main/java/net/squanchy/favorites/FavoritesComponent.kt index 169681f3..f26b7daa 100644 --- a/app/src/main/java/net/squanchy/favorites/FavoritesComponent.kt +++ b/app/src/main/java/net/squanchy/favorites/FavoritesComponent.kt @@ -3,7 +3,7 @@ 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 @@ -11,6 +11,12 @@ 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 { @@ -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 } diff --git a/app/src/main/java/net/squanchy/home/HomeComponent.kt b/app/src/main/java/net/squanchy/home/HomeComponent.kt index d1fc89cb..c5a1b8b6 100644 --- a/app/src/main/java/net/squanchy/home/HomeComponent.kt +++ b/app/src/main/java/net/squanchy/home/HomeComponent.kt @@ -3,7 +3,7 @@ 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 @@ -11,10 +11,10 @@ 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 @@ -24,4 +24,7 @@ interface HomeComponent { fun analytics(): Analytics fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/imageloader/ImageLoaderComponent.kt b/app/src/main/java/net/squanchy/imageloader/ImageLoaderComponent.kt index a9ad685a..a112963a 100644 --- a/app/src/main/java/net/squanchy/imageloader/ImageLoaderComponent.kt +++ b/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 + } } diff --git a/app/src/main/java/net/squanchy/imageloader/ImageLoaderModule.kt b/app/src/main/java/net/squanchy/imageloader/ImageLoaderModule.kt index 58267947..4476e4fd 100644 --- a/app/src/main/java/net/squanchy/imageloader/ImageLoaderModule.kt +++ b/app/src/main/java/net/squanchy/imageloader/ImageLoaderModule.kt @@ -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 diff --git a/app/src/main/java/net/squanchy/injection/ActivityContextModule.kt b/app/src/main/java/net/squanchy/injection/ActivityContextModule.kt deleted file mode 100644 index 986c96be..00000000 --- a/app/src/main/java/net/squanchy/injection/ActivityContextModule.kt +++ /dev/null @@ -1,17 +0,0 @@ -package net.squanchy.injection - -import android.app.Activity -import androidx.appcompat.app.AppCompatActivity - -import dagger.Module -import dagger.Provides - -@Module -class ActivityContextModule(private val activity: AppCompatActivity) { - - @Provides - internal fun appCompatActivityContext(): AppCompatActivity = activity - - @Provides - internal fun activityContext(): Activity = activity -} diff --git a/app/src/main/java/net/squanchy/injection/ApplicationComponent.kt b/app/src/main/java/net/squanchy/injection/ApplicationComponent.kt index 1eb806cd..6015b6cd 100644 --- a/app/src/main/java/net/squanchy/injection/ApplicationComponent.kt +++ b/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 @@ -23,14 +24,7 @@ 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() } @@ -38,7 +32,6 @@ fun createApplicationComponent(application: Application): ApplicationComponent { @Component( modules = [ AlgoliaModule::class, - ApplicationContextModule::class, FirestoreModule::class, ChecksumModule::class, RepositoryModule::class, @@ -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 + } } diff --git a/app/src/main/java/net/squanchy/injection/ApplicationContextModule.kt b/app/src/main/java/net/squanchy/injection/ApplicationContextModule.kt deleted file mode 100644 index d28f6988..00000000 --- a/app/src/main/java/net/squanchy/injection/ApplicationContextModule.kt +++ /dev/null @@ -1,13 +0,0 @@ -package net.squanchy.injection - -import android.app.Application - -import dagger.Module -import dagger.Provides - -@Module -class ApplicationContextModule internal constructor(private val application: Application) { - - @Provides - internal fun applicationContext(): Application = application -} diff --git a/app/src/main/java/net/squanchy/injection/BaseActivityComponentBuilder.kt b/app/src/main/java/net/squanchy/injection/BaseActivityComponentBuilder.kt new file mode 100644 index 00000000..614d967a --- /dev/null +++ b/app/src/main/java/net/squanchy/injection/BaseActivityComponentBuilder.kt @@ -0,0 +1,12 @@ +package net.squanchy.injection + +import android.app.Activity +import dagger.BindsInstance + +interface BaseActivityComponentBuilder { + fun applicationComponent(applicationComponent: ApplicationComponent): BaseActivityComponentBuilder + @BindsInstance + fun activity(activity: Activity): BaseActivityComponentBuilder + + fun build(): T +} diff --git a/app/src/main/java/net/squanchy/navigation/NavigationModule.kt b/app/src/main/java/net/squanchy/navigation/NavigationModule.kt index 85001b94..3b694478 100644 --- a/app/src/main/java/net/squanchy/navigation/NavigationModule.kt +++ b/app/src/main/java/net/squanchy/navigation/NavigationModule.kt @@ -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 diff --git a/app/src/main/java/net/squanchy/navigation/RoutingComponent.kt b/app/src/main/java/net/squanchy/navigation/RoutingComponent.kt index 348fe894..bc471a43 100644 --- a/app/src/main/java/net/squanchy/navigation/RoutingComponent.kt +++ b/app/src/main/java/net/squanchy/navigation/RoutingComponent.kt @@ -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 @@ -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 { @@ -35,4 +35,7 @@ internal interface RoutingComponent { fun firstStartPersister(): FirstStartPersister fun onboarding(): Onboarding + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/navigation/RoutingModule.kt b/app/src/main/java/net/squanchy/navigation/RoutingModule.kt index c43cfce1..c95994aa 100644 --- a/app/src/main/java/net/squanchy/navigation/RoutingModule.kt +++ b/app/src/main/java/net/squanchy/navigation/RoutingModule.kt @@ -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 diff --git a/app/src/main/java/net/squanchy/navigation/deeplink/DeepLinkModule.kt b/app/src/main/java/net/squanchy/navigation/deeplink/DeepLinkModule.kt index 42ae856a..53b2a186 100644 --- a/app/src/main/java/net/squanchy/navigation/deeplink/DeepLinkModule.kt +++ b/app/src/main/java/net/squanchy/navigation/deeplink/DeepLinkModule.kt @@ -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 diff --git a/app/src/main/java/net/squanchy/notification/NotificationComponent.kt b/app/src/main/java/net/squanchy/notification/NotificationComponent.kt index ba1594cd..4bfc49e1 100644 --- a/app/src/main/java/net/squanchy/notification/NotificationComponent.kt +++ b/app/src/main/java/net/squanchy/notification/NotificationComponent.kt @@ -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]) diff --git a/app/src/main/java/net/squanchy/onboarding/OnboardingModule.kt b/app/src/main/java/net/squanchy/onboarding/OnboardingModule.kt index ca74a204..88de9d89 100644 --- a/app/src/main/java/net/squanchy/onboarding/OnboardingModule.kt +++ b/app/src/main/java/net/squanchy/onboarding/OnboardingModule.kt @@ -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 diff --git a/app/src/main/java/net/squanchy/onboarding/account/AccountOnboardingComponent.kt b/app/src/main/java/net/squanchy/onboarding/account/AccountOnboardingComponent.kt index 06d838c5..ad2f414a 100644 --- a/app/src/main/java/net/squanchy/onboarding/account/AccountOnboardingComponent.kt +++ b/app/src/main/java/net/squanchy/onboarding/account/AccountOnboardingComponent.kt @@ -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 @@ -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 @@ -31,4 +31,7 @@ internal interface AccountOnboardingComponent { fun signInService(): SignInService fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/schedule/ScheduleComponent.kt b/app/src/main/java/net/squanchy/schedule/ScheduleComponent.kt index d56a5f7f..60904557 100644 --- a/app/src/main/java/net/squanchy/schedule/ScheduleComponent.kt +++ b/app/src/main/java/net/squanchy/schedule/ScheduleComponent.kt @@ -3,7 +3,7 @@ package net.squanchy.schedule 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 @@ -15,10 +15,11 @@ import net.squanchy.service.repository.TracksRepository import net.squanchy.support.injection.CurrentTimeModule import net.squanchy.support.system.CurrentTime -internal fun scheduleComponent(activity: AppCompatActivity): ScheduleComponent = DaggerScheduleComponent.builder() - .applicationComponent(activity.applicationComponent) - .activityContextModule(ActivityContextModule(activity)) - .build() +internal fun scheduleComponent(activity: AppCompatActivity): ScheduleComponent = + DaggerScheduleComponent.builder() + .applicationComponent(activity.applicationComponent) + .activity(activity) + .build() @ActivityLifecycle @Component( @@ -40,4 +41,7 @@ internal interface ScheduleComponent { fun tracksFilter(): TracksFilter fun featureFlags(): FeatureFlags + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/search/SearchComponent.kt b/app/src/main/java/net/squanchy/search/SearchComponent.kt index cd3e385d..470bf952 100644 --- a/app/src/main/java/net/squanchy/search/SearchComponent.kt +++ b/app/src/main/java/net/squanchy/search/SearchComponent.kt @@ -1,18 +1,17 @@ package net.squanchy.search +import dagger.Component +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 dagger.Component -import net.squanchy.injection.ActivityContextModule -import net.squanchy.injection.applicationComponent - -internal fun searchComponent(activity: SearchActivity) = +internal fun searchComponent(activity: SearchActivity): SearchComponent = DaggerSearchComponent.builder() .applicationComponent(activity.applicationComponent) - .activityContextModule(ActivityContextModule(activity)) + .activity(activity) .build() @ActivityLifecycle @@ -22,4 +21,7 @@ internal interface SearchComponent { fun service(): SearchService fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/settings/SettingsFragmentComponent.kt b/app/src/main/java/net/squanchy/settings/SettingsFragmentComponent.kt index b1ba5200..dd281daa 100644 --- a/app/src/main/java/net/squanchy/settings/SettingsFragmentComponent.kt +++ b/app/src/main/java/net/squanchy/settings/SettingsFragmentComponent.kt @@ -3,7 +3,7 @@ package net.squanchy.settings 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 @@ -15,10 +15,10 @@ import net.squanchy.signin.SignInService import net.squanchy.wificonfig.WifiConfigModule import net.squanchy.wificonfig.WifiConfigService -internal fun settingsFragmentComponent(activity: AppCompatActivity) = +internal fun settingsFragmentComponent(activity: AppCompatActivity): SettingsFragmentComponent = DaggerSettingsFragmentComponent.builder() - .activityContextModule(ActivityContextModule(activity)) .applicationComponent(activity.applicationComponent) + .activity(activity) .build() @ActivityLifecycle @@ -34,4 +34,7 @@ interface SettingsFragmentComponent { fun remoteConfig(): RemoteConfig fun wifiConfigService(): WifiConfigService + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/settings/WifiConfigErrorActivityComponent.kt b/app/src/main/java/net/squanchy/settings/WifiConfigErrorActivityComponent.kt index fcafa2aa..6f8ce3b7 100644 --- a/app/src/main/java/net/squanchy/settings/WifiConfigErrorActivityComponent.kt +++ b/app/src/main/java/net/squanchy/settings/WifiConfigErrorActivityComponent.kt @@ -2,18 +2,17 @@ package net.squanchy.settings 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 import net.squanchy.navigation.NavigationModule import net.squanchy.navigation.Navigator -internal fun wifiConfigErrorActivityComponent(activity: AppCompatActivity) = +internal fun wifiConfigErrorActivityComponent(activity: AppCompatActivity): WifiConfigErrorActivityComponent = DaggerWifiConfigErrorActivityComponent.builder() - .activityContextModule(ActivityContextModule(activity)) .applicationComponent(activity.applicationComponent) - .navigationModule(NavigationModule()) + .activity(activity) .build() @ActivityLifecycle @@ -21,4 +20,7 @@ internal fun wifiConfigErrorActivityComponent(activity: AppCompatActivity) = interface WifiConfigErrorActivityComponent { fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/speaker/SpeakerDetailsComponent.kt b/app/src/main/java/net/squanchy/speaker/SpeakerDetailsComponent.kt index 3fd3bb88..43c54c24 100644 --- a/app/src/main/java/net/squanchy/speaker/SpeakerDetailsComponent.kt +++ b/app/src/main/java/net/squanchy/speaker/SpeakerDetailsComponent.kt @@ -1,18 +1,17 @@ package net.squanchy.speaker +import dagger.Component +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 dagger.Component -import net.squanchy.injection.ActivityContextModule -import net.squanchy.injection.applicationComponent - internal fun speakerDetailsComponent(activity: SpeakerDetailsActivity): SpeakerDetailsComponent = DaggerSpeakerDetailsComponent.builder() .applicationComponent(activity.applicationComponent) - .activityContextModule(ActivityContextModule(activity)) + .activity(activity) .build() @ActivityLifecycle @@ -22,4 +21,7 @@ internal interface SpeakerDetailsComponent { fun service(): SpeakerDetailsService fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/tweets/TwitterComponent.kt b/app/src/main/java/net/squanchy/tweets/TwitterComponent.kt index 63c1c028..e73a2f72 100644 --- a/app/src/main/java/net/squanchy/tweets/TwitterComponent.kt +++ b/app/src/main/java/net/squanchy/tweets/TwitterComponent.kt @@ -2,7 +2,7 @@ package net.squanchy.tweets 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 @@ -10,21 +10,23 @@ import net.squanchy.navigation.NavigationModule import net.squanchy.navigation.Navigator import net.squanchy.tweets.service.TwitterService -internal fun twitterComponent(activity: AppCompatActivity): TwitterComponent { - return DaggerTwitterComponent.builder() +internal fun twitterComponent(activity: AppCompatActivity): TwitterComponent = + DaggerTwitterComponent.builder() .applicationComponent(activity.applicationComponent) - .activityContextModule(ActivityContextModule(activity)) + .activity(activity) .build() -} @ActivityLifecycle @Component( - modules = [(TwitterModule::class), (NavigationModule::class)], - dependencies = [(ApplicationComponent::class)] + modules = [(TwitterModule::class), (NavigationModule::class)], + dependencies = [(ApplicationComponent::class)] ) internal interface TwitterComponent { fun service(): TwitterService fun navigator(): Navigator + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/venue/VenueInfoComponent.kt b/app/src/main/java/net/squanchy/venue/VenueInfoComponent.kt index 27a47afd..cbc3d708 100644 --- a/app/src/main/java/net/squanchy/venue/VenueInfoComponent.kt +++ b/app/src/main/java/net/squanchy/venue/VenueInfoComponent.kt @@ -2,18 +2,18 @@ package net.squanchy.venue 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 import net.squanchy.navigation.NavigationModule import net.squanchy.navigation.Navigator -internal fun venueInfoComponent(activity: AppCompatActivity) = +internal fun venueInfoComponent(activity: AppCompatActivity): VenueInfoComponent = DaggerVenueInfoComponent.builder() - .applicationComponent(activity.applicationComponent) - .activityContextModule(ActivityContextModule(activity)) - .build() + .applicationComponent(activity.applicationComponent) + .activity(activity) + .build() @ActivityLifecycle @Component(modules = [VenueInfoModule::class, NavigationModule::class], dependencies = [ApplicationComponent::class]) @@ -22,4 +22,7 @@ internal interface VenueInfoComponent { fun navigator(): Navigator fun service(): VenueInfoService + + @Component.Builder + interface Builder : BaseActivityComponentBuilder } diff --git a/app/src/main/java/net/squanchy/wificonfig/WifiConfigModule.kt b/app/src/main/java/net/squanchy/wificonfig/WifiConfigModule.kt index 931e2352..e35450d2 100644 --- a/app/src/main/java/net/squanchy/wificonfig/WifiConfigModule.kt +++ b/app/src/main/java/net/squanchy/wificonfig/WifiConfigModule.kt @@ -6,10 +6,9 @@ import android.net.wifi.WifiManager import dagger.Module import dagger.Provides import net.squanchy.analytics.Analytics -import net.squanchy.injection.ActivityContextModule import net.squanchy.remoteconfig.RemoteConfig -@Module(includes = [ActivityContextModule::class]) +@Module internal class WifiConfigModule { @Provides