From a50d3885f6b784e9690947fba8c67220f46e9a52 Mon Sep 17 00:00:00 2001 From: ziro Date: Sun, 14 Jan 2024 08:16:37 +0700 Subject: [PATCH] revert: Some stupidity moves --- .../yokai/domain/extension/TrustExtension.kt | 29 +++++++++++++++++++ .../extension/repo/ExtensionRepoViewModel.kt | 4 +-- .../java/eu/kanade/tachiyomi/di/AppModule.kt | 3 ++ .../tachiyomi/extension/ExtensionManager.kt | 12 +++----- .../extension/util/ExtensionLoader.kt | 7 ++--- .../ui/setting/SettingsAdvancedController.kt | 6 ++-- 6 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/dev/yokai/domain/extension/TrustExtension.kt diff --git a/app/src/main/java/dev/yokai/domain/extension/TrustExtension.kt b/app/src/main/java/dev/yokai/domain/extension/TrustExtension.kt new file mode 100644 index 0000000000..baee9ef96c --- /dev/null +++ b/app/src/main/java/dev/yokai/domain/extension/TrustExtension.kt @@ -0,0 +1,29 @@ +package dev.yokai.domain.extension + +import android.content.pm.PackageInfo +import androidx.core.content.pm.PackageInfoCompat +import dev.yokai.domain.source.SourcePreferences +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class TrustExtension( + private val sourcePreferences: SourcePreferences = Injekt.get(), +) { + fun isTrusted(pkgInfo: PackageInfo, signatureHash: String): Boolean { + val key = "${pkgInfo.packageName}:${PackageInfoCompat.getLongVersionCode(pkgInfo)}:$signatureHash" + return key in sourcePreferences.trustedExtensions().get() + } + + fun trust(pkgName: String, versionCode: Long, signatureHash: String) { + sourcePreferences.trustedExtensions().let { exts -> + val removed = exts.get().filterNot { it.startsWith("$pkgName:") }.toMutableSet() + + removed += "$pkgName:$versionCode:$signatureHash" + exts.set(removed) + } + } + + fun revokeAll() { + sourcePreferences.trustedExtensions().delete() + } +} diff --git a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt index 47eac2a573..bbf80c0350 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt @@ -6,7 +6,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dev.yokai.domain.Result import dev.yokai.domain.extension.repo.ExtensionRepoRepository -import dev.yokai.domain.source.SourcePreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.launchIO import kotlinx.coroutines.flow.MutableStateFlow @@ -21,8 +20,7 @@ import uy.kohesive.injekt.api.get class ExtensionRepoViewModel : ViewModel() { - private val sourcePreferences = Injekt.get() - private val repository = ExtensionRepoRepository(sourcePreferences) + private val repository = ExtensionRepoRepository(Injekt.get()) private val mutableRepoState: MutableStateFlow = MutableStateFlow(ExtensionRepoState.Loading) val repoState: StateFlow = mutableRepoState.asStateFlow() diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt index 4f4d42bb8b..a9a774f47f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.di import android.app.Application import androidx.core.content.ContextCompat +import dev.yokai.domain.extension.TrustExtension import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.data.cache.ChapterCache @@ -61,6 +62,8 @@ class AppModule(val app: Application) : InjektModule { addSingletonFactory { MangaShortcutManager() } + addSingletonFactory { TrustExtension() } + // Asynchronously init expensive components for a faster cold start ContextCompat.getMainExecutor(app).execute { diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index b2c307d6ad..10cfdc6316 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -4,8 +4,9 @@ import android.content.Context import android.graphics.drawable.Drawable import android.os.Build import android.os.Parcelable -import dev.yokai.domain.source.SourcePreferences +import dev.yokai.domain.extension.TrustExtension import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.data.preference.plusAssign import eu.kanade.tachiyomi.extension.api.ExtensionApi import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.InstallStep @@ -40,7 +41,7 @@ import java.util.Locale class ExtensionManager( private val context: Context, private val preferences: PreferencesHelper = Injekt.get(), - private val sourcePreferences: SourcePreferences = Injekt.get(), + private val trustExtension: TrustExtension = Injekt.get(), ) { /** @@ -316,12 +317,7 @@ class ExtensionManager( val untrustedPkgName = untrustedExtensionsFlow.value.map { it.pkgName }.toSet() if (pkgName !in untrustedPkgName) return - sourcePreferences.trustedExtensions().let { exts -> - val removed = exts.get().filterNot { it.startsWith("$pkgName:") }.toMutableSet() - - removed += "$pkgName:$versionCode:$signatureHash" - exts.set(removed) - } + trustExtension.trust(pkgName, versionCode, signatureHash) val nowTrustedExtensions = untrustedExtensionsFlow.value .filter { it.pkgName == pkgName && it.versionCode == versionCode } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index ddadc5265b..d489b95600 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -8,7 +8,7 @@ import android.content.pm.PackageManager import android.os.Build import androidx.core.content.pm.PackageInfoCompat import dalvik.system.PathClassLoader -import dev.yokai.domain.source.SourcePreferences +import dev.yokai.domain.extension.TrustExtension import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.model.Extension @@ -34,7 +34,7 @@ import java.nio.file.attribute.BasicFileAttributes internal object ExtensionLoader { private val preferences: PreferencesHelper by injectLazy() - private val sourcePreferences: SourcePreferences by injectLazy() + private val trustExtension: TrustExtension by injectLazy() private val loadNsfwSource by lazy { preferences.showNsfwSources().get() } @@ -429,8 +429,7 @@ internal object ExtensionLoader { } private fun isTrusted(pkgInfo: PackageInfo, signatures: List): Boolean { - val key = "${pkgInfo.packageName}:${PackageInfoCompat.getLongVersionCode(pkgInfo)}:${signatures.last()}" - return key in sourcePreferences.trustedExtensions().get() + return trustExtension.isTrusted(pkgInfo, signatures.last()) } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index e448654c06..b11ac40799 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -16,7 +16,7 @@ import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceScreen import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase -import dev.yokai.domain.source.SourcePreferences +import dev.yokai.domain.extension.TrustExtension import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.ChapterCache @@ -79,7 +79,7 @@ class SettingsAdvancedController : SettingsController() { private val downloadManager: DownloadManager by injectLazy() - private val sourcePreferences: SourcePreferences by injectLazy() + private val trustExtension: TrustExtension by injectLazy() private val isUpdaterEnabled = BuildConfig.INCLUDE_UPDATER @@ -377,7 +377,7 @@ class SettingsAdvancedController : SettingsController() { title = "Revoke all" onClick { - sourcePreferences.trustedExtensions().delete() + trustExtension.revokeAll() activity?.toast(R.string.requires_app_restart) } }