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 @@ -16,11 +16,7 @@

package com.duckduckgo.app.bookmarks.ui

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.*
import com.duckduckgo.app.bookmarks.db.BookmarkEntity
import com.duckduckgo.app.bookmarks.db.BookmarksDao
import com.duckduckgo.app.bookmarks.ui.BookmarksViewModel.Command.*
Expand All @@ -30,15 +26,12 @@ import com.duckduckgo.app.global.DispatcherProvider
import com.duckduckgo.app.global.SingleLiveEvent
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import com.squareup.anvil.annotations.ContributesMultibinding
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton

class BookmarksViewModel(
val dao: BookmarksDao,
Expand Down Expand Up @@ -121,22 +114,8 @@ class BookmarksViewModel(

}

@Module
@ContributesTo(AppObjectGraph::class)
class BookmarksViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideBookmarksViewModelFactory(
dao: Provider<BookmarksDao>,
faviconManager: Provider<FaviconManager>,
dispatcherProvider: Provider<DispatcherProvider>
): ViewModelFactoryPlugin {
return BookmarksViewModelFactory(dao, faviconManager, dispatcherProvider)
}
}

private class BookmarksViewModelFactory(
@ContributesMultibinding(AppObjectGraph::class)
class BookmarksViewModelFactory @Inject constructor(
private val dao: Provider<BookmarksDao>,
private val faviconManager: Provider<FaviconManager>,
private val dispatcherProvider: Provider<DispatcherProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,9 @@ import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import com.squareup.anvil.annotations.ContributesMultibinding
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton

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

Expand Down Expand Up @@ -128,21 +125,8 @@ class BrokenSiteViewModel(private val pixel: Pixel, private val brokenSiteSender
}
}

@Module
@ContributesTo(AppObjectGraph::class)
class BrokenSiteViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideBrokenSiteViewModelFactory(
pixel: Provider<Pixel>,
brokenSiteSender: Provider<BrokenSiteSender>
): ViewModelFactoryPlugin {
return BrokenSiteViewModelFactory(pixel, brokenSiteSender)
}
}

private class BrokenSiteViewModelFactory(
@ContributesMultibinding(AppObjectGraph::class)
class BrokenSiteViewModelFactory @Inject constructor(
private val pixel: Provider<Pixel>,
private val brokenSiteSender: Provider<BrokenSiteSender>
) : ViewModelFactoryPlugin {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,14 @@ import com.duckduckgo.app.location.ui.SiteLocationPermissionDialog
import com.duckduckgo.app.location.ui.SystemLocationPermissionDialog
import com.duckduckgo.app.notification.db.NotificationDao
import com.duckduckgo.app.notification.model.UseOurAppNotification
import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.privacy.db.NetworkLeaderboardDao
import com.duckduckgo.app.privacy.db.UserWhitelistDao
import com.duckduckgo.app.privacy.model.PrivacyGrade
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.VariantManager
import com.duckduckgo.app.statistics.api.StatisticsUpdater
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
import com.duckduckgo.app.surrogates.SurrogateResponse
import com.duckduckgo.app.survey.model.Survey
Expand All @@ -105,10 +105,7 @@ import com.duckduckgo.app.trackerdetection.model.TrackingEvent
import com.duckduckgo.app.usage.search.SearchCountDao
import com.duckduckgo.di.scopes.AppObjectGraph
import com.jakewharton.rxrelay2.PublishRelay
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import com.squareup.anvil.annotations.ContributesMultibinding
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
Expand All @@ -118,8 +115,8 @@ import timber.log.Timber
import java.io.File
import java.util.*
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton

class BrowserTabViewModel(
private val statisticsUpdater: StatisticsUpdater,
Expand Down Expand Up @@ -1846,80 +1843,8 @@ class BrowserTabViewModel(
}
}

@Module
@ContributesTo(AppObjectGraph::class)
class BrowserTabViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideBrowserTabViewModelFactory(
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: Provider<UserEventsStore>,
notificationDao: Provider<NotificationDao>,
useOurAppDetector: Provider<UseOurAppDetector>,
variantManager: Provider<VariantManager>,
fileDownloader: Provider<FileDownloader>,
globalPrivacyControl: Provider<GlobalPrivacyControl>,
fireproofDialogsEventHandler: Provider<FireproofDialogsEventHandler>
): ViewModelFactoryPlugin {
return BrowserTabViewModelFactory(
statisticsUpdater,
queryUrlConverter,
duckDuckGoUrlDetector,
siteFactory,
tabRepository,
userWhitelistDao,
networkLeaderboardDao,
bookmarksDao,
fireproofWebsiteRepository,
locationPermissionsRepository,
geoLocationPermissions,
navigationAwareLoginDetector,
autoCompleteApi,
appSettingsPreferencesStore,
longPressHandler,
webViewSessionStorage,
specialUrlDetector,
faviconManager,
addToHomeCapabilityDetector,
ctaViewModel,
searchCountDao,
pixel,
dispatchers,
userEventsStore,
notificationDao,
useOurAppDetector,
variantManager,
fileDownloader,
globalPrivacyControl,
fireproofDialogsEventHandler
)
}
}

private class BrowserTabViewModelFactory(
@ContributesMultibinding(AppObjectGraph::class)
class BrowserTabViewModelFactory @Inject constructor(
private val statisticsUpdater: Provider<StatisticsUpdater>,
private val queryUrlConverter: Provider<QueryUrlConverter>,
private val duckDuckGoUrlDetector: Provider<DuckDuckGoUrlDetector>,
Expand Down
30 changes: 4 additions & 26 deletions app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,13 @@ import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.tabs.model.TabEntity
import com.duckduckgo.app.tabs.model.TabRepository
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import com.squareup.anvil.annotations.ContributesMultibinding
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton
import kotlin.coroutines.CoroutineContext

class BrowserViewModel(
Expand Down Expand Up @@ -242,27 +239,8 @@ class BrowserViewModel(
}
}

@Module
@ContributesTo(AppObjectGraph::class)
class BrowserViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideBrowserViewModelFactory(
tabRepository: Provider<TabRepository>,
queryUrlConverter: Provider<QueryUrlConverter>,
dataClearer: Provider<DataClearer>,
appEnjoymentPromptEmitter: Provider<AppEnjoymentPromptEmitter>,
appEnjoymentUserEventRecorder: Provider<AppEnjoymentUserEventRecorder>,
dispatchers: DispatcherProvider = DefaultDispatcherProvider(),
pixel: Provider<Pixel>,
useOurAppDetector: Provider<UseOurAppDetector>
): ViewModelFactoryPlugin {
return BrowserViewModelFactory(tabRepository, queryUrlConverter, dataClearer, appEnjoymentPromptEmitter, appEnjoymentUserEventRecorder, dispatchers, pixel, useOurAppDetector)
}
}

private class BrowserViewModelFactory(
@ContributesMultibinding(AppObjectGraph::class)
class BrowserViewModelFactory @Inject constructor(
val tabRepository: Provider<TabRepository>,
val queryUrlConverter: Provider<QueryUrlConverter>,
val dataClearer: Provider<DataClearer>,
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/java/com/duckduckgo/app/di/AppComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import com.duckduckgo.app.browser.favicon.FaviconModule
import com.duckduckgo.app.browser.rating.di.RatingModule
import com.duckduckgo.app.global.DuckDuckGoApplication
import com.duckduckgo.app.global.exception.UncaughtExceptionModule
import com.duckduckgo.app.global.plugins.worker.WorkerPluginsModule
import com.duckduckgo.app.httpsupgrade.di.HttpsUpgraderModule
import com.duckduckgo.app.onboarding.di.OnboardingModule
import com.duckduckgo.app.onboarding.di.WelcomePageModule
Expand All @@ -47,7 +46,6 @@ import javax.inject.Singleton
@MergeComponent(
scope = AppObjectGraph::class,
modules = [
WorkerPluginsModule::class,
ApplicationModule::class,
JobsModule::class,
WorkerModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,14 @@ import com.duckduckgo.app.global.SingleLiveEvent
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
import com.duckduckgo.app.playstore.PlayStoreUtils
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import com.squareup.anvil.annotations.ContributesMultibinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton

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

Expand Down Expand Up @@ -291,21 +288,8 @@ data class UpdateViewCommand(
val subReason: SubReason? = null
)

@Module
@ContributesTo(AppObjectGraph::class)
class FeedbackViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideFeedbackViewModelFactory(
playStoreUtils: Provider<PlayStoreUtils>,
feedbackSubmitter: Provider<FeedbackSubmitter>
): ViewModelFactoryPlugin {
return FeedbackViewModelFactory(playStoreUtils, feedbackSubmitter)
}
}

private class FeedbackViewModelFactory(
@ContributesMultibinding(AppObjectGraph::class)
class FeedbackViewModelFactory @Inject constructor(
private val playStoreUtils: Provider<PlayStoreUtils>,
private val feedbackSubmitter: Provider<FeedbackSubmitter>
) : ViewModelFactoryPlugin {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,8 @@ import androidx.lifecycle.ViewModel
import com.duckduckgo.app.feedback.ui.common.ViewState
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import javax.inject.Singleton
import com.squareup.anvil.annotations.ContributesMultibinding
import javax.inject.Inject

class InitialFeedbackFragmentViewModel : ViewModel() {

Expand All @@ -47,18 +44,8 @@ class InitialFeedbackFragmentViewModel : ViewModel() {
}
}

@Module
@ContributesTo(AppObjectGraph::class)
class InitialFeedbackFragmentViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideInitialFeedbackFragmentViewModelFactory(): ViewModelFactoryPlugin {
return InitialFeedbackFragmentViewModelFactory()
}
}

private class InitialFeedbackFragmentViewModelFactory : ViewModelFactoryPlugin {
@ContributesMultibinding(AppObjectGraph::class)
class InitialFeedbackFragmentViewModelFactory @Inject constructor() : 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 @@ -20,11 +20,8 @@ import androidx.lifecycle.ViewModel
import com.duckduckgo.app.global.SingleLiveEvent
import com.duckduckgo.app.global.plugins.view_model.ViewModelFactoryPlugin
import com.duckduckgo.di.scopes.AppObjectGraph
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import javax.inject.Singleton
import com.squareup.anvil.annotations.ContributesMultibinding
import javax.inject.Inject

class BrokenSiteNegativeFeedbackViewModel : ViewModel() {

Expand All @@ -40,18 +37,8 @@ class BrokenSiteNegativeFeedbackViewModel : ViewModel() {
}
}

@Module
@ContributesTo(AppObjectGraph::class)
class BrokenSiteNegativeFeedbackViewModelFactoryModule {
@Provides
@Singleton
@IntoSet
fun provideBrokenSiteNegativeFeedbackViewModelFactory(): ViewModelFactoryPlugin {
return BrokenSiteNegativeFeedbackViewModelFactory()
}
}

private class BrokenSiteNegativeFeedbackViewModelFactory : ViewModelFactoryPlugin {
@ContributesMultibinding(AppObjectGraph::class)
class BrokenSiteNegativeFeedbackViewModelFactory @Inject constructor() : ViewModelFactoryPlugin {
override fun <T : ViewModel?> create(modelClass: Class<T>): T? {
with(modelClass) {
return when {
Expand Down
Loading