summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-07-04 10:16:55 +0200
committerDavid Göransson <david.goransson@mullvad.net>2024-07-18 11:06:59 +0200
commit3375aecd61e5ca830eab462b0e2688157afc1c41 (patch)
tree26ac028b468944d5a757c9a73d670645b158e25a /android/app/src
parent2368bb8748f80bb8c120cda7a141c4a9e52cb6ec (diff)
downloadmullvadvpn-3375aecd61e5ca830eab462b0e2688157afc1c41.tar.xz
mullvadvpn-3375aecd61e5ca830eab462b0e2688157afc1c41.zip
Bind ServiceConnectionManager to Activity
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt26
2 files changed, 15 insertions, 16 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 5ecf8ecbd9..371a30bdf1 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
@@ -24,6 +24,7 @@ import net.mullvad.mullvadvpn.repository.RelayOverridesRepository
import net.mullvad.mullvadvpn.repository.SettingsRepository
import net.mullvad.mullvadvpn.repository.SplashCompleteRepository
import net.mullvad.mullvadvpn.repository.SplitTunnelingRepository
+import net.mullvad.mullvadvpn.ui.MainActivity
import net.mullvad.mullvadvpn.ui.serviceconnection.AppVersionInfoRepository
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
import net.mullvad.mullvadvpn.usecase.AccountExpiryNotificationUseCase
@@ -97,9 +98,9 @@ val uiModule = module {
single<String>(named(SELF_PACKAGE_NAME)) { androidContext().packageName }
viewModel { SplitTunnelingViewModel(get(), get(), Dispatchers.Default) }
- single { ApplicationsProvider(get(), get(named(SELF_PACKAGE_NAME))) }
- single { ServiceConnectionManager(androidContext()) }
+ single { ApplicationsProvider(get(), get(named(SELF_PACKAGE_NAME))) }
+ scope<MainActivity> { scoped { ServiceConnectionManager(androidContext()) } }
single { InetAddressValidator.getInstance() }
single { androidContext().resources }
single { androidContext().assets }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index 8339a25f61..1d9de026af 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -21,22 +21,27 @@ import net.mullvad.mullvadvpn.repository.PrivacyDisclaimerRepository
import net.mullvad.mullvadvpn.repository.SplashCompleteRepository
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
import net.mullvad.mullvadvpn.viewmodel.NoDaemonViewModel
-import org.koin.android.ext.android.getKoin
+import org.koin.android.ext.android.inject
+import org.koin.android.scope.AndroidScopeComponent
+import org.koin.androidx.scope.activityScope
import org.koin.core.context.loadKoinModules
-class MainActivity : ComponentActivity() {
+class MainActivity : ComponentActivity(), AndroidScopeComponent {
+ override val scope by activityScope()
+
private val requestNotificationPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
// NotificationManager.areNotificationsEnabled is used to check the state rather than
// handling the callback value.
}
- private lateinit var privacyDisclaimerRepository: PrivacyDisclaimerRepository
- private lateinit var serviceConnectionManager: ServiceConnectionManager
- private lateinit var splashCompleteRepository: SplashCompleteRepository
+ private val intentProvider by inject<IntentProvider>()
+ private val noDaemonViewModel by inject<NoDaemonViewModel>()
+ private val privacyDisclaimerRepository by inject<PrivacyDisclaimerRepository>()
+ private val serviceConnectionManager by inject<ServiceConnectionManager>()
+ private val splashCompleteRepository by inject<SplashCompleteRepository>()
+
private var isReadyNextDraw: Boolean = false
- private lateinit var noDaemonViewModel: NoDaemonViewModel
- private lateinit var intentProvider: IntentProvider
override fun onCreate(savedInstanceState: Bundle?) {
loadKoinModules(listOf(uiModule, paymentModule))
@@ -44,13 +49,6 @@ class MainActivity : ComponentActivity() {
// Tell the system that we will draw behind the status bar and navigation bar
WindowCompat.setDecorFitsSystemWindows(window, false)
- with(getKoin()) {
- privacyDisclaimerRepository = get()
- serviceConnectionManager = get()
- noDaemonViewModel = get()
- intentProvider = get()
- splashCompleteRepository = get()
- }
lifecycle.addObserver(noDaemonViewModel)
installSplashScreen().setKeepOnScreenCondition {