diff options
| author | Aleksandr Granin <aleksandr@mullvad.net> | 2021-04-01 13:45:08 +0200 |
|---|---|---|
| committer | Aleksandr Granin <aleksandr@mullvad.net> | 2021-04-06 14:44:29 +0200 |
| commit | aceb301d9d8a4acae2b5369b567d545480d54918 (patch) | |
| tree | 82c59cfba7954eb167eff8bbe4d2903038b8cbe1 /android/src | |
| parent | 7c43876bb294aae4db136f25e8a868179f9d6765 (diff) | |
| download | mullvadvpn-aceb301d9d8a4acae2b5369b567d545480d54918.tar.xz mullvadvpn-aceb301d9d8a4acae2b5369b567d545480d54918.zip | |
Init Koin as DI for android project
Diffstat (limited to 'android/src')
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" |
