diff options
| author | Albin <albin@mullvad.net> | 2022-05-31 09:54:08 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-05-31 14:23:23 +0200 |
| commit | 2a4bb75480b87b6812a81f8ed50a8dcca49b842f (patch) | |
| tree | c7a208e1971ba6c760cfc7c43944fbf4dd5816aa /android | |
| parent | 7ffb1c2ef0724e76b783881e71b0c58d40519896 (diff) | |
| download | mullvadvpn-2a4bb75480b87b6812a81f8ed50a8dcca49b842f.tar.xz mullvadvpn-2a4bb75480b87b6812a81f8ed50a8dcca49b842f.zip | |
Use Koin for login vm
Diffstat (limited to 'android')
4 files changed, 11 insertions, 32 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt index 26326fd002..7e503e4a33 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt @@ -9,6 +9,7 @@ import net.mullvad.mullvadvpn.ipc.EventDispatcher import net.mullvad.mullvadvpn.ui.serviceconnection.DeviceRepository import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager import net.mullvad.mullvadvpn.ui.serviceconnection.SplitTunneling +import net.mullvad.mullvadvpn.viewmodel.LoginViewModel import net.mullvad.mullvadvpn.viewmodel.SplitTunnelingViewModel import org.koin.android.ext.koin.androidContext import org.koin.androidx.viewmodel.dsl.viewModel @@ -35,6 +36,7 @@ val uiModule = module { single { ServiceConnectionManager(androidContext()) } single { DeviceRepository(get()) } + viewModel { LoginViewModel() } } const val APPS_SCOPE = "APPS_SCOPE" const val SERVICE_CONNECTION_SCOPE = "SERVICE_CONNECTION_SCOPE" diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt index aa6c1a3ab0..d16cf2f0a9 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt @@ -10,7 +10,6 @@ import android.widget.TextView import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.flow.collect @@ -21,12 +20,13 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionContainer import net.mullvad.mullvadvpn.ui.widget.AccountLogin import net.mullvad.mullvadvpn.ui.widget.HeaderBar import net.mullvad.mullvadvpn.viewmodel.LoginViewModel +import org.koin.androidx.viewmodel.ext.android.viewModel class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen), NavigationBarPainter { - private lateinit var loginViewModel: LoginViewModel + private val loginViewModel: LoginViewModel by viewModel() private lateinit var title: TextView private lateinit var subtitle: TextView @@ -52,10 +52,7 @@ class LoginFragment : loggedInStatus = view.findViewById(R.id.logged_in_status) loginFailStatus = view.findViewById(R.id.login_fail_status) - val factory = LoginViewModel.Factory(requireActivity().application) - loginViewModel = ViewModelProvider(this, factory)[LoginViewModel::class.java].apply { - updateAccountCacheInstance(accountCache) - } + loginViewModel.updateAccountCacheInstance(accountCache) accountLogin = view.findViewById<AccountLogin>(R.id.account_login).apply { onLogin = loginViewModel::login @@ -73,26 +70,19 @@ class LoginFragment : scrollToShow(accountLogin) - return view - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) setupLifecycleSubscriptionsToViewModel() + + return view } override fun onNewServiceConnection(serviceConnectionContainer: ServiceConnectionContainer) { super.onNewServiceConnection(serviceConnectionContainer) - if (this::loginViewModel.isInitialized) { - loginViewModel.updateAccountCacheInstance(accountCache) - } + loginViewModel.updateAccountCacheInstance(accountCache) } override fun onNoServiceConnection() { super.onNoServiceConnection() - if (this::loginViewModel.isInitialized) { - loginViewModel.updateAccountCacheInstance(null) - } + loginViewModel.updateAccountCacheInstance(null) } override fun onSafelyStart() { diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt index cb4f151fd1..e9cb27fda6 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt @@ -1,9 +1,6 @@ package net.mullvad.mullvadvpn.viewmodel -import android.app.Application -import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -15,9 +12,7 @@ import net.mullvad.mullvadvpn.model.AccountHistory import net.mullvad.mullvadvpn.model.LoginResult import net.mullvad.mullvadvpn.ui.serviceconnection.AccountCache -class LoginViewModel( - application: Application -) : AndroidViewModel(application) { +class LoginViewModel : ViewModel() { private val _uiState = MutableStateFlow<LoginUiState>(LoginUiState.Default) val uiState: StateFlow<LoginUiState> = _uiState @@ -99,11 +94,4 @@ class LoginViewModel( else -> LoginUiState.OtherError(errorMessage = this.toString()) } } - - class Factory(val application: Application) : - ViewModelProvider.Factory { - override fun <T : ViewModel> create(modelClass: Class<T>): T { - return LoginViewModel(application) as T - } - } } diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt index 2a615fcc72..a0dc80957b 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt @@ -5,7 +5,6 @@ import app.cash.turbine.test import io.mockk.MockKAnnotations import io.mockk.every import io.mockk.impl.annotations.MockK -import io.mockk.mockk import io.mockk.verify import junit.framework.Assert.assertEquals import kotlinx.coroutines.Dispatchers @@ -41,7 +40,7 @@ class LoginViewModelTest { every { mockedAccountCache.accountHistoryEvents } returns accountHistoryTestEvents every { mockedAccountCache.loginEvents } returns loginTestEvents - loginViewModel = LoginViewModel(mockk()) + loginViewModel = LoginViewModel() } @Test |
