Skip to content

Commit ce97801

Browse files
authored
Update Anvil and contribute multibindings for workers (#1155)
* Bumped anvil to 2.2.0 and upgrade dagger to 2.32 * VM factories to contribute multibinding * Worker factories to contribute multibindings
1 parent 1706e46 commit ce97801

35 files changed

+137
-695
lines changed

app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksViewModel.kt

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616

1717
package com.duckduckgo.app.bookmarks.ui
1818

19-
import androidx.lifecycle.LiveData
20-
import androidx.lifecycle.MutableLiveData
21-
import androidx.lifecycle.Observer
22-
import androidx.lifecycle.ViewModel
23-
import androidx.lifecycle.viewModelScope
19+
import androidx.lifecycle.*
2420
import com.duckduckgo.app.bookmarks.db.BookmarkEntity
2521
import com.duckduckgo.app.bookmarks.db.BookmarksDao
2622
import com.duckduckgo.app.bookmarks.ui.BookmarksViewModel.Command.*
@@ -30,15 +26,12 @@ import com.duckduckgo.app.global.DispatcherProvider
3026
import com.duckduckgo.app.global.SingleLiveEvent
3127
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
3228
import com.duckduckgo.di.scopes.AppObjectGraph
33-
import com.squareup.anvil.annotations.ContributesTo
34-
import dagger.Module
35-
import dagger.Provides
36-
import dagger.multibindings.IntoSet
29+
import com.squareup.anvil.annotations.ContributesMultibinding
3730
import io.reactivex.schedulers.Schedulers
3831
import kotlinx.coroutines.NonCancellable
3932
import kotlinx.coroutines.launch
33+
import javax.inject.Inject
4034
import javax.inject.Provider
41-
import javax.inject.Singleton
4235

4336
class BookmarksViewModel(
4437
val dao: BookmarksDao,
@@ -121,22 +114,8 @@ class BookmarksViewModel(
121114

122115
}
123116

124-
@Module
125-
@ContributesTo(AppObjectGraph::class)
126-
class BookmarksViewModelFactoryModule {
127-
@Provides
128-
@Singleton
129-
@IntoSet
130-
fun provideBookmarksViewModelFactory(
131-
dao: Provider<BookmarksDao>,
132-
faviconManager: Provider<FaviconManager>,
133-
dispatcherProvider: Provider<DispatcherProvider>
134-
): ViewModelFactoryPlugin {
135-
return BookmarksViewModelFactory(dao, faviconManager, dispatcherProvider)
136-
}
137-
}
138-
139-
private class BookmarksViewModelFactory(
117+
@ContributesMultibinding(AppObjectGraph::class)
118+
class BookmarksViewModelFactory @Inject constructor(
140119
private val dao: Provider<BookmarksDao>,
141120
private val faviconManager: Provider<FaviconManager>,
142121
private val dispatcherProvider: Provider<DispatcherProvider>

app/src/main/java/com/duckduckgo/app/brokensite/BrokenSiteViewModel.kt

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@ import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
3131
import com.duckduckgo.app.pixels.AppPixelName
3232
import com.duckduckgo.app.statistics.pixels.Pixel
3333
import com.duckduckgo.di.scopes.AppObjectGraph
34-
import com.squareup.anvil.annotations.ContributesTo
35-
import dagger.Module
36-
import dagger.Provides
37-
import dagger.multibindings.IntoSet
34+
import com.squareup.anvil.annotations.ContributesMultibinding
35+
import javax.inject.Inject
3836
import javax.inject.Provider
39-
import javax.inject.Singleton
4037

4138
class BrokenSiteViewModel(private val pixel: Pixel, private val brokenSiteSender: BrokenSiteSender) : ViewModel() {
4239

@@ -128,21 +125,8 @@ class BrokenSiteViewModel(private val pixel: Pixel, private val brokenSiteSender
128125
}
129126
}
130127

131-
@Module
132-
@ContributesTo(AppObjectGraph::class)
133-
class BrokenSiteViewModelFactoryModule {
134-
@Provides
135-
@Singleton
136-
@IntoSet
137-
fun provideBrokenSiteViewModelFactory(
138-
pixel: Provider<Pixel>,
139-
brokenSiteSender: Provider<BrokenSiteSender>
140-
): ViewModelFactoryPlugin {
141-
return BrokenSiteViewModelFactory(pixel, brokenSiteSender)
142-
}
143-
}
144-
145-
private class BrokenSiteViewModelFactory(
128+
@ContributesMultibinding(AppObjectGraph::class)
129+
class BrokenSiteViewModelFactory @Inject constructor(
146130
private val pixel: Provider<Pixel>,
147131
private val brokenSiteSender: Provider<BrokenSiteSender>
148132
) : ViewModelFactoryPlugin {

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 5 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,14 @@ import com.duckduckgo.app.location.ui.SiteLocationPermissionDialog
8888
import com.duckduckgo.app.location.ui.SystemLocationPermissionDialog
8989
import com.duckduckgo.app.notification.db.NotificationDao
9090
import com.duckduckgo.app.notification.model.UseOurAppNotification
91+
import com.duckduckgo.app.pixels.AppPixelName
9192
import com.duckduckgo.app.privacy.db.NetworkLeaderboardDao
9293
import com.duckduckgo.app.privacy.db.UserWhitelistDao
9394
import com.duckduckgo.app.privacy.model.PrivacyGrade
9495
import com.duckduckgo.app.settings.db.SettingsDataStore
9596
import com.duckduckgo.app.statistics.VariantManager
9697
import com.duckduckgo.app.statistics.api.StatisticsUpdater
9798
import com.duckduckgo.app.statistics.pixels.Pixel
98-
import com.duckduckgo.app.pixels.AppPixelName
9999
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
100100
import com.duckduckgo.app.surrogates.SurrogateResponse
101101
import com.duckduckgo.app.survey.model.Survey
@@ -105,10 +105,7 @@ import com.duckduckgo.app.trackerdetection.model.TrackingEvent
105105
import com.duckduckgo.app.usage.search.SearchCountDao
106106
import com.duckduckgo.di.scopes.AppObjectGraph
107107
import com.jakewharton.rxrelay2.PublishRelay
108-
import com.squareup.anvil.annotations.ContributesTo
109-
import dagger.Module
110-
import dagger.Provides
111-
import dagger.multibindings.IntoSet
108+
import com.squareup.anvil.annotations.ContributesMultibinding
112109
import io.reactivex.android.schedulers.AndroidSchedulers
113110
import io.reactivex.disposables.Disposable
114111
import io.reactivex.schedulers.Schedulers
@@ -118,8 +115,8 @@ import timber.log.Timber
118115
import java.io.File
119116
import java.util.*
120117
import java.util.concurrent.TimeUnit
118+
import javax.inject.Inject
121119
import javax.inject.Provider
122-
import javax.inject.Singleton
123120

124121
class BrowserTabViewModel(
125122
private val statisticsUpdater: StatisticsUpdater,
@@ -1846,80 +1843,8 @@ class BrowserTabViewModel(
18461843
}
18471844
}
18481845

1849-
@Module
1850-
@ContributesTo(AppObjectGraph::class)
1851-
class BrowserTabViewModelFactoryModule {
1852-
@Provides
1853-
@Singleton
1854-
@IntoSet
1855-
fun provideBrowserTabViewModelFactory(
1856-
statisticsUpdater: Provider<StatisticsUpdater>,
1857-
queryUrlConverter: Provider<QueryUrlConverter>,
1858-
duckDuckGoUrlDetector: Provider<DuckDuckGoUrlDetector>,
1859-
siteFactory: Provider<SiteFactory>,
1860-
tabRepository: Provider<TabRepository>,
1861-
userWhitelistDao: Provider<UserWhitelistDao>,
1862-
networkLeaderboardDao: Provider<NetworkLeaderboardDao>,
1863-
bookmarksDao: Provider<BookmarksDao>,
1864-
fireproofWebsiteRepository: Provider<FireproofWebsiteRepository>,
1865-
locationPermissionsRepository: Provider<LocationPermissionsRepository>,
1866-
geoLocationPermissions: Provider<GeoLocationPermissions>,
1867-
navigationAwareLoginDetector: Provider<NavigationAwareLoginDetector>,
1868-
autoCompleteApi: Provider<AutoCompleteApi>,
1869-
appSettingsPreferencesStore: Provider<SettingsDataStore>,
1870-
longPressHandler: Provider<LongPressHandler>,
1871-
webViewSessionStorage: Provider<WebViewSessionStorage>,
1872-
specialUrlDetector: Provider<SpecialUrlDetector>,
1873-
faviconManager: Provider<FaviconManager>,
1874-
addToHomeCapabilityDetector: Provider<AddToHomeCapabilityDetector>,
1875-
ctaViewModel: Provider<CtaViewModel>,
1876-
searchCountDao: Provider<SearchCountDao>,
1877-
pixel: Provider<Pixel>,
1878-
dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
1879-
userEventsStore: Provider<UserEventsStore>,
1880-
notificationDao: Provider<NotificationDao>,
1881-
useOurAppDetector: Provider<UseOurAppDetector>,
1882-
variantManager: Provider<VariantManager>,
1883-
fileDownloader: Provider<FileDownloader>,
1884-
globalPrivacyControl: Provider<GlobalPrivacyControl>,
1885-
fireproofDialogsEventHandler: Provider<FireproofDialogsEventHandler>
1886-
): ViewModelFactoryPlugin {
1887-
return BrowserTabViewModelFactory(
1888-
statisticsUpdater,
1889-
queryUrlConverter,
1890-
duckDuckGoUrlDetector,
1891-
siteFactory,
1892-
tabRepository,
1893-
userWhitelistDao,
1894-
networkLeaderboardDao,
1895-
bookmarksDao,
1896-
fireproofWebsiteRepository,
1897-
locationPermissionsRepository,
1898-
geoLocationPermissions,
1899-
navigationAwareLoginDetector,
1900-
autoCompleteApi,
1901-
appSettingsPreferencesStore,
1902-
longPressHandler,
1903-
webViewSessionStorage,
1904-
specialUrlDetector,
1905-
faviconManager,
1906-
addToHomeCapabilityDetector,
1907-
ctaViewModel,
1908-
searchCountDao,
1909-
pixel,
1910-
dispatchers,
1911-
userEventsStore,
1912-
notificationDao,
1913-
useOurAppDetector,
1914-
variantManager,
1915-
fileDownloader,
1916-
globalPrivacyControl,
1917-
fireproofDialogsEventHandler
1918-
)
1919-
}
1920-
}
1921-
1922-
private class BrowserTabViewModelFactory(
1846+
@ContributesMultibinding(AppObjectGraph::class)
1847+
class BrowserTabViewModelFactory @Inject constructor(
19231848
private val statisticsUpdater: Provider<StatisticsUpdater>,
19241849
private val queryUrlConverter: Provider<QueryUrlConverter>,
19251850
private val duckDuckGoUrlDetector: Provider<DuckDuckGoUrlDetector>,

app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,13 @@ import com.duckduckgo.app.statistics.pixels.Pixel
4545
import com.duckduckgo.app.tabs.model.TabEntity
4646
import com.duckduckgo.app.tabs.model.TabRepository
4747
import com.duckduckgo.di.scopes.AppObjectGraph
48-
import com.squareup.anvil.annotations.ContributesTo
49-
import dagger.Module
50-
import dagger.Provides
51-
import dagger.multibindings.IntoSet
48+
import com.squareup.anvil.annotations.ContributesMultibinding
5249
import kotlinx.coroutines.CoroutineScope
5350
import kotlinx.coroutines.Dispatchers
5451
import kotlinx.coroutines.launch
5552
import timber.log.Timber
53+
import javax.inject.Inject
5654
import javax.inject.Provider
57-
import javax.inject.Singleton
5855
import kotlin.coroutines.CoroutineContext
5956

6057
class BrowserViewModel(
@@ -242,27 +239,8 @@ class BrowserViewModel(
242239
}
243240
}
244241

245-
@Module
246-
@ContributesTo(AppObjectGraph::class)
247-
class BrowserViewModelFactoryModule {
248-
@Provides
249-
@Singleton
250-
@IntoSet
251-
fun provideBrowserViewModelFactory(
252-
tabRepository: Provider<TabRepository>,
253-
queryUrlConverter: Provider<QueryUrlConverter>,
254-
dataClearer: Provider<DataClearer>,
255-
appEnjoymentPromptEmitter: Provider<AppEnjoymentPromptEmitter>,
256-
appEnjoymentUserEventRecorder: Provider<AppEnjoymentUserEventRecorder>,
257-
dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
258-
pixel: Provider<Pixel>,
259-
useOurAppDetector: Provider<UseOurAppDetector>
260-
): ViewModelFactoryPlugin {
261-
return BrowserViewModelFactory(tabRepository, queryUrlConverter, dataClearer, appEnjoymentPromptEmitter, appEnjoymentUserEventRecorder, dispatchers, pixel, useOurAppDetector)
262-
}
263-
}
264-
265-
private class BrowserViewModelFactory(
242+
@ContributesMultibinding(AppObjectGraph::class)
243+
class BrowserViewModelFactory @Inject constructor(
266244
val tabRepository: Provider<TabRepository>,
267245
val queryUrlConverter: Provider<QueryUrlConverter>,
268246
val dataClearer: Provider<DataClearer>,

app/src/main/java/com/duckduckgo/app/di/AppComponent.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import com.duckduckgo.app.browser.favicon.FaviconModule
2424
import com.duckduckgo.app.browser.rating.di.RatingModule
2525
import com.duckduckgo.app.global.DuckDuckGoApplication
2626
import com.duckduckgo.app.global.exception.UncaughtExceptionModule
27-
import com.duckduckgo.app.global.plugins.worker.WorkerPluginsModule
2827
import com.duckduckgo.app.httpsupgrade.di.HttpsUpgraderModule
2928
import com.duckduckgo.app.onboarding.di.OnboardingModule
3029
import com.duckduckgo.app.onboarding.di.WelcomePageModule
@@ -47,7 +46,6 @@ import javax.inject.Singleton
4746
@MergeComponent(
4847
scope = AppObjectGraph::class,
4948
modules = [
50-
WorkerPluginsModule::class,
5149
ApplicationModule::class,
5250
JobsModule::class,
5351
WorkerModule::class,

app/src/main/java/com/duckduckgo/app/feedback/ui/common/FeedbackViewModel.kt

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,14 @@ import com.duckduckgo.app.global.SingleLiveEvent
2828
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
2929
import com.duckduckgo.app.playstore.PlayStoreUtils
3030
import com.duckduckgo.di.scopes.AppObjectGraph
31-
import com.squareup.anvil.annotations.ContributesTo
32-
import dagger.Module
33-
import dagger.Provides
34-
import dagger.multibindings.IntoSet
31+
import com.squareup.anvil.annotations.ContributesMultibinding
3532
import kotlinx.coroutines.Dispatchers
3633
import kotlinx.coroutines.GlobalScope
3734
import kotlinx.coroutines.launch
3835
import kotlinx.coroutines.withContext
3936
import timber.log.Timber
37+
import javax.inject.Inject
4038
import javax.inject.Provider
41-
import javax.inject.Singleton
4239

4340
class FeedbackViewModel(private val playStoreUtils: PlayStoreUtils, private val feedbackSubmitter: FeedbackSubmitter) : ViewModel() {
4441

@@ -291,21 +288,8 @@ data class UpdateViewCommand(
291288
val subReason: SubReason? = null
292289
)
293290

294-
@Module
295-
@ContributesTo(AppObjectGraph::class)
296-
class FeedbackViewModelFactoryModule {
297-
@Provides
298-
@Singleton
299-
@IntoSet
300-
fun provideFeedbackViewModelFactory(
301-
playStoreUtils: Provider<PlayStoreUtils>,
302-
feedbackSubmitter: Provider<FeedbackSubmitter>
303-
): ViewModelFactoryPlugin {
304-
return FeedbackViewModelFactory(playStoreUtils, feedbackSubmitter)
305-
}
306-
}
307-
308-
private class FeedbackViewModelFactory(
291+
@ContributesMultibinding(AppObjectGraph::class)
292+
class FeedbackViewModelFactory @Inject constructor(
309293
private val playStoreUtils: Provider<PlayStoreUtils>,
310294
private val feedbackSubmitter: Provider<FeedbackSubmitter>
311295
) : ViewModelFactoryPlugin {

app/src/main/java/com/duckduckgo/app/feedback/ui/initial/InitialFeedbackFragmentViewModel.kt

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,8 @@ import androidx.lifecycle.ViewModel
2121
import com.duckduckgo.app.feedback.ui.common.ViewState
2222
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
2323
import com.duckduckgo.di.scopes.AppObjectGraph
24-
import com.squareup.anvil.annotations.ContributesTo
25-
import dagger.Module
26-
import dagger.Provides
27-
import dagger.multibindings.IntoSet
28-
import javax.inject.Singleton
24+
import com.squareup.anvil.annotations.ContributesMultibinding
25+
import javax.inject.Inject
2926

3027
class InitialFeedbackFragmentViewModel : ViewModel() {
3128

@@ -47,18 +44,8 @@ class InitialFeedbackFragmentViewModel : ViewModel() {
4744
}
4845
}
4946

50-
@Module
51-
@ContributesTo(AppObjectGraph::class)
52-
class InitialFeedbackFragmentViewModelFactoryModule {
53-
@Provides
54-
@Singleton
55-
@IntoSet
56-
fun provideInitialFeedbackFragmentViewModelFactory(): ViewModelFactoryPlugin {
57-
return InitialFeedbackFragmentViewModelFactory()
58-
}
59-
}
60-
61-
private class InitialFeedbackFragmentViewModelFactory : ViewModelFactoryPlugin {
47+
@ContributesMultibinding(AppObjectGraph::class)
48+
class InitialFeedbackFragmentViewModelFactory @Inject constructor() : ViewModelFactoryPlugin {
6249
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
6350
with(modelClass) {
6451
return when {

app/src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackViewModel.kt

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ import androidx.lifecycle.ViewModel
2020
import com.duckduckgo.app.global.SingleLiveEvent
2121
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
2222
import com.duckduckgo.di.scopes.AppObjectGraph
23-
import com.squareup.anvil.annotations.ContributesTo
24-
import dagger.Module
25-
import dagger.Provides
26-
import dagger.multibindings.IntoSet
27-
import javax.inject.Singleton
23+
import com.squareup.anvil.annotations.ContributesMultibinding
24+
import javax.inject.Inject
2825

2926
class BrokenSiteNegativeFeedbackViewModel : ViewModel() {
3027

@@ -40,18 +37,8 @@ class BrokenSiteNegativeFeedbackViewModel : ViewModel() {
4037
}
4138
}
4239

43-
@Module
44-
@ContributesTo(AppObjectGraph::class)
45-
class BrokenSiteNegativeFeedbackViewModelFactoryModule {
46-
@Provides
47-
@Singleton
48-
@IntoSet
49-
fun provideBrokenSiteNegativeFeedbackViewModelFactory(): ViewModelFactoryPlugin {
50-
return BrokenSiteNegativeFeedbackViewModelFactory()
51-
}
52-
}
53-
54-
private class BrokenSiteNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin {
40+
@ContributesMultibinding(AppObjectGraph::class)
41+
class BrokenSiteNegativeFeedbackViewModelFactory @Inject constructor() : ViewModelFactoryPlugin {
5542
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
5643
with(modelClass) {
5744
return when {

0 commit comments

Comments
 (0)