diff --git a/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksViewModel.kt b/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksViewModel.kt index 1656deae3e72..48299ea40aa2 100644 --- a/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksViewModel.kt @@ -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( @@ -127,23 +128,23 @@ class BookmarksViewModelFactoryModule { @Singleton @IntoSet fun provideBookmarksViewModelFactory( - dao: BookmarksDao, - faviconManager: FaviconManager, - dispatcherProvider: DispatcherProvider + dao: Provider, + faviconManager: Provider, + dispatcherProvider: Provider ): 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, + private val faviconManager: Provider, + private val dispatcherProvider: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): 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 } } diff --git a/app/src/main/java/com/duckduckgo/app/brokensite/BrokenSiteViewModel.kt b/app/src/main/java/com/duckduckgo/app/brokensite/BrokenSiteViewModel.kt index 15ba8f765c84..a905b16cc7ff 100644 --- a/app/src/main/java/com/duckduckgo/app/brokensite/BrokenSiteViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/brokensite/BrokenSiteViewModel.kt @@ -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() { @@ -134,21 +135,21 @@ class BrokenSiteViewModelFactoryModule { @Singleton @IntoSet fun provideBrokenSiteViewModelFactory( - pixel: Pixel, - brokenSiteSender: BrokenSiteSender + pixel: Provider, + brokenSiteSender: Provider ): ViewModelFactoryPlugin { return BrokenSiteViewModelFactory(pixel, brokenSiteSender) } } private class BrokenSiteViewModelFactory( - private val pixel: Pixel, - private val brokenSiteSender: BrokenSiteSender + private val pixel: Provider, + private val brokenSiteSender: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): 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 } } diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt index 4642b66333b0..75cf35aa67a2 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt @@ -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( @@ -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, + queryUrlConverter: Provider, + duckDuckGoUrlDetector: Provider, + siteFactory: Provider, + tabRepository: Provider, + userWhitelistDao: Provider, + networkLeaderboardDao: Provider, + bookmarksDao: Provider, + fireproofWebsiteRepository: Provider, + locationPermissionsRepository: Provider, + geoLocationPermissions: Provider, + navigationAwareLoginDetector: Provider, + autoCompleteApi: Provider, + appSettingsPreferencesStore: Provider, + longPressHandler: Provider, + webViewSessionStorage: Provider, + specialUrlDetector: Provider, + faviconManager: Provider, + addToHomeCapabilityDetector: Provider, + ctaViewModel: Provider, + searchCountDao: Provider, + pixel: Provider, dispatchers: DispatcherProvider = DefaultDispatcherProvider(), - userEventsStore: UserEventsStore, - notificationDao: NotificationDao, - useOurAppDetector: UseOurAppDetector, - variantManager: VariantManager, - fileDownloader: FileDownloader, - globalPrivacyControl: GlobalPrivacyControl, - fireproofDialogsEventHandler: FireproofDialogsEventHandler + userEventsStore: Provider, + notificationDao: Provider, + useOurAppDetector: Provider, + variantManager: Provider, + fileDownloader: Provider, + globalPrivacyControl: Provider, + fireproofDialogsEventHandler: Provider ): ViewModelFactoryPlugin { return BrowserTabViewModelFactory( statisticsUpdater, @@ -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, + private val queryUrlConverter: Provider, + private val duckDuckGoUrlDetector: Provider, + private val siteFactory: Provider, + private val tabRepository: Provider, + private val userWhitelistDao: Provider, + private val networkLeaderboardDao: Provider, + private val bookmarksDao: Provider, + private val fireproofWebsiteRepository: Provider, + private val locationPermissionsRepository: Provider, + private val geoLocationPermissions: Provider, + private val navigationAwareLoginDetector: Provider, + private val autoComplete: Provider, + private val appSettingsPreferencesStore: Provider, + private val longPressHandler: Provider, + private val webViewSessionStorage: Provider, + private val specialUrlDetector: Provider, + private val faviconManager: Provider, + private val addToHomeCapabilityDetector: Provider, + private val ctaViewModel: Provider, + private val searchCountDao: Provider, + private val pixel: Provider, 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, + private val notificationDao: Provider, + private val useOurAppDetector: Provider, + private val variantManager: Provider, + private val fileDownloader: Provider, + private val globalPrivacyControl: Provider, + private val fireproofDialogsEventHandler: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): 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 } } diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt index 33f73981ad89..b5103bfa4b80 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt @@ -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 @@ -248,33 +249,33 @@ class BrowserViewModelFactoryModule { @Singleton @IntoSet fun provideBrowserViewModelFactory( - tabRepository: TabRepository, - queryUrlConverter: QueryUrlConverter, - dataClearer: DataClearer, - appEnjoymentPromptEmitter: AppEnjoymentPromptEmitter, - appEnjoymentUserEventRecorder: AppEnjoymentUserEventRecorder, + tabRepository: Provider, + queryUrlConverter: Provider, + dataClearer: Provider, + appEnjoymentPromptEmitter: Provider, + appEnjoymentUserEventRecorder: Provider, dispatchers: DispatcherProvider = DefaultDispatcherProvider(), - pixel: Pixel, - useOurAppDetector: UseOurAppDetector + pixel: Provider, + useOurAppDetector: Provider ): 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, + val queryUrlConverter: Provider, + val dataClearer: Provider, + val appEnjoymentPromptEmitter: Provider, + val appEnjoymentUserEventRecorder: Provider, val dispatchers: DispatcherProvider = DefaultDispatcherProvider(), - val pixel: Pixel, - val useOurAppDetector: UseOurAppDetector + val pixel: Provider, + val useOurAppDetector: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): 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 } } diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/common/FeedbackViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/common/FeedbackViewModel.kt index 87a46146d551..4d17f2fbcc6a 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/common/FeedbackViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/common/FeedbackViewModel.kt @@ -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() { @@ -297,21 +298,21 @@ class FeedbackViewModelFactoryModule { @Singleton @IntoSet fun provideFeedbackViewModelFactory( - playStoreUtils: PlayStoreUtils, - feedbackSubmitter: FeedbackSubmitter + playStoreUtils: Provider, + feedbackSubmitter: Provider ): ViewModelFactoryPlugin { return FeedbackViewModelFactory(playStoreUtils, feedbackSubmitter) } } private class FeedbackViewModelFactory( - private val playStoreUtils: PlayStoreUtils, - private val feedbackSubmitter: FeedbackSubmitter + private val playStoreUtils: Provider, + private val feedbackSubmitter: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): 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 } } diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/initial/InitialFeedbackFragmentViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/initial/InitialFeedbackFragmentViewModel.kt index f247b4a33aab..7deec16228e4 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/initial/InitialFeedbackFragmentViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/initial/InitialFeedbackFragmentViewModel.kt @@ -58,7 +58,7 @@ class InitialFeedbackFragmentViewModelFactoryModule { } } -private class InitialFeedbackFragmentViewModelFactory() : ViewModelFactoryPlugin { +private class InitialFeedbackFragmentViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackViewModel.kt index 67fc04a94bbc..6e949871dd66 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackViewModel.kt @@ -51,7 +51,7 @@ class BrokenSiteNegativeFeedbackViewModelFactoryModule { } } -private class BrokenSiteNegativeFeedbackViewModelFactory() : ViewModelFactoryPlugin { +private class BrokenSiteNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/openended/ShareOpenEndedNegativeFeedbackViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/openended/ShareOpenEndedNegativeFeedbackViewModel.kt index 5161da230abe..d40024303cdf 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/openended/ShareOpenEndedNegativeFeedbackViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/negative/openended/ShareOpenEndedNegativeFeedbackViewModel.kt @@ -58,7 +58,7 @@ class ShareOpenEndedNegativeFeedbackViewModelFactoryModule { } } -private class ShareOpenEndedNegativeFeedbackViewModelFactory() : ViewModelFactoryPlugin { +private class ShareOpenEndedNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/positive/initial/PositiveFeedbackLandingViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/positive/initial/PositiveFeedbackLandingViewModel.kt index 7f7a135f610e..097bdbee9aeb 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/positive/initial/PositiveFeedbackLandingViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/positive/initial/PositiveFeedbackLandingViewModel.kt @@ -62,7 +62,7 @@ class PositiveFeedbackLandingViewModelFactoryModule { } } -private class PositiveFeedbackLandingViewModelFactory() : ViewModelFactoryPlugin { +private class PositiveFeedbackLandingViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/fire/fireproofwebsite/ui/FireproofWebsitesViewModel.kt b/app/src/main/java/com/duckduckgo/app/fire/fireproofwebsite/ui/FireproofWebsitesViewModel.kt index d3036f4ab32c..83128f320bf3 100644 --- a/app/src/main/java/com/duckduckgo/app/fire/fireproofwebsite/ui/FireproofWebsitesViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/fire/fireproofwebsite/ui/FireproofWebsitesViewModel.kt @@ -35,6 +35,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoSet import kotlinx.coroutines.launch +import javax.inject.Provider import javax.inject.Singleton class FireproofWebsitesViewModel( @@ -118,27 +119,27 @@ class FireproofWebsitesViewModelFactoryModule { @Singleton @IntoSet fun provideFireproofWebsitesViewModelFactory( - fireproofWebsiteRepository: FireproofWebsiteRepository, - dispatcherProvider: DispatcherProvider, - pixel: Pixel, - settingsDataStore: SettingsDataStore, - userEventsStore: UserEventsStore + fireproofWebsiteRepository: Provider, + dispatcherProvider: Provider, + pixel: Provider, + settingsDataStore: Provider, + userEventsStore: Provider ): ViewModelFactoryPlugin { return FireproofWebsitesViewModelFactory(fireproofWebsiteRepository, dispatcherProvider, pixel, settingsDataStore, userEventsStore) } } private class FireproofWebsitesViewModelFactory( - private val fireproofWebsiteRepository: FireproofWebsiteRepository, - private val dispatcherProvider: DispatcherProvider, - private val pixel: Pixel, - private val settingsDataStore: SettingsDataStore, - private val userEventsStore: UserEventsStore + private val fireproofWebsiteRepository: Provider, + private val dispatcherProvider: Provider, + private val pixel: Provider, + private val settingsDataStore: Provider, + private val userEventsStore: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(FireproofWebsitesViewModel::class.java) -> (FireproofWebsitesViewModel(fireproofWebsiteRepository, dispatcherProvider, pixel, settingsDataStore, userEventsStore) as T) + isAssignableFrom(FireproofWebsitesViewModel::class.java) -> (FireproofWebsitesViewModel(fireproofWebsiteRepository.get(), dispatcherProvider.get(), pixel.get(), settingsDataStore.get(), userEventsStore.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/globalprivacycontrol/ui/GlobalPrivacyControlViewModel.kt b/app/src/main/java/com/duckduckgo/app/globalprivacycontrol/ui/GlobalPrivacyControlViewModel.kt index 66d3386348e4..fedfcf681317 100644 --- a/app/src/main/java/com/duckduckgo/app/globalprivacycontrol/ui/GlobalPrivacyControlViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/globalprivacycontrol/ui/GlobalPrivacyControlViewModel.kt @@ -27,6 +27,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 GlobalPrivacyControlViewModel( @@ -76,21 +77,21 @@ class GlobalPrivacyControlViewModelFactoryModule { @Singleton @IntoSet fun provideGlobalPrivacyControlViewModelFactory( - pixel: Pixel, - settingsDataStore: SettingsDataStore + pixel: Provider, + settingsDataStore: Provider ): ViewModelFactoryPlugin { return GlobalPrivacyControlViewModelFactory(pixel, settingsDataStore) } } private class GlobalPrivacyControlViewModelFactory( - private val pixel: Pixel, - private val settingsDataStore: SettingsDataStore + private val pixel: Provider, + private val settingsDataStore: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(GlobalPrivacyControlViewModel::class.java) -> (GlobalPrivacyControlViewModel(pixel, settingsDataStore) as T) + isAssignableFrom(GlobalPrivacyControlViewModel::class.java) -> (GlobalPrivacyControlViewModel(pixel.get(), settingsDataStore.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/icon/ui/ChangeIconViewModel.kt b/app/src/main/java/com/duckduckgo/app/icon/ui/ChangeIconViewModel.kt index 8df55a90e8c8..807b722a3c18 100644 --- a/app/src/main/java/com/duckduckgo/app/icon/ui/ChangeIconViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/icon/ui/ChangeIconViewModel.kt @@ -31,6 +31,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoSet import javax.inject.Inject +import javax.inject.Provider import javax.inject.Singleton class ChangeIconViewModel @Inject constructor( @@ -89,23 +90,23 @@ class ChangeIconViewModelFactoryModule { @Singleton @IntoSet fun provideChangeIconViewModelFactory( - settingsDataStore: SettingsDataStore, - appIconModifier: IconModifier, - pixel: Pixel + settingsDataStore: Provider, + appIconModifier: Provider, + pixel: Provider ): ViewModelFactoryPlugin { return ChangeIconViewModelFactory(settingsDataStore, appIconModifier, pixel) } } private class ChangeIconViewModelFactory( - private val settingsDataStore: SettingsDataStore, - private val appIconModifier: IconModifier, - private val pixel: Pixel + private val settingsDataStore: Provider, + private val appIconModifier: Provider, + private val pixel: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(ChangeIconViewModel::class.java) -> (ChangeIconViewModel(settingsDataStore, appIconModifier, pixel) as T) + isAssignableFrom(ChangeIconViewModel::class.java) -> (ChangeIconViewModel(settingsDataStore.get(), appIconModifier.get(), pixel.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/launch/LaunchViewModel.kt b/app/src/main/java/com/duckduckgo/app/launch/LaunchViewModel.kt index a2af53fed089..f830915dacc4 100644 --- a/app/src/main/java/com/duckduckgo/app/launch/LaunchViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/launch/LaunchViewModel.kt @@ -30,6 +30,7 @@ import dagger.Provides import dagger.multibindings.IntoSet import kotlinx.coroutines.withTimeoutOrNull import timber.log.Timber +import javax.inject.Provider import javax.inject.Singleton class LaunchViewModel( @@ -74,21 +75,21 @@ class LaunchViewModelFactoryModule { @Singleton @IntoSet fun provideLaunchViewModelFactory( - userStageStore: UserStageStore, - appInstallationReferrerStateListener: AppInstallationReferrerStateListener + userStageStore: Provider, + appInstallationReferrerStateListener: Provider ): ViewModelFactoryPlugin { return LaunchViewModelFactory(userStageStore, appInstallationReferrerStateListener) } } private class LaunchViewModelFactory( - private val userStageStore: UserStageStore, - private val appInstallationReferrerStateListener: AppInstallationReferrerStateListener + private val userStageStore: Provider, + private val appInstallationReferrerStateListener: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(LaunchViewModel::class.java) -> (LaunchViewModel(userStageStore, appInstallationReferrerStateListener) as T) + isAssignableFrom(LaunchViewModel::class.java) -> (LaunchViewModel(userStageStore.get(), appInstallationReferrerStateListener.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/location/ui/LocationPermissionsViewModel.kt b/app/src/main/java/com/duckduckgo/app/location/ui/LocationPermissionsViewModel.kt index 831a6a05bd4b..260760c72eb8 100644 --- a/app/src/main/java/com/duckduckgo/app/location/ui/LocationPermissionsViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/location/ui/LocationPermissionsViewModel.kt @@ -34,6 +34,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoSet import kotlinx.coroutines.launch +import javax.inject.Provider import javax.inject.Singleton class LocationPermissionsViewModel( @@ -145,27 +146,27 @@ class LocationPermissionsViewModelFactoryModule { @Singleton @IntoSet fun provideLocationPermissionsViewModelFactory( - locationPermissionsRepository: LocationPermissionsRepository, - geoLocationPermissions: GeoLocationPermissions, - dispatcherProvider: DispatcherProvider, - settingsDataStore: SettingsDataStore, - pixel: Pixel + locationPermissionsRepository: Provider, + geoLocationPermissions: Provider, + dispatcherProvider: Provider, + settingsDataStore: Provider, + pixel: Provider ): ViewModelFactoryPlugin { return LocationPermissionsViewModelFactory(locationPermissionsRepository, geoLocationPermissions, dispatcherProvider, settingsDataStore, pixel) } } private class LocationPermissionsViewModelFactory( - private val locationPermissionsRepository: LocationPermissionsRepository, - private val geoLocationPermissions: GeoLocationPermissions, - private val dispatcherProvider: DispatcherProvider, - private val settingsDataStore: SettingsDataStore, - private val pixel: Pixel + private val locationPermissionsRepository: Provider, + private val geoLocationPermissions: Provider, + private val dispatcherProvider: Provider, + private val settingsDataStore: Provider, + private val pixel: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(LocationPermissionsViewModel::class.java) -> (LocationPermissionsViewModel(locationPermissionsRepository, geoLocationPermissions, dispatcherProvider, settingsDataStore, pixel) as T) + isAssignableFrom(LocationPermissionsViewModel::class.java) -> (LocationPermissionsViewModel(locationPermissionsRepository.get(), geoLocationPermissions.get(), dispatcherProvider.get(), settingsDataStore.get(), pixel.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt b/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt index 1a6a02de403d..75fc7af09de5 100644 --- a/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModel.kt @@ -29,6 +29,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoSet import kotlinx.coroutines.launch +import javax.inject.Provider import javax.inject.Singleton class OnboardingViewModel( @@ -64,23 +65,23 @@ class OnboardingViewModelFactoryModule { @Singleton @IntoSet fun provideOnboardingViewModelFactory( - userStageStore: UserStageStore, - pageLayoutManager: OnboardingPageManager, - dispatchers: DispatcherProvider + userStageStore: Provider, + pageLayoutManager: Provider, + dispatchers: Provider ): ViewModelFactoryPlugin { return OnboardingViewModelFactory(userStageStore, pageLayoutManager, dispatchers) } } private class OnboardingViewModelFactory( - private val userStageStore: UserStageStore, - private val pageLayoutManager: OnboardingPageManager, - private val dispatchers: DispatcherProvider + private val userStageStore: Provider, + private val pageLayoutManager: Provider, + private val dispatchers: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(OnboardingViewModel::class.java) -> (OnboardingViewModel(userStageStore, pageLayoutManager, dispatchers) as T) + isAssignableFrom(OnboardingViewModel::class.java) -> (OnboardingViewModel(userStageStore.get(), pageLayoutManager.get(), dispatchers.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/onboarding/ui/page/DefaultBrowserPageViewModel.kt b/app/src/main/java/com/duckduckgo/app/onboarding/ui/page/DefaultBrowserPageViewModel.kt index 27c73d79297d..4d2a8aeb2bab 100644 --- a/app/src/main/java/com/duckduckgo/app/onboarding/ui/page/DefaultBrowserPageViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/onboarding/ui/page/DefaultBrowserPageViewModel.kt @@ -29,6 +29,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 DefaultBrowserPageViewModel( @@ -209,23 +210,23 @@ class DefaultBrowserPageViewModelFactoryModule { @Singleton @IntoSet fun provideDefaultBrowserPageViewModelFactory( - defaultBrowserDetector: DefaultBrowserDetector, - pixel: Pixel, - installStore: AppInstallStore + defaultBrowserDetector: Provider, + pixel: Provider, + installStore: Provider ): ViewModelFactoryPlugin { return DefaultBrowserPageViewModelFactory(defaultBrowserDetector, pixel, installStore) } } private class DefaultBrowserPageViewModelFactory( - private val defaultBrowserDetector: DefaultBrowserDetector, - private val pixel: Pixel, - private val installStore: AppInstallStore + private val defaultBrowserDetector: Provider, + private val pixel: Provider, + private val installStore: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(DefaultBrowserPageViewModel::class.java) -> (DefaultBrowserPageViewModel(defaultBrowserDetector, pixel, installStore) as T) + isAssignableFrom(DefaultBrowserPageViewModel::class.java) -> (DefaultBrowserPageViewModel(defaultBrowserDetector.get(), pixel.get(), installStore.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyDashboardViewModel.kt b/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyDashboardViewModel.kt index d8a040b09197..ec905e1ede6f 100644 --- a/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyDashboardViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyDashboardViewModel.kt @@ -44,6 +44,7 @@ import dagger.multibindings.IntoSet import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Provider import javax.inject.Singleton class PrivacyDashboardViewModel( @@ -212,23 +213,23 @@ class PrivacyDashboardViewModelFactoryModule { @Singleton @IntoSet fun providePrivacyDashboardViewModelFactory( - userWhitelistDao: UserWhitelistDao, - networkLeaderboardDao: NetworkLeaderboardDao, - pixel: Pixel + userWhitelistDao: Provider, + networkLeaderboardDao: Provider, + pixel: Provider ): ViewModelFactoryPlugin { return PrivacyDashboardViewModelFactory(userWhitelistDao, networkLeaderboardDao, pixel) } } private class PrivacyDashboardViewModelFactory( - private val userWhitelistDao: UserWhitelistDao, - private val networkLeaderboardDao: NetworkLeaderboardDao, - private val pixel: Pixel + private val userWhitelistDao: Provider, + private val networkLeaderboardDao: Provider, + private val pixel: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(PrivacyDashboardViewModel::class.java) -> PrivacyDashboardViewModel(userWhitelistDao, networkLeaderboardDao, pixel) as T + isAssignableFrom(PrivacyDashboardViewModel::class.java) -> PrivacyDashboardViewModel(userWhitelistDao.get(), networkLeaderboardDao.get(), pixel.get()) as T else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyPracticesViewModel.kt b/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyPracticesViewModel.kt index e84f820b5f6f..0250be853158 100644 --- a/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyPracticesViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyPracticesViewModel.kt @@ -79,7 +79,7 @@ class PrivacyPracticesViewModelFactoryModule { } } -private class PrivacyPracticesViewModelFactory() : ViewModelFactoryPlugin { +private class PrivacyPracticesViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/privacy/ui/ScorecardViewModel.kt b/app/src/main/java/com/duckduckgo/app/privacy/ui/ScorecardViewModel.kt index 1c88e22a8970..bf13b6529e4b 100644 --- a/app/src/main/java/com/duckduckgo/app/privacy/ui/ScorecardViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/privacy/ui/ScorecardViewModel.kt @@ -36,6 +36,7 @@ import dagger.Provides import dagger.multibindings.IntoSet import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Provider import javax.inject.Singleton class ScorecardViewModel( @@ -121,18 +122,18 @@ class ScorecardViewModelFactoryModule { @Provides @Singleton @IntoSet - fun provideScorecardViewModelFactory(userWhitelistDao: UserWhitelistDao): ViewModelFactoryPlugin { + fun provideScorecardViewModelFactory(userWhitelistDao: Provider): ViewModelFactoryPlugin { return ScorecardViewModelFactory(userWhitelistDao) } } private class ScorecardViewModelFactory( - private val userWhitelistDao: UserWhitelistDao, + private val userWhitelistDao: Provider, ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(ScorecardViewModel::class.java) -> ScorecardViewModel(userWhitelistDao) as T + isAssignableFrom(ScorecardViewModel::class.java) -> ScorecardViewModel(userWhitelistDao.get()) as T else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/privacy/ui/TrackerNetworksViewModel.kt b/app/src/main/java/com/duckduckgo/app/privacy/ui/TrackerNetworksViewModel.kt index 86b8449d838b..3ed429cca44d 100644 --- a/app/src/main/java/com/duckduckgo/app/privacy/ui/TrackerNetworksViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/privacy/ui/TrackerNetworksViewModel.kt @@ -104,7 +104,7 @@ class TrackerNetworksViewModelFactoryModule { } } -private class TrackerNetworksViewModelFactory() : ViewModelFactoryPlugin { +private class TrackerNetworksViewModelFactory : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { diff --git a/app/src/main/java/com/duckduckgo/app/privacy/ui/WhitelistViewModel.kt b/app/src/main/java/com/duckduckgo/app/privacy/ui/WhitelistViewModel.kt index eef477299a92..c6b2c70d9a05 100644 --- a/app/src/main/java/com/duckduckgo/app/privacy/ui/WhitelistViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/privacy/ui/WhitelistViewModel.kt @@ -36,6 +36,7 @@ import dagger.multibindings.IntoSet import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Provider import javax.inject.Singleton class WhitelistViewModel( @@ -133,19 +134,19 @@ class WhitelistViewModelFactoryModule { @Singleton @IntoSet fun provideWhitelistViewModelFactory( - dao: UserWhitelistDao + dao: Provider ): ViewModelFactoryPlugin { return WhitelistViewModelFactory(dao) } } private class WhitelistViewModelFactory( - private val dao: UserWhitelistDao + private val dao: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(WhitelistViewModel::class.java) -> (WhitelistViewModel(dao) as T) + isAssignableFrom(WhitelistViewModel::class.java) -> (WhitelistViewModel(dao.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/settings/SettingsViewModel.kt b/app/src/main/java/com/duckduckgo/app/settings/SettingsViewModel.kt index b22e8f49e3d0..a557afbdb88d 100644 --- a/app/src/main/java/com/duckduckgo/app/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/settings/SettingsViewModel.kt @@ -42,6 +42,7 @@ import dagger.Provides import dagger.multibindings.IntoSet import timber.log.Timber import javax.inject.Inject +import javax.inject.Provider import javax.inject.Singleton class SettingsViewModel @Inject constructor( @@ -251,27 +252,27 @@ class SettingsViewModelFactoryModule { @Singleton @IntoSet fun provideSettingsViewModelFactory( - settingsDataStore: SettingsDataStore, - defaultWebBrowserCapability: DefaultBrowserDetector, - variantManager: VariantManager, - fireAnimationLoader: FireAnimationLoader, - pixel: Pixel + settingsDataStore: Provider, + defaultWebBrowserCapability: Provider, + variantManager: Provider, + fireAnimationLoader: Provider, + pixel: Provider ): ViewModelFactoryPlugin { return SettingsViewModelFactory(settingsDataStore, defaultWebBrowserCapability, variantManager, fireAnimationLoader, pixel) } } private class SettingsViewModelFactory( - private val settingsDataStore: SettingsDataStore, - private val defaultWebBrowserCapability: DefaultBrowserDetector, - private val variantManager: VariantManager, - private val fireAnimationLoader: FireAnimationLoader, - private val pixel: Pixel + private val settingsDataStore: Provider, + private val defaultWebBrowserCapability: Provider, + private val variantManager: Provider, + private val fireAnimationLoader: Provider, + private val pixel: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(SettingsViewModel::class.java) -> (SettingsViewModel(settingsDataStore, defaultWebBrowserCapability, variantManager, fireAnimationLoader, pixel) as T) + isAssignableFrom(SettingsViewModel::class.java) -> (SettingsViewModel(settingsDataStore.get(), defaultWebBrowserCapability.get(), variantManager.get(), fireAnimationLoader.get(), pixel.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/survey/ui/SurveyViewModel.kt b/app/src/main/java/com/duckduckgo/app/survey/ui/SurveyViewModel.kt index 5743fb9b2e4e..6898b4196c08 100644 --- a/app/src/main/java/com/duckduckgo/app/survey/ui/SurveyViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/survey/ui/SurveyViewModel.kt @@ -38,6 +38,7 @@ import dagger.multibindings.IntoSet import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import javax.inject.Provider import javax.inject.Singleton class SurveyViewModel( @@ -123,23 +124,23 @@ class SurveyViewModelFactoryModule { @Singleton @IntoSet fun provideSurveyViewModelFactory( - surveyDao: SurveyDao, - statisticsStore: StatisticsDataStore, - appInstallStore: AppInstallStore, + surveyDao: Provider, + statisticsStore: Provider, + appInstallStore: Provider ): ViewModelFactoryPlugin { return SurveyViewModelFactory(surveyDao, statisticsStore, appInstallStore) } } private class SurveyViewModelFactory( - private val surveyDao: SurveyDao, - private val statisticsStore: StatisticsDataStore, - private val appInstallStore: AppInstallStore + private val surveyDao: Provider, + private val statisticsStore: Provider, + private val appInstallStore: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(SurveyViewModel::class.java) -> (SurveyViewModel(surveyDao, statisticsStore, appInstallStore) as T) + isAssignableFrom(SurveyViewModel::class.java) -> (SurveyViewModel(surveyDao.get(), statisticsStore.get(), appInstallStore.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/systemsearch/SystemSearchViewModel.kt b/app/src/main/java/com/duckduckgo/app/systemsearch/SystemSearchViewModel.kt index accfebee8d3f..b92c644e0a4c 100644 --- a/app/src/main/java/com/duckduckgo/app/systemsearch/SystemSearchViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/systemsearch/SystemSearchViewModel.kt @@ -46,6 +46,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import timber.log.Timber import java.util.concurrent.TimeUnit +import javax.inject.Provider import javax.inject.Singleton data class SystemSearchResult(val autocomplete: AutoCompleteResult, val deviceApps: List) @@ -266,25 +267,25 @@ class SystemSearchViewModelFactoryModule { @Singleton @IntoSet fun provideSystemSearchViewModelFactory( - userStageStore: UserStageStore, - autoCompleteApi: AutoCompleteApi, - deviceAppLookup: DeviceAppLookup, - pixel: Pixel, + userStageStore: Provider, + autoCompleteApi: Provider, + deviceAppLookup: Provider, + pixel: Provider ): ViewModelFactoryPlugin { return SystemSearchViewModelFactory(userStageStore, autoCompleteApi, deviceAppLookup, pixel) } } private class SystemSearchViewModelFactory( - private val userStageStore: UserStageStore, - private val autoComplete: AutoComplete, - private val deviceAppLookup: DeviceAppLookup, - private val pixel: Pixel + private val userStageStore: Provider, + private val autoComplete: Provider, + private val deviceAppLookup: Provider, + private val pixel: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(SystemSearchViewModel::class.java) -> (SystemSearchViewModel(userStageStore, autoComplete, deviceAppLookup, pixel) as T) + isAssignableFrom(SystemSearchViewModel::class.java) -> (SystemSearchViewModel(userStageStore.get(), autoComplete.get(), deviceAppLookup.get(), pixel.get()) as T) else -> null } } diff --git a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt index 32c8ec6a99cb..1bafa87dad26 100644 --- a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt @@ -32,6 +32,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 TabSwitcherViewModel(private val tabRepository: TabRepository, private val webViewSessionStorage: WebViewSessionStorage) : ViewModel() { @@ -87,21 +88,21 @@ class TabSwitcherViewModelFactoryModule { @Singleton @IntoSet fun provideTabSwitcherViewModelFactory( - tabRepository: TabRepository, - webViewSessionStorage: WebViewSessionStorage + tabRepository: Provider, + webViewSessionStorage: Provider ): ViewModelFactoryPlugin { return TabSwitcherViewModelFactory(tabRepository, webViewSessionStorage) } } private class TabSwitcherViewModelFactory( - private val tabRepository: TabRepository, - private val webViewSessionStorage: WebViewSessionStorage + private val tabRepository: Provider, + private val webViewSessionStorage: Provider ) : ViewModelFactoryPlugin { override fun create(modelClass: Class): T? { with(modelClass) { return when { - isAssignableFrom(TabSwitcherViewModel::class.java) -> TabSwitcherViewModel(tabRepository, webViewSessionStorage) as T + isAssignableFrom(TabSwitcherViewModel::class.java) -> TabSwitcherViewModel(tabRepository.get(), webViewSessionStorage.get()) as T else -> null } }