summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-05-31 09:54:08 +0200
committerAlbin <albin@mullvad.net>2022-05-31 14:23:23 +0200
commit2a4bb75480b87b6812a81f8ed50a8dcca49b842f (patch)
treec7a208e1971ba6c760cfc7c43944fbf4dd5816aa /android
parent7ffb1c2ef0724e76b783881e71b0c58d40519896 (diff)
downloadmullvadvpn-2a4bb75480b87b6812a81f8ed50a8dcca49b842f.tar.xz
mullvadvpn-2a4bb75480b87b6812a81f8ed50a8dcca49b842f.zip
Use Koin for login vm
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt24
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt14
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt3
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