diff --git a/app/src/main/kotlin/com/github/kr328/clash/AppModule.kt b/app/src/main/kotlin/com/github/kr328/clash/AppModule.kt index e20c72a426..76629072ef 100644 --- a/app/src/main/kotlin/com/github/kr328/clash/AppModule.kt +++ b/app/src/main/kotlin/com/github/kr328/clash/AppModule.kt @@ -1,11 +1,12 @@ package com.github.kr328.clash import android.app.Activity -import com.github.kr328.clash.util.MainActivityClassProvider +import com.github.kr328.clash.di.AppInfoProvider import org.koin.dsl.module -val appModule = module { single { MainActivityClassProviderImpl } } +val appModule = module { single { AppInfoProviderImpl } } -private object MainActivityClassProviderImpl : MainActivityClassProvider { +private object AppInfoProviderImpl : AppInfoProvider { override val mainActivityClass: Class = MainActivity::class.java + override val mainActivityAlias: String = "${MainActivity::class.qualifiedName}Alias" } diff --git a/glue/src/main/kotlin/com/github/kr328/clash/di/AppInfoProvider.kt b/glue/src/main/kotlin/com/github/kr328/clash/di/AppInfoProvider.kt new file mode 100644 index 0000000000..84a3a1ef70 --- /dev/null +++ b/glue/src/main/kotlin/com/github/kr328/clash/di/AppInfoProvider.kt @@ -0,0 +1,14 @@ +package com.github.kr328.clash.di + +import android.app.Activity +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +interface AppInfoProvider { + val mainActivityClass: Class + val mainActivityAlias: String + + companion object : KoinComponent { + val instance: AppInfoProvider by inject() + } +} diff --git a/glue/src/main/kotlin/com/github/kr328/clash/store/UiStore.kt b/glue/src/main/kotlin/com/github/kr328/clash/store/UiStore.kt index db6b697c1b..afdedb2c66 100644 --- a/glue/src/main/kotlin/com/github/kr328/clash/store/UiStore.kt +++ b/glue/src/main/kotlin/com/github/kr328/clash/store/UiStore.kt @@ -1,6 +1,5 @@ package com.github.kr328.clash.store -import android.content.ComponentName import android.content.Context import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.content.pm.PackageManager @@ -11,6 +10,7 @@ import com.github.kr328.clash.common.util.unsafeLazy import com.github.kr328.clash.core.model.ProxySort import com.github.kr328.clash.model.AppInfo import com.github.kr328.clash.model.DarkMode +import com.github.kr328.clash.util.mainActivityAlias import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -110,8 +110,5 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - - val Context.mainActivityAlias: ComponentName - get() = ComponentName(this, "com.github.kr328.clash.MainActivityAlias") } } diff --git a/glue/src/main/kotlin/com/github/kr328/clash/util/Intent.kt b/glue/src/main/kotlin/com/github/kr328/clash/util/Intent.kt index c73c361a56..345582def2 100644 --- a/glue/src/main/kotlin/com/github/kr328/clash/util/Intent.kt +++ b/glue/src/main/kotlin/com/github/kr328/clash/util/Intent.kt @@ -1,15 +1,14 @@ package com.github.kr328.clash.util -import android.app.Activity +import android.content.ComponentName import android.content.Context import android.content.Intent -import org.koin.mp.KoinPlatform - -interface MainActivityClassProvider { - val mainActivityClass: Class -} +import com.github.kr328.clash.di.AppInfoProvider.Companion.instance as appInfoProvider fun mainIntent(context: Context, action: String? = null): Intent { - val mainActivityClass = KoinPlatform.getKoin().get().mainActivityClass + val mainActivityClass = appInfoProvider.mainActivityClass return Intent(context, mainActivityClass).setAction(action) } + +val Context.mainActivityAlias: ComponentName + get() = ComponentName(this, appInfoProvider.mainActivityAlias) diff --git a/ui/settings/src/main/kotlin/com/github/kr328/clash/settings/vm/AppSettingsViewModel.kt b/ui/settings/src/main/kotlin/com/github/kr328/clash/settings/vm/AppSettingsViewModel.kt index dfad46cd19..14633fc0d5 100644 --- a/ui/settings/src/main/kotlin/com/github/kr328/clash/settings/vm/AppSettingsViewModel.kt +++ b/ui/settings/src/main/kotlin/com/github/kr328/clash/settings/vm/AppSettingsViewModel.kt @@ -10,8 +10,8 @@ import com.github.kr328.clash.model.DarkMode import com.github.kr328.clash.remote.Remote import com.github.kr328.clash.service.store.ServiceStore import com.github.kr328.clash.store.UiStore -import com.github.kr328.clash.store.UiStore.Companion.mainActivityAlias import com.github.kr328.clash.util.ApplicationObserver +import com.github.kr328.clash.util.mainActivityAlias import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update