diff --git a/WordPress/src/main/java/org/wordpress/android/modules/AppComponent.java b/WordPress/src/main/java/org/wordpress/android/modules/AppComponent.java index 7b40b5b2a66a..bca242460fa1 100644 --- a/WordPress/src/main/java/org/wordpress/android/modules/AppComponent.java +++ b/WordPress/src/main/java/org/wordpress/android/modules/AppComponent.java @@ -193,14 +193,8 @@ import org.wordpress.android.ui.reader.views.ReaderSiteSearchResultView; import org.wordpress.android.ui.reader.views.ReaderTagHeaderView; import org.wordpress.android.ui.reader.views.ReaderWebView; -import org.wordpress.android.ui.sitecreation.SiteCreationActivity; -import org.wordpress.android.ui.sitecreation.domains.SiteCreationDomainsFragment; -import org.wordpress.android.ui.sitecreation.previews.SiteCreationPreviewFragment; import org.wordpress.android.ui.sitecreation.services.SiteCreationService; -import org.wordpress.android.ui.sitecreation.sitename.SiteCreationSiteNameFragment; import org.wordpress.android.ui.sitecreation.theme.DesignPreviewFragment; -import org.wordpress.android.ui.sitecreation.theme.HomePagePickerFragment; -import org.wordpress.android.ui.sitecreation.verticals.SiteCreationIntentsFragment; import org.wordpress.android.ui.stats.StatsConnectJetpackActivity; import org.wordpress.android.ui.stats.refresh.lists.StatsListFragment; import org.wordpress.android.ui.stats.refresh.lists.widget.alltime.AllTimeWidgetBlockListProviderFactory; @@ -259,12 +253,6 @@ public interface AppComponent { void inject(PostSignupInterstitialActivity object); - void inject(SiteCreationActivity object); - - void inject(SiteCreationDomainsFragment object); - - void inject(SiteCreationPreviewFragment object); - void inject(JetpackConnectionResultActivity object); void inject(StatsConnectJetpackActivity object); @@ -545,12 +533,6 @@ public interface AppComponent { void inject(ModalLayoutPickerFragment object); - void inject(HomePagePickerFragment object); - - void inject(SiteCreationIntentsFragment object); - - void inject(SiteCreationSiteNameFragment object); - void inject(SubfilterBottomSheetFragment object); void inject(AddContentAdapter object); @@ -658,7 +640,7 @@ public interface AppComponent { void inject(EditCancelDialogFragment object); void inject(BloggingReminderBottomSheetFragment object); - + void inject(LocalePickerBottomSheet object); void inject(CategoriesListFragment object); diff --git a/WordPress/src/main/java/org/wordpress/android/modules/ViewModelModule.java b/WordPress/src/main/java/org/wordpress/android/modules/ViewModelModule.java index 674a51bd0df5..cecf82e6b7f5 100644 --- a/WordPress/src/main/java/org/wordpress/android/modules/ViewModelModule.java +++ b/WordPress/src/main/java/org/wordpress/android/modules/ViewModelModule.java @@ -62,12 +62,6 @@ import org.wordpress.android.ui.reader.viewmodels.ReaderPostListViewModel; import org.wordpress.android.ui.reader.viewmodels.ReaderViewModel; import org.wordpress.android.ui.reader.viewmodels.SubfilterPageViewModel; -import org.wordpress.android.ui.sitecreation.SiteCreationMainVM; -import org.wordpress.android.ui.sitecreation.domains.SiteCreationDomainsViewModel; -import org.wordpress.android.ui.sitecreation.previews.SitePreviewViewModel; -import org.wordpress.android.ui.sitecreation.sitename.SiteCreationSiteNameViewModel; -import org.wordpress.android.ui.sitecreation.theme.HomePagePickerViewModel; -import org.wordpress.android.ui.sitecreation.verticals.SiteCreationIntentsViewModel; import org.wordpress.android.ui.stats.refresh.lists.DaysListViewModel; import org.wordpress.android.ui.stats.refresh.lists.InsightsDetailListViewModel; import org.wordpress.android.ui.stats.refresh.lists.InsightsListViewModel; @@ -259,31 +253,6 @@ abstract class ViewModelModule { @ViewModelKey(HistoryViewModel.class) abstract ViewModel historyViewModel(HistoryViewModel viewModel); - @Binds - @IntoMap - @ViewModelKey(SiteCreationIntentsViewModel.class) - abstract ViewModel siteCreationIntentsViewModel(SiteCreationIntentsViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(SiteCreationSiteNameViewModel.class) - abstract ViewModel siteCreationSiteNameViewModel(SiteCreationSiteNameViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(SiteCreationDomainsViewModel.class) - abstract ViewModel siteCreationDomainsViewModel(SiteCreationDomainsViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(SiteCreationMainVM.class) - abstract ViewModel siteCreationMainVM(SiteCreationMainVM viewModel); - - @Binds - @IntoMap - @ViewModelKey(SitePreviewViewModel.class) - abstract ViewModel newSitePreviewViewModel(SitePreviewViewModel viewModel); - @Binds @IntoMap @ViewModelKey(PostListViewModel.class) @@ -349,11 +318,6 @@ abstract class ViewModelModule { @ViewModelKey(ModalLayoutPickerViewModel.class) abstract ViewModel mlpViewModel(ModalLayoutPickerViewModel viewModel); - @Binds - @IntoMap - @ViewModelKey(HomePagePickerViewModel.class) - abstract ViewModel hppViewModel(HomePagePickerViewModel viewModel); - @Binds @IntoMap @ViewModelKey(PostSignupInterstitialViewModel.class) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationActivity.kt index 5c659392831d..df4842c4ebe5 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationActivity.kt @@ -4,11 +4,11 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.view.MenuItem +import androidx.activity.viewModels import androidx.fragment.app.Fragment import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProvider +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R -import org.wordpress.android.WordPress import org.wordpress.android.ui.ActivityLauncher import org.wordpress.android.ui.LocaleAwareActivity import org.wordpress.android.ui.accounts.HelpActivity.Origin @@ -48,6 +48,7 @@ import org.wordpress.android.util.wizard.WizardNavigationTarget import javax.inject.Inject @Suppress("TooManyFunctions") +@AndroidEntryPoint class SiteCreationActivity : LocaleAwareActivity(), IntentsScreenListener, SiteNameScreenListener, @@ -56,24 +57,16 @@ class SiteCreationActivity : LocaleAwareActivity(), OnHelpClickedListener, BasicDialogPositiveClickInterface, BasicDialogNegativeClickInterface { - @Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory @Inject internal lateinit var uiHelpers: UiHelpers @Inject internal lateinit var siteNameFeatureConfig: SiteNameFeatureConfig - private lateinit var mainViewModel: SiteCreationMainVM - private lateinit var hppViewModel: HomePagePickerViewModel - private lateinit var siteCreationIntentsViewModel: SiteCreationIntentsViewModel - private lateinit var siteCreationSiteNameViewModel: SiteCreationSiteNameViewModel + private val mainViewModel: SiteCreationMainVM by viewModels() + private val hppViewModel: HomePagePickerViewModel by viewModels() + private val siteCreationIntentsViewModel: SiteCreationIntentsViewModel by viewModels() + private val siteCreationSiteNameViewModel: SiteCreationSiteNameViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - (application as WordPress).component().inject(this) setContentView(R.layout.site_creation_activity) - mainViewModel = ViewModelProvider(this, viewModelFactory).get(SiteCreationMainVM::class.java) - hppViewModel = ViewModelProvider(this, viewModelFactory).get(HomePagePickerViewModel::class.java) - siteCreationIntentsViewModel = ViewModelProvider(this, viewModelFactory) - .get(SiteCreationIntentsViewModel::class.java) - siteCreationSiteNameViewModel = ViewModelProvider(this, viewModelFactory) - .get(SiteCreationSiteNameViewModel::class.java) val siteCreationSource = intent.extras?.getString(ARG_CREATE_SITE_SOURCE) mainViewModel.start(savedInstanceState, SiteCreationSource.fromString(siteCreationSource)) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationMainVM.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationMainVM.kt index bf63ac0077cb..1b62775f3c62 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationMainVM.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/SiteCreationMainVM.kt @@ -7,6 +7,7 @@ import androidx.annotation.StringRes import androidx.lifecycle.LiveData import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.parcelize.Parcelize import org.wordpress.android.R import org.wordpress.android.ui.sitecreation.SiteCreationMainVM.SiteCreationScreenTitle.ScreenTitleEmpty @@ -45,6 +46,7 @@ data class SiteCreationState( typealias NavigationTarget = WizardNavigationTarget +@HiltViewModel class SiteCreationMainVM @Inject constructor( private val tracker: SiteCreationTracker, private val wizardManager: WizardManager, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsFragment.kt index 826aec51190c..d9639402fb91 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsFragment.kt @@ -4,11 +4,11 @@ import android.content.Context import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R -import org.wordpress.android.WordPress import org.wordpress.android.databinding.SiteCreationDomainsScreenBinding import org.wordpress.android.databinding.SiteCreationFormScreenBinding import org.wordpress.android.ui.accounts.HelpActivity @@ -21,11 +21,11 @@ import org.wordpress.android.util.DisplayUtilsWrapper import javax.inject.Inject @Suppress("TooManyFunctions") +@AndroidEntryPoint class SiteCreationDomainsFragment : SiteCreationBaseFormFragment() { private var searchInputWithHeader: SearchInputWithHeader? = null - private lateinit var viewModel: SiteCreationDomainsViewModel + private val viewModel: SiteCreationDomainsViewModel by activityViewModels() - @Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory @Inject internal lateinit var uiHelpers: UiHelpers @Inject internal lateinit var displayUtils: DisplayUtilsWrapper @@ -41,11 +41,6 @@ class SiteCreationDomainsFragment : SiteCreationBaseFormFragment() { } } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - (requireActivity().application as WordPress).component().inject(this) - } - override fun getContentLayout(): Int { return R.layout.site_creation_domains_screen } @@ -84,9 +79,6 @@ class SiteCreationDomainsFragment : SiteCreationBaseFormFragment() { } private fun SiteCreationDomainsScreenBinding.initViewModel() { - viewModel = ViewModelProvider(this@SiteCreationDomainsFragment, viewModelFactory) - .get(SiteCreationDomainsViewModel::class.java) - viewModel.uiState.observe(this@SiteCreationDomainsFragment, { uiState -> uiState?.let { searchInputWithHeader?.updateHeader(requireActivity(), uiState.headerUiState) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsViewModel.kt index 81561c556371..d5708b498fbc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/domains/SiteCreationDomainsViewModel.kt @@ -5,6 +5,7 @@ import androidx.annotation.VisibleForTesting import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -45,6 +46,7 @@ import kotlin.properties.Delegates private const val THROTTLE_DELAY = 500L private const val ERROR_CONTEXT = "domains" +@HiltViewModel class SiteCreationDomainsViewModel @Inject constructor( private val networkUtils: NetworkUtilsWrapper, private val dispatcher: Dispatcher, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SiteCreationPreviewFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SiteCreationPreviewFragment.kt index e47eb09b2e96..4e83741a90dd 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SiteCreationPreviewFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SiteCreationPreviewFragment.kt @@ -15,7 +15,8 @@ import android.view.View.OnLayoutChangeListener import android.view.animation.DecelerateInterpolator import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.viewModels +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R import org.wordpress.android.WordPress import org.wordpress.android.databinding.FullscreenErrorWithRetryBinding @@ -46,6 +47,7 @@ private const val ARG_DATA = "arg_site_creation_data" private const val SLIDE_IN_ANIMATION_DURATION = 450L @Suppress("TooManyFunctions") +@AndroidEntryPoint class SiteCreationPreviewFragment : SiteCreationBaseFormFragment(), ErrorManagedWebViewClientListener { /** @@ -53,12 +55,11 @@ class SiteCreationPreviewFragment : SiteCreationBaseFormFragment(), * automatically shows system notifications when site creation is in progress and the app is in the background. */ private var serviceEventConnection: ServiceEventConnection? = null - private lateinit var viewModel: SitePreviewViewModel + private val viewModel: SitePreviewViewModel by viewModels() private var animatorSet: AnimatorSet? = null private val isLandscape: Boolean get() = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - @Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory @Inject internal lateinit var uiHelpers: UiHelpers private var binding: SiteCreationPreviewScreenBinding? = null @@ -75,7 +76,6 @@ class SiteCreationPreviewFragment : SiteCreationBaseFormFragment(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - (requireNotNull(activity).application as WordPress).component().inject(this) if (savedInstanceState == null) { // we need to manually clear the SiteCreationService state so we don't for example receive sticky events // from the previous run of the SiteCreation flow. @@ -121,10 +121,6 @@ class SiteCreationPreviewFragment : SiteCreationBaseFormFragment(), } private fun SiteCreationPreviewScreenDefaultBinding.initViewModel() { - viewModel = ViewModelProvider( - this@SiteCreationPreviewFragment, - viewModelFactory - ).get(SitePreviewViewModel::class.java) viewModel.uiState.observe(this@SiteCreationPreviewFragment, { uiState -> uiState?.let { when (uiState) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SitePreviewViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SitePreviewViewModel.kt index 1584ee1d3e2d..3ddbf1614779 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SitePreviewViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/previews/SitePreviewViewModel.kt @@ -6,6 +6,7 @@ import android.os.Parcelable import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.parcelize.Parcelize import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope @@ -67,6 +68,7 @@ private val loadingTexts = listOf( UiStringRes(R.string.new_site_creation_creating_site_loading_4) ) +@HiltViewModel class SitePreviewViewModel @Inject constructor( private val dispatcher: Dispatcher, private val siteStore: SiteStore, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameFragment.kt index e6484f2f4a2f..74a4253cecae 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameFragment.kt @@ -1,6 +1,5 @@ package org.wordpress.android.ui.sitecreation.sitename -import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -9,11 +8,11 @@ import android.view.inputmethod.EditorInfo import androidx.core.view.isInvisible import androidx.core.widget.doOnTextChanged import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R import org.wordpress.android.R.color import org.wordpress.android.R.string -import org.wordpress.android.WordPress import org.wordpress.android.databinding.SiteCreationSiteNameFragmentBinding import org.wordpress.android.ui.sitecreation.sitename.SiteCreationSiteNameViewModel.SiteNameUiState import org.wordpress.android.ui.utils.HtmlMessageUtils @@ -27,20 +26,15 @@ import javax.inject.Inject * Implements the Site Name UI */ @Suppress("TooManyFunctions") +@AndroidEntryPoint class SiteCreationSiteNameFragment : Fragment() { - @Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory @Inject internal lateinit var uiHelper: UiHelpers @Inject internal lateinit var displayUtils: DisplayUtilsWrapper @Inject internal lateinit var htmlMessageUtils: HtmlMessageUtils - private lateinit var viewModel: SiteCreationSiteNameViewModel + private val viewModel: SiteCreationSiteNameViewModel by activityViewModels() private var binding: SiteCreationSiteNameFragmentBinding? = null - override fun onAttach(context: Context) { - super.onAttach(context) - (requireActivity().applicationContext as WordPress).component().inject(this) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -52,9 +46,6 @@ class SiteCreationSiteNameFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel = ViewModelProvider(requireActivity(), viewModelFactory) - .get(SiteCreationSiteNameViewModel::class.java) - val binding = SiteCreationSiteNameFragmentBinding.bind(view) this.binding = binding with(binding) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameViewModel.kt index 702d17ac0737..e32449c615ba 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/sitename/SiteCreationSiteNameViewModel.kt @@ -3,6 +3,7 @@ package org.wordpress.android.ui.sitecreation.sitename import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -13,6 +14,7 @@ import javax.inject.Inject import javax.inject.Named import kotlin.coroutines.CoroutineContext +@HiltViewModel class SiteCreationSiteNameViewModel @Inject constructor( private val analyticsTracker: SiteCreationTracker, @Named(BG_THREAD) private val bgDispatcher: CoroutineDispatcher diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerFragment.kt index 8f94e622c382..f715138b3831 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerFragment.kt @@ -1,6 +1,5 @@ package org.wordpress.android.ui.sitecreation.theme -import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -8,11 +7,12 @@ import android.view.ViewGroup import androidx.core.view.isGone import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.appbar.AppBarLayout +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R -import org.wordpress.android.WordPress import org.wordpress.android.databinding.HomePagePickerFragmentBinding import org.wordpress.android.ui.layoutpicker.LayoutCategoryAdapter import org.wordpress.android.ui.layoutpicker.LayoutPickerUiState @@ -31,6 +31,7 @@ import javax.inject.Inject * Implements the Home Page Picker UI */ @Suppress("TooManyFunctions") +@AndroidEntryPoint class HomePagePickerFragment : Fragment() { @Inject lateinit var imageManager: ImageManager @Inject lateinit var displayUtils: DisplayUtilsWrapper @@ -39,16 +40,11 @@ class HomePagePickerFragment : Fragment() { @Inject lateinit var viewModelFactory: ViewModelProvider.Factory @Inject lateinit var thumbDimensionProvider: SiteDesignPickerDimensionProvider @Inject lateinit var recommendedDimensionProvider: SiteDesignRecommendedDimensionProvider - private lateinit var viewModel: HomePagePickerViewModel + private val viewModel: HomePagePickerViewModel by activityViewModels() private val siteIntent: String? get() = arguments?.getString(ARG_SITE_INTENT) - override fun onAttach(context: Context) { - super.onAttach(context) - (requireActivity().applicationContext as WordPress).component().inject(this) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -60,8 +56,6 @@ class HomePagePickerFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel = ViewModelProvider(requireActivity(), viewModelFactory).get(HomePagePickerViewModel::class.java) - savedInstanceState?.let { viewModel.loadSavedState(it) } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerViewModel.kt index 58e360d9e039..dc83d75e7b68 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/theme/HomePagePickerViewModel.kt @@ -1,6 +1,7 @@ package org.wordpress.android.ui.sitecreation.theme import androidx.lifecycle.LiveData +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import org.wordpress.android.R @@ -24,6 +25,7 @@ const val defaultTemplateSlug = "default" private const val ERROR_CONTEXT = "design" +@HiltViewModel class HomePagePickerViewModel @Inject constructor( override val networkUtils: NetworkUtilsWrapper, private val dispatcher: Dispatcher, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsFragment.kt index 16132cffc8b5..f14e8bfbfc2c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsFragment.kt @@ -1,6 +1,5 @@ package org.wordpress.android.ui.sitecreation.verticals -import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -8,10 +7,10 @@ import android.view.ViewGroup import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels import com.google.android.material.appbar.AppBarLayout +import dagger.hilt.android.AndroidEntryPoint import org.wordpress.android.R -import org.wordpress.android.WordPress import org.wordpress.android.databinding.SiteCreationIntentsFragmentBinding import org.wordpress.android.ui.sitecreation.verticals.SiteCreationIntentsViewModel.IntentsUiState import org.wordpress.android.ui.utils.UiHelpers @@ -22,19 +21,14 @@ import javax.inject.Inject * Implements the Site Intent Question UI */ @Suppress("TooManyFunctions") +@AndroidEntryPoint class SiteCreationIntentsFragment : Fragment() { - @Inject internal lateinit var viewModelFactory: ViewModelProvider.Factory @Inject internal lateinit var uiHelper: UiHelpers @Inject internal lateinit var displayUtils: DisplayUtilsWrapper - private lateinit var viewModel: SiteCreationIntentsViewModel + private val viewModel: SiteCreationIntentsViewModel by activityViewModels() private var binding: SiteCreationIntentsFragmentBinding? = null - override fun onAttach(context: Context) { - super.onAttach(context) - (requireActivity().applicationContext as WordPress).component().inject(this) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -46,9 +40,6 @@ class SiteCreationIntentsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel = ViewModelProvider(requireActivity(), viewModelFactory) - .get(SiteCreationIntentsViewModel::class.java) - val binding = SiteCreationIntentsFragmentBinding.bind(view) this.binding = binding with(binding) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsViewModel.kt index 120cb36ea161..338b86bb1a0c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitecreation/verticals/SiteCreationIntentsViewModel.kt @@ -4,6 +4,7 @@ import android.content.res.Resources import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -17,6 +18,7 @@ import javax.inject.Inject import javax.inject.Named import kotlin.coroutines.CoroutineContext +@HiltViewModel class SiteCreationIntentsViewModel @Inject constructor( private val analyticsTracker: SiteCreationTracker, private val searchResultsProvider: VerticalsSearchResultsProvider,