summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorAleksandr Granin <aleksandr@mullvad.net>2021-04-01 13:45:08 +0200
committerAleksandr Granin <aleksandr@mullvad.net>2021-04-06 14:44:29 +0200
commitaceb301d9d8a4acae2b5369b567d545480d54918 (patch)
tree82c59cfba7954eb167eff8bbe4d2903038b8cbe1 /android/src
parent7c43876bb294aae4db136f25e8a868179f9d6765 (diff)
downloadmullvadvpn-aceb301d9d8a4acae2b5369b567d545480d54918.tar.xz
mullvadvpn-aceb301d9d8a4acae2b5369b567d545480d54918.zip
Init Koin as DI for android project
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/AndroidManifest.xml1
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt20
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt28
3 files changed, 49 insertions, 0 deletions
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 1190fb182c..98c0999fd4 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -22,6 +22,7 @@
android:extractNativeLibs="true"
android:allowBackup="false"
android:banner="@drawable/banner"
+ android:name=".MullvadApplication"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name="net.mullvad.mullvadvpn.ui.MainActivity"
android:label="@string/app_name"
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt
new file mode 100644
index 0000000000..0c3a0d8640
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt
@@ -0,0 +1,20 @@
+package net.mullvad.mullvadvpn
+
+import android.app.Application
+import net.mullvad.mullvadvpn.di.appModule
+import org.koin.android.ext.koin.androidContext
+import org.koin.core.context.startKoin
+
+class MullvadApplication : Application() {
+
+ override fun onCreate() {
+ super.onCreate()
+ // start Koin!
+ startKoin {
+ // declare used Android context
+ androidContext(this@MullvadApplication)
+ // declare modules
+ modules(appModule)
+ }
+ }
+}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
new file mode 100644
index 0000000000..a144ae6bc2
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
@@ -0,0 +1,28 @@
+package net.mullvad.mullvadvpn.di
+
+import android.content.pm.PackageManager
+import kotlinx.coroutines.Dispatchers
+import net.mullvad.mullvadvpn.applist.ApplicationsIconManager
+import net.mullvad.mullvadvpn.applist.ApplicationsProvider
+import net.mullvad.mullvadvpn.service.SplitTunneling
+import net.mullvad.mullvadvpn.viewmodel.SplitTunnelingViewModel
+import org.koin.android.ext.koin.androidContext
+import org.koin.androidx.viewmodel.dsl.viewModel
+import org.koin.core.qualifier.named
+import org.koin.dsl.module
+import org.koin.dsl.onClose
+
+val appModule = module {
+
+ single<SplitTunneling> { SplitTunneling(androidContext()) }
+ single<PackageManager> { androidContext().packageManager }
+ single<String> (named(SELF_PACKAGE_NAME)) { androidContext().packageName }
+
+ scope(named(APPS_SCOPE)) {
+ viewModel { SplitTunnelingViewModel(get(), get(), Dispatchers.Default) }
+ scoped { ApplicationsIconManager(get()) } onClose { it?.dispose() }
+ scoped { ApplicationsProvider(get(), get(named(SELF_PACKAGE_NAME))) }
+ }
+}
+const val APPS_SCOPE = "APPS_SCOPE"
+const val SELF_PACKAGE_NAME = "SELF_PACKAGE_NAME"