Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import dagger.multibindings.IntoSet
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
import javax.inject.Provider
import javax.inject.Singleton

class BookmarksViewModel(
Expand Down Expand Up @@ -127,23 +128,23 @@ class BookmarksViewModelFactoryModule {
@Singleton
@IntoSet
fun provideBookmarksViewModelFactory(
dao: BookmarksDao,
faviconManager: FaviconManager,
dispatcherProvider: DispatcherProvider
dao: Provider<BookmarksDao>,
faviconManager: Provider<FaviconManager>,
dispatcherProvider: Provider<DispatcherProvider>
): ViewModelFactoryPlugin {
return BookmarksViewModelFactory(dao, faviconManager, dispatcherProvider)
}
}

private class BookmarksViewModelFactory(
private val dao: BookmarksDao,
private val faviconManager: FaviconManager,
private val dispatcherProvider: DispatcherProvider
private val dao: Provider<BookmarksDao>,
private val faviconManager: Provider<FaviconManager>,
private val dispatcherProvider: Provider<DispatcherProvider>
) : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
isAssignableFrom(BookmarksViewModel::class.java) -> (BookmarksViewModel(dao, faviconManager, dispatcherProvider) as T)
isAssignableFrom(BookmarksViewModel::class.java) -> (BookmarksViewModel(dao.get(), faviconManager.get(), dispatcherProvider.get()) as T)
else -> null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import javax.inject.Provider
import javax.inject.Singleton

class BrokenSiteViewModel(private val pixel: Pixel, private val brokenSiteSender: BrokenSiteSender) : ViewModel() {
Expand Down Expand Up @@ -134,21 +135,21 @@ class BrokenSiteViewModelFactoryModule {
@Singleton
@IntoSet
fun provideBrokenSiteViewModelFactory(
pixel: Pixel,
brokenSiteSender: BrokenSiteSender
pixel: Provider<Pixel>,
brokenSiteSender: Provider<BrokenSiteSender>
): ViewModelFactoryPlugin {
return BrokenSiteViewModelFactory(pixel, brokenSiteSender)
}
}

private class BrokenSiteViewModelFactory(
private val pixel: Pixel,
private val brokenSiteSender: BrokenSiteSender
private val pixel: Provider<Pixel>,
private val brokenSiteSender: Provider<BrokenSiteSender>
) : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
isAssignableFrom(BrokenSiteViewModel::class.java) -> (BrokenSiteViewModel(pixel, brokenSiteSender) as T)
isAssignableFrom(BrokenSiteViewModel::class.java) -> (BrokenSiteViewModel(pixel.get(), brokenSiteSender.get()) as T)
else -> null
}
}
Expand Down
119 changes: 60 additions & 59 deletions app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ import timber.log.Timber
import java.io.File
import java.util.*
import java.util.concurrent.TimeUnit
import javax.inject.Provider
import javax.inject.Singleton

class BrowserTabViewModel(
Expand Down Expand Up @@ -1843,36 +1844,36 @@ class BrowserTabViewModelFactoryModule {
@Singleton
@IntoSet
fun provideBrowserTabViewModelFactory(
statisticsUpdater: StatisticsUpdater,
queryUrlConverter: QueryUrlConverter,
duckDuckGoUrlDetector: DuckDuckGoUrlDetector,
siteFactory: SiteFactory,
tabRepository: TabRepository,
userWhitelistDao: UserWhitelistDao,
networkLeaderboardDao: NetworkLeaderboardDao,
bookmarksDao: BookmarksDao,
fireproofWebsiteRepository: FireproofWebsiteRepository,
locationPermissionsRepository: LocationPermissionsRepository,
geoLocationPermissions: GeoLocationPermissions,
navigationAwareLoginDetector: NavigationAwareLoginDetector,
autoCompleteApi: AutoCompleteApi,
appSettingsPreferencesStore: SettingsDataStore,
longPressHandler: LongPressHandler,
webViewSessionStorage: WebViewSessionStorage,
specialUrlDetector: SpecialUrlDetector,
faviconManager: FaviconManager,
addToHomeCapabilityDetector: AddToHomeCapabilityDetector,
ctaViewModel: CtaViewModel,
searchCountDao: SearchCountDao,
pixel: Pixel,
statisticsUpdater: Provider<StatisticsUpdater>,
queryUrlConverter: Provider<QueryUrlConverter>,
duckDuckGoUrlDetector: Provider<DuckDuckGoUrlDetector>,
siteFactory: Provider<SiteFactory>,
tabRepository: Provider<TabRepository>,
userWhitelistDao: Provider<UserWhitelistDao>,
networkLeaderboardDao: Provider<NetworkLeaderboardDao>,
bookmarksDao: Provider<BookmarksDao>,
fireproofWebsiteRepository: Provider<FireproofWebsiteRepository>,
locationPermissionsRepository: Provider<LocationPermissionsRepository>,
geoLocationPermissions: Provider<GeoLocationPermissions>,
navigationAwareLoginDetector: Provider<NavigationAwareLoginDetector>,
autoCompleteApi: Provider<AutoCompleteApi>,
appSettingsPreferencesStore: Provider<SettingsDataStore>,
longPressHandler: Provider<LongPressHandler>,
webViewSessionStorage: Provider<WebViewSessionStorage>,
specialUrlDetector: Provider<SpecialUrlDetector>,
faviconManager: Provider<FaviconManager>,
addToHomeCapabilityDetector: Provider<AddToHomeCapabilityDetector>,
ctaViewModel: Provider<CtaViewModel>,
searchCountDao: Provider<SearchCountDao>,
pixel: Provider<Pixel>,
dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
userEventsStore: UserEventsStore,
notificationDao: NotificationDao,
useOurAppDetector: UseOurAppDetector,
variantManager: VariantManager,
fileDownloader: FileDownloader,
globalPrivacyControl: GlobalPrivacyControl,
fireproofDialogsEventHandler: FireproofDialogsEventHandler
userEventsStore: Provider<UserEventsStore>,
notificationDao: Provider<NotificationDao>,
useOurAppDetector: Provider<UseOurAppDetector>,
variantManager: Provider<VariantManager>,
fileDownloader: Provider<FileDownloader>,
globalPrivacyControl: Provider<GlobalPrivacyControl>,
fireproofDialogsEventHandler: Provider<FireproofDialogsEventHandler>
): ViewModelFactoryPlugin {
return BrowserTabViewModelFactory(
statisticsUpdater,
Expand Down Expand Up @@ -1910,41 +1911,41 @@ class BrowserTabViewModelFactoryModule {
}

private class BrowserTabViewModelFactory(
private val statisticsUpdater: StatisticsUpdater,
private val queryUrlConverter: OmnibarEntryConverter,
private val duckDuckGoUrlDetector: DuckDuckGoUrlDetector,
private val siteFactory: SiteFactory,
private val tabRepository: TabRepository,
private val userWhitelistDao: UserWhitelistDao,
private val networkLeaderboardDao: NetworkLeaderboardDao,
private val bookmarksDao: BookmarksDao,
private val fireproofWebsiteRepository: FireproofWebsiteRepository,
private val locationPermissionsRepository: LocationPermissionsRepository,
private val geoLocationPermissions: GeoLocationPermissions,
private val navigationAwareLoginDetector: NavigationAwareLoginDetector,
private val autoComplete: AutoComplete,
private val appSettingsPreferencesStore: SettingsDataStore,
private val longPressHandler: LongPressHandler,
private val webViewSessionStorage: WebViewSessionStorage,
private val specialUrlDetector: SpecialUrlDetector,
private val faviconManager: FaviconManager,
private val addToHomeCapabilityDetector: AddToHomeCapabilityDetector,
private val ctaViewModel: CtaViewModel,
private val searchCountDao: SearchCountDao,
private val pixel: Pixel,
private val statisticsUpdater: Provider<StatisticsUpdater>,
private val queryUrlConverter: Provider<QueryUrlConverter>,
private val duckDuckGoUrlDetector: Provider<DuckDuckGoUrlDetector>,
private val siteFactory: Provider<SiteFactory>,
private val tabRepository: Provider<TabRepository>,
private val userWhitelistDao: Provider<UserWhitelistDao>,
private val networkLeaderboardDao: Provider<NetworkLeaderboardDao>,
private val bookmarksDao: Provider<BookmarksDao>,
private val fireproofWebsiteRepository: Provider<FireproofWebsiteRepository>,
private val locationPermissionsRepository: Provider<LocationPermissionsRepository>,
private val geoLocationPermissions: Provider<GeoLocationPermissions>,
private val navigationAwareLoginDetector: Provider<NavigationAwareLoginDetector>,
private val autoComplete: Provider<AutoCompleteApi>,
private val appSettingsPreferencesStore: Provider<SettingsDataStore>,
private val longPressHandler: Provider<LongPressHandler>,
private val webViewSessionStorage: Provider<WebViewSessionStorage>,
private val specialUrlDetector: Provider<SpecialUrlDetector>,
private val faviconManager: Provider<FaviconManager>,
private val addToHomeCapabilityDetector: Provider<AddToHomeCapabilityDetector>,
private val ctaViewModel: Provider<CtaViewModel>,
private val searchCountDao: Provider<SearchCountDao>,
private val pixel: Provider<Pixel>,
private val dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
private val userEventsStore: UserEventsStore,
private val notificationDao: NotificationDao,
private val useOurAppDetector: UseOurAppDetector,
private val variantManager: VariantManager,
private val fileDownloader: FileDownloader,
private val globalPrivacyControl: GlobalPrivacyControl,
private val fireproofDialogsEventHandler: FireproofDialogsEventHandler
private val userEventsStore: Provider<UserEventsStore>,
private val notificationDao: Provider<NotificationDao>,
private val useOurAppDetector: Provider<UseOurAppDetector>,
private val variantManager: Provider<VariantManager>,
private val fileDownloader: Provider<FileDownloader>,
private val globalPrivacyControl: Provider<GlobalPrivacyControl>,
private val fireproofDialogsEventHandler: Provider<FireproofDialogsEventHandler>
) : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
isAssignableFrom(BrowserTabViewModel::class.java) -> BrowserTabViewModel(statisticsUpdater, queryUrlConverter, duckDuckGoUrlDetector, siteFactory, tabRepository, userWhitelistDao, networkLeaderboardDao, bookmarksDao, fireproofWebsiteRepository, locationPermissionsRepository, geoLocationPermissions, navigationAwareLoginDetector, autoComplete, appSettingsPreferencesStore, longPressHandler, webViewSessionStorage, specialUrlDetector, faviconManager, addToHomeCapabilityDetector, ctaViewModel, searchCountDao, pixel, dispatchers, userEventsStore, notificationDao, useOurAppDetector, variantManager, fileDownloader, globalPrivacyControl, fireproofDialogsEventHandler) as T
isAssignableFrom(BrowserTabViewModel::class.java) -> BrowserTabViewModel(statisticsUpdater.get(), queryUrlConverter.get(), duckDuckGoUrlDetector.get(), siteFactory.get(), tabRepository.get(), userWhitelistDao.get(), networkLeaderboardDao.get(), bookmarksDao.get(), fireproofWebsiteRepository.get(), locationPermissionsRepository.get(), geoLocationPermissions.get(), navigationAwareLoginDetector.get(), autoComplete.get(), appSettingsPreferencesStore.get(), longPressHandler.get(), webViewSessionStorage.get(), specialUrlDetector.get(), faviconManager.get(), addToHomeCapabilityDetector.get(), ctaViewModel.get(), searchCountDao.get(), pixel.get(), dispatchers, userEventsStore.get(), notificationDao.get(), useOurAppDetector.get(), variantManager.get(), fileDownloader.get(), globalPrivacyControl.get(), fireproofDialogsEventHandler.get()) as T
else -> null
}
}
Expand Down
31 changes: 16 additions & 15 deletions app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Provider
import javax.inject.Singleton
import kotlin.coroutines.CoroutineContext

Expand Down Expand Up @@ -248,33 +249,33 @@ class BrowserViewModelFactoryModule {
@Singleton
@IntoSet
fun provideBrowserViewModelFactory(
tabRepository: TabRepository,
queryUrlConverter: QueryUrlConverter,
dataClearer: DataClearer,
appEnjoymentPromptEmitter: AppEnjoymentPromptEmitter,
appEnjoymentUserEventRecorder: AppEnjoymentUserEventRecorder,
tabRepository: Provider<TabRepository>,
queryUrlConverter: Provider<QueryUrlConverter>,
dataClearer: Provider<DataClearer>,
appEnjoymentPromptEmitter: Provider<AppEnjoymentPromptEmitter>,
appEnjoymentUserEventRecorder: Provider<AppEnjoymentUserEventRecorder>,
dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
pixel: Pixel,
useOurAppDetector: UseOurAppDetector
pixel: Provider<Pixel>,
useOurAppDetector: Provider<UseOurAppDetector>
): ViewModelFactoryPlugin {
return BrowserViewModelFactory(tabRepository, queryUrlConverter, dataClearer, appEnjoymentPromptEmitter, appEnjoymentUserEventRecorder, dispatchers, pixel, useOurAppDetector)
}
}

private class BrowserViewModelFactory(
val tabRepository: TabRepository,
val queryUrlConverter: OmnibarEntryConverter,
val dataClearer: DataClearer,
val appEnjoymentPromptEmitter: AppEnjoymentPromptEmitter,
val appEnjoymentUserEventRecorder: AppEnjoymentUserEventRecorder,
val tabRepository: Provider<TabRepository>,
val queryUrlConverter: Provider<QueryUrlConverter>,
val dataClearer: Provider<DataClearer>,
val appEnjoymentPromptEmitter: Provider<AppEnjoymentPromptEmitter>,
val appEnjoymentUserEventRecorder: Provider<AppEnjoymentUserEventRecorder>,
val dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
val pixel: Pixel,
val useOurAppDetector: UseOurAppDetector
val pixel: Provider<Pixel>,
val useOurAppDetector: Provider<UseOurAppDetector>
) : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
isAssignableFrom(BrowserViewModel::class.java) -> BrowserViewModel(tabRepository, queryUrlConverter, dataClearer, appEnjoymentPromptEmitter, appEnjoymentUserEventRecorder, dispatchers, pixel, useOurAppDetector) as T
isAssignableFrom(BrowserViewModel::class.java) -> BrowserViewModel(tabRepository.get(), queryUrlConverter.get(), dataClearer.get(), appEnjoymentPromptEmitter.get(), appEnjoymentUserEventRecorder.get(), dispatchers, pixel.get(), useOurAppDetector.get()) as T
else -> null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import timber.log.Timber
import javax.inject.Provider
import javax.inject.Singleton

class FeedbackViewModel(private val playStoreUtils: PlayStoreUtils, private val feedbackSubmitter: FeedbackSubmitter) : ViewModel() {
Expand Down Expand Up @@ -297,21 +298,21 @@ class FeedbackViewModelFactoryModule {
@Singleton
@IntoSet
fun provideFeedbackViewModelFactory(
playStoreUtils: PlayStoreUtils,
feedbackSubmitter: FeedbackSubmitter
playStoreUtils: Provider<PlayStoreUtils>,
feedbackSubmitter: Provider<FeedbackSubmitter>
): ViewModelFactoryPlugin {
return FeedbackViewModelFactory(playStoreUtils, feedbackSubmitter)
}
}

private class FeedbackViewModelFactory(
private val playStoreUtils: PlayStoreUtils,
private val feedbackSubmitter: FeedbackSubmitter
private val playStoreUtils: Provider<PlayStoreUtils>,
private val feedbackSubmitter: Provider<FeedbackSubmitter>
) : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
isAssignableFrom(FeedbackViewModel::class.java) -> (FeedbackViewModel(playStoreUtils, feedbackSubmitter) as T)
isAssignableFrom(FeedbackViewModel::class.java) -> (FeedbackViewModel(playStoreUtils.get(), feedbackSubmitter.get()) as T)
else -> null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class InitialFeedbackFragmentViewModelFactoryModule {
}
}

private class InitialFeedbackFragmentViewModelFactory() : ViewModelFactoryPlugin {
private class InitialFeedbackFragmentViewModelFactory : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class BrokenSiteNegativeFeedbackViewModelFactoryModule {
}
}

private class BrokenSiteNegativeFeedbackViewModelFactory() : ViewModelFactoryPlugin {
private class BrokenSiteNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class ShareOpenEndedNegativeFeedbackViewModelFactoryModule {
}
}

private class ShareOpenEndedNegativeFeedbackViewModelFactory() : ViewModelFactoryPlugin {
private class ShareOpenEndedNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class PositiveFeedbackLandingViewModelFactoryModule {
}
}

private class PositiveFeedbackLandingViewModelFactory() : ViewModelFactoryPlugin {
private class PositiveFeedbackLandingViewModelFactory : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
Expand Down
Loading