Skip to content

Commit 47b7132

Browse files
authored
Merge pull request #17209 from wordpress-mobile/feature/login-screens-hilt-migration
Hilt migration of login screens
2 parents 3fec60c + 55827eb commit 47b7132

File tree

13 files changed

+31
-89
lines changed

13 files changed

+31
-89
lines changed

WordPress/src/jetpack/java/org/wordpress/android/ui/accounts/login/LoginPrologueFragment.kt

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@ import android.content.Context
44
import android.os.Bundle
55
import android.view.View
66
import androidx.fragment.app.Fragment
7-
import androidx.lifecycle.ViewModelProvider
7+
import androidx.fragment.app.viewModels
88
import com.google.android.material.button.MaterialButton
9+
import dagger.hilt.android.AndroidEntryPoint
910
import org.wordpress.android.R
10-
import org.wordpress.android.WordPress
1111
import org.wordpress.android.databinding.JetpackLoginPrologueScreenBinding
1212
import org.wordpress.android.ui.accounts.LoginNavigationEvents.ShowEmailLoginScreen
1313
import org.wordpress.android.ui.accounts.LoginNavigationEvents.ShowLoginViaSiteAddressScreen
1414
import org.wordpress.android.util.WPActivityUtils
15-
import javax.inject.Inject
1615

16+
@AndroidEntryPoint
1717
class LoginPrologueFragment : Fragment(R.layout.jetpack_login_prologue_screen) {
18-
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
19-
private lateinit var viewModel: LoginPrologueViewModel
18+
private val viewModel: LoginPrologueViewModel by viewModels()
2019
private lateinit var loginPrologueListener: LoginPrologueListener
2120

2221
@Suppress("TooGenericExceptionThrown")
@@ -30,7 +29,6 @@ class LoginPrologueFragment : Fragment(R.layout.jetpack_login_prologue_screen) {
3029

3130
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
3231
super.onViewCreated(view, savedInstanceState)
33-
initDagger()
3432

3533
// setting up a full screen flags for the decor view of this fragment,
3634
// that will work with transparent status bar
@@ -41,14 +39,7 @@ class LoginPrologueFragment : Fragment(R.layout.jetpack_login_prologue_screen) {
4139
with(JetpackLoginPrologueScreenBinding.bind(view)) { initViewModel() }
4240
}
4341

44-
private fun initDagger() {
45-
(requireActivity().application as WordPress).component().inject(this)
46-
}
47-
4842
private fun JetpackLoginPrologueScreenBinding.initViewModel() {
49-
viewModel = ViewModelProvider(this@LoginPrologueFragment, viewModelFactory).get(
50-
LoginPrologueViewModel::class.java
51-
)
5243
initObservers()
5344
viewModel.start()
5445
}

WordPress/src/jetpack/java/org/wordpress/android/ui/accounts/login/LoginPrologueViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.wordpress.android.ui.accounts.login
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MediatorLiveData
55
import androidx.lifecycle.MutableLiveData
6+
import dagger.hilt.android.lifecycle.HiltViewModel
67
import kotlinx.coroutines.CoroutineDispatcher
78
import org.wordpress.android.R
89
import org.wordpress.android.analytics.AnalyticsTracker.Stat
@@ -24,6 +25,7 @@ import org.wordpress.android.viewmodel.ScopedViewModel
2425
import javax.inject.Inject
2526
import javax.inject.Named
2627

28+
@HiltViewModel
2729
class LoginPrologueViewModel @Inject constructor(
2830
private val unifiedLoginTracker: UnifiedLoginTracker,
2931
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper,

WordPress/src/main/java/org/wordpress/android/modules/AppComponent.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,8 @@
1515
import org.wordpress.android.ui.WPWebViewActivity;
1616
import org.wordpress.android.ui.about.UnifiedAboutActivity;
1717
import org.wordpress.android.ui.accounts.HelpActivity;
18-
import org.wordpress.android.ui.accounts.LoginActivity;
19-
import org.wordpress.android.ui.accounts.LoginEpilogueActivity;
20-
import org.wordpress.android.ui.accounts.LoginMagicLinkInterceptActivity;
2118
import org.wordpress.android.ui.accounts.PostSignupInterstitialActivity;
2219
import org.wordpress.android.ui.accounts.SignupEpilogueActivity;
23-
import org.wordpress.android.ui.accounts.login.LoginEpilogueFragment;
24-
import org.wordpress.android.ui.accounts.login.LoginPrologueFragment;
25-
import org.wordpress.android.ui.accounts.login.jetpack.LoginNoSitesFragment;
26-
import org.wordpress.android.ui.accounts.login.jetpack.LoginSiteCheckErrorFragment;
2720
import org.wordpress.android.ui.accounts.signup.SignupEpilogueFragment;
2821
import org.wordpress.android.ui.activitylog.detail.ActivityLogDetailFragment;
2922
import org.wordpress.android.ui.activitylog.list.ActivityLogListFragment;
@@ -239,14 +232,6 @@ public interface AppComponent {
239232

240233
void inject(PostUploadHandler object);
241234

242-
void inject(LoginActivity object);
243-
244-
void inject(LoginEpilogueActivity object);
245-
246-
void inject(LoginEpilogueFragment object);
247-
248-
void inject(LoginMagicLinkInterceptActivity object);
249-
250235
void inject(SignupEpilogueActivity object);
251236

252237
void inject(SignupEpilogueFragment object);
@@ -569,8 +554,6 @@ public interface AppComponent {
569554

570555
void inject(PhotoPickerFragment object);
571556

572-
void inject(LoginPrologueFragment object);
573-
574557
void inject(ReaderDiscoverLogic object);
575558

576559
void inject(PostListCreateMenuFragment object);
@@ -611,10 +594,6 @@ public interface AppComponent {
611594

612595
void inject(SiteSettingsTimezoneBottomSheet object);
613596

614-
void inject(LoginSiteCheckErrorFragment object);
615-
616-
void inject(LoginNoSitesFragment object);
617-
618597
void inject(UserProfileBottomSheetFragment object);
619598

620599
void inject(EngagedPeopleListActivity object);

WordPress/src/main/java/org/wordpress/android/modules/ViewModelModule.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import org.wordpress.android.ui.JetpackRemoteInstallViewModel;
77
import org.wordpress.android.ui.accounts.LoginEpilogueViewModel;
88
import org.wordpress.android.ui.accounts.LoginViewModel;
9-
import org.wordpress.android.ui.accounts.login.LoginPrologueViewModel;
10-
import org.wordpress.android.ui.accounts.login.jetpack.LoginNoSitesViewModel;
11-
import org.wordpress.android.ui.accounts.login.jetpack.LoginSiteCheckErrorViewModel;
129
import org.wordpress.android.ui.activitylog.list.filter.ActivityLogTypeFilterViewModel;
1310
import org.wordpress.android.ui.bloggingprompts.onboarding.BloggingPromptsOnboardingViewModel;
1411
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel;
@@ -485,21 +482,11 @@ abstract class ViewModelModule {
485482
@ViewModelKey(SiteSettingsTimezoneViewModel.class)
486483
abstract ViewModel siteSettingsTimezoneViewModel(SiteSettingsTimezoneViewModel viewModel);
487484

488-
@Binds
489-
@IntoMap
490-
@ViewModelKey(LoginNoSitesViewModel.class)
491-
abstract ViewModel loginNoSitesErrorViewModel(LoginNoSitesViewModel viewModel);
492-
493485
@Binds
494486
@IntoMap
495487
@ViewModelKey(LoginEpilogueViewModel.class)
496488
abstract ViewModel loginEpilogueViewModel(LoginEpilogueViewModel viewModel);
497489

498-
@Binds
499-
@IntoMap
500-
@ViewModelKey(LoginPrologueViewModel.class)
501-
abstract ViewModel loginPrologueViewModel(LoginPrologueViewModel viewModel);
502-
503490
@Binds
504491
@IntoMap
505492
@ViewModelKey(LoginViewModel.class)
@@ -510,11 +497,6 @@ abstract class ViewModelModule {
510497
@ViewModelKey(DeepLinkingIntentReceiverViewModel.class)
511498
abstract ViewModel deepLinkingIntentReceiverViewModel(DeepLinkingIntentReceiverViewModel viewModel);
512499

513-
@Binds
514-
@IntoMap
515-
@ViewModelKey(LoginSiteCheckErrorViewModel.class)
516-
abstract ViewModel loginSiteCheckErrorViewModel(LoginSiteCheckErrorViewModel viewModel);
517-
518500
@Binds
519501
@IntoMap
520502
@ViewModelKey(StorageUtilsViewModel.class)

WordPress/src/main/java/org/wordpress/android/ui/accounts/LoginActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import org.jetbrains.annotations.NotNull;
2222
import org.wordpress.android.R;
23-
import org.wordpress.android.WordPress;
2423
import org.wordpress.android.analytics.AnalyticsTracker;
2524
import org.wordpress.android.fluxc.model.SiteModel;
2625
import org.wordpress.android.fluxc.network.MemorizingTrustManager;
@@ -90,7 +89,9 @@
9089
import dagger.android.AndroidInjector;
9190
import dagger.android.DispatchingAndroidInjector;
9291
import dagger.android.HasAndroidInjector;
92+
import dagger.hilt.android.AndroidEntryPoint;
9393

94+
@AndroidEntryPoint
9495
public class LoginActivity extends LocaleAwareActivity implements ConnectionCallbacks, OnConnectionFailedListener,
9596
Callback, LoginListener, GoogleListener, LoginPrologueListener,
9697
HasAndroidInjector, BasicDialogPositiveClickInterface {
@@ -137,7 +138,6 @@ private enum SmartLockHelperState {
137138

138139
@Override
139140
protected void onCreate(Bundle savedInstanceState) {
140-
((WordPress) getApplication()).component().inject(this);
141141
super.onCreate(savedInstanceState);
142142

143143
LoginFlowThemeHelper.injectMissingCustomAttributes(getTheme());

WordPress/src/main/java/org/wordpress/android/ui/accounts/LoginEpilogueActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import androidx.lifecycle.ViewModelProvider;
99

1010
import org.wordpress.android.R;
11-
import org.wordpress.android.WordPress;
1211
import org.wordpress.android.fluxc.store.AccountStore;
1312
import org.wordpress.android.fluxc.store.SiteStore;
1413
import org.wordpress.android.ui.ActivityLauncher;
@@ -30,6 +29,9 @@
3029

3130
import javax.inject.Inject;
3231

32+
import dagger.hilt.android.AndroidEntryPoint;
33+
34+
@AndroidEntryPoint
3335
public class LoginEpilogueActivity extends LocaleAwareActivity implements LoginEpilogueListener {
3436
public static final String EXTRA_DO_LOGIN_UPDATE = "EXTRA_DO_LOGIN_UPDATE";
3537
public static final String EXTRA_SHOW_AND_RETURN = "EXTRA_SHOW_AND_RETURN";
@@ -44,7 +46,6 @@ public class LoginEpilogueActivity extends LocaleAwareActivity implements LoginE
4446
@Override
4547
protected void onCreate(Bundle savedInstanceState) {
4648
super.onCreate(savedInstanceState);
47-
((WordPress) getApplication()).component().inject(this);
4849

4950
LoginFlowThemeHelper.injectMissingCustomAttributes(getTheme());
5051

WordPress/src/main/java/org/wordpress/android/ui/accounts/LoginMagicLinkInterceptActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@
44
import android.net.Uri;
55
import android.os.Bundle;
66

7-
import org.wordpress.android.WordPress;
87
import org.wordpress.android.login.LoginAnalyticsListener;
98
import org.wordpress.android.ui.JetpackConnectionSource;
109
import org.wordpress.android.ui.LocaleAwareActivity;
1110
import org.wordpress.android.ui.main.WPMainActivity;
1211

1312
import javax.inject.Inject;
1413

14+
import dagger.hilt.android.AndroidEntryPoint;
15+
1516
/**
1617
* Deep link receiver for magic links. Starts {@link WPMainActivity} where flow is routed to login
1718
* or signup based on deep link scheme, host, and parameters.
1819
*/
20+
@AndroidEntryPoint
1921
public class LoginMagicLinkInterceptActivity extends LocaleAwareActivity {
2022
private static final String PARAMETER_FLOW = "flow";
2123
private static final String PARAMETER_FLOW_JETPACK = "jetpack";
@@ -29,7 +31,6 @@ public class LoginMagicLinkInterceptActivity extends LocaleAwareActivity {
2931
@Override
3032
protected void onCreate(Bundle savedInstanceState) {
3133
super.onCreate(savedInstanceState);
32-
((WordPress) getApplication()).component().inject(this);
3334

3435
mAction = getIntent().getAction();
3536
mUri = getIntent().getData();

WordPress/src/main/java/org/wordpress/android/ui/accounts/login/LoginEpilogueFragment.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import org.wordpress.android.BuildConfig;
2121
import org.wordpress.android.R;
22-
import org.wordpress.android.WordPress;
2322
import org.wordpress.android.analytics.AnalyticsTracker;
2423
import org.wordpress.android.analytics.AnalyticsTracker.Stat;
2524
import org.wordpress.android.fluxc.model.AccountModel;
@@ -45,6 +44,9 @@
4544

4645
import javax.inject.Inject;
4746

47+
import dagger.hilt.android.AndroidEntryPoint;
48+
49+
@AndroidEntryPoint
4850
public class LoginEpilogueFragment extends LoginBaseFormFragment<LoginEpilogueListener> {
4951
public static final String TAG = "login_epilogue_fragment_tag";
5052

@@ -154,7 +156,6 @@ protected void setupBottomButton(Button button) {
154156
@Override
155157
public void onCreate(Bundle savedInstanceState) {
156158
super.onCreate(savedInstanceState);
157-
((WordPress) requireActivity().getApplication()).component().inject(this);
158159

159160
mDoLoginUpdate = requireArguments().getBoolean(ARG_DO_LOGIN_UPDATE, false);
160161
mShowAndReturn = requireArguments().getBoolean(ARG_SHOW_AND_RETURN, false);

WordPress/src/main/java/org/wordpress/android/ui/accounts/login/jetpack/LoginNoSitesFragment.kt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import android.os.Bundle
55
import android.view.View
66
import androidx.activity.OnBackPressedCallback
77
import androidx.fragment.app.Fragment
8-
import androidx.lifecycle.ViewModelProvider
8+
import androidx.fragment.app.viewModels
9+
import dagger.hilt.android.AndroidEntryPoint
910
import org.wordpress.android.R
1011
import org.wordpress.android.WordPress
1112
import org.wordpress.android.databinding.JetpackLoginEmptyViewBinding
@@ -21,6 +22,7 @@ import org.wordpress.android.ui.main.utils.MeGravatarLoader
2122
import org.wordpress.android.ui.utils.UiHelpers
2223
import javax.inject.Inject
2324

25+
@AndroidEntryPoint
2426
class LoginNoSitesFragment : Fragment(R.layout.jetpack_login_empty_view) {
2527
companion object {
2628
const val TAG = "LoginNoSitesFragment"
@@ -30,15 +32,13 @@ class LoginNoSitesFragment : Fragment(R.layout.jetpack_login_empty_view) {
3032
}
3133
}
3234

33-
@Inject lateinit var viewModelFactory: ViewModelProvider.Factory
3435
@Inject lateinit var meGravatarLoader: MeGravatarLoader
3536
@Inject lateinit var uiHelpers: UiHelpers
3637
private var loginListener: LoginListener? = null
37-
private lateinit var viewModel: LoginNoSitesViewModel
38+
private val viewModel: LoginNoSitesViewModel by viewModels()
3839

3940
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4041
super.onViewCreated(view, savedInstanceState)
41-
initDagger()
4242
initBackPressHandler()
4343
with(JetpackLoginEmptyViewBinding.bind(view)) {
4444
initContentViews()
@@ -47,10 +47,6 @@ class LoginNoSitesFragment : Fragment(R.layout.jetpack_login_empty_view) {
4747
}
4848
}
4949

50-
private fun initDagger() {
51-
(requireActivity().application as WordPress).component().inject(this)
52-
}
53-
5450
private fun JetpackLoginEmptyViewBinding.initContentViews() {
5551
uiHelpers.setTextOrHide(loginErrorMessageTitle, R.string.login_no_jetpack_sites)
5652
uiHelpers.setTextOrHide(loginErrorMessageText, R.string.login_no_jetpack_sites_error_message)
@@ -62,9 +58,6 @@ class LoginNoSitesFragment : Fragment(R.layout.jetpack_login_empty_view) {
6258
}
6359

6460
private fun JetpackLoginEmptyViewBinding.initViewModel(savedInstanceState: Bundle?) {
65-
viewModel = ViewModelProvider(this@LoginNoSitesFragment, viewModelFactory)
66-
.get(LoginNoSitesViewModel::class.java)
67-
6861
initObservers()
6962

7063
viewModel.start(

WordPress/src/main/java/org/wordpress/android/ui/accounts/login/jetpack/LoginNoSitesViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.wordpress.android.ui.accounts.login.jetpack
33
import android.os.Bundle
44
import androidx.lifecycle.LiveData
55
import androidx.lifecycle.MediatorLiveData
6+
import dagger.hilt.android.lifecycle.HiltViewModel
67
import kotlinx.coroutines.CoroutineDispatcher
78
import kotlinx.coroutines.withContext
89
import org.wordpress.android.WordPress
@@ -24,6 +25,7 @@ import javax.inject.Named
2425

2526
const val KEY_STATE = "key_state"
2627

28+
@HiltViewModel
2729
class LoginNoSitesViewModel @Inject constructor(
2830
private val unifiedLoginTracker: UnifiedLoginTracker,
2931
private val accountStore: AccountStore,

0 commit comments

Comments
 (0)