revert: Some stupidity moves

This commit is contained in:
ziro 2024-01-14 08:16:37 +07:00
parent 59a3574486
commit a50d3885f6
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
6 changed files with 43 additions and 18 deletions

View file

@ -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()
}
}

View file

@ -6,7 +6,6 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import dev.yokai.domain.Result import dev.yokai.domain.Result
import dev.yokai.domain.extension.repo.ExtensionRepoRepository import dev.yokai.domain.extension.repo.ExtensionRepoRepository
import dev.yokai.domain.source.SourcePreferences
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.launchIO import eu.kanade.tachiyomi.util.system.launchIO
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@ -21,8 +20,7 @@ import uy.kohesive.injekt.api.get
class ExtensionRepoViewModel : class ExtensionRepoViewModel :
ViewModel() { ViewModel() {
private val sourcePreferences = Injekt.get<SourcePreferences>() private val repository = ExtensionRepoRepository(Injekt.get())
private val repository = ExtensionRepoRepository(sourcePreferences)
private val mutableRepoState: MutableStateFlow<ExtensionRepoState> = MutableStateFlow(ExtensionRepoState.Loading) private val mutableRepoState: MutableStateFlow<ExtensionRepoState> = MutableStateFlow(ExtensionRepoState.Loading)
val repoState: StateFlow<ExtensionRepoState> = mutableRepoState.asStateFlow() val repoState: StateFlow<ExtensionRepoState> = mutableRepoState.asStateFlow()

View file

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.di
import android.app.Application import android.app.Application
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import dev.yokai.domain.extension.TrustExtension
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.ChapterCache
@ -61,6 +62,8 @@ class AppModule(val app: Application) : InjektModule {
addSingletonFactory { MangaShortcutManager() } addSingletonFactory { MangaShortcutManager() }
addSingletonFactory { TrustExtension() }
// Asynchronously init expensive components for a faster cold start // Asynchronously init expensive components for a faster cold start
ContextCompat.getMainExecutor(app).execute { ContextCompat.getMainExecutor(app).execute {

View file

@ -4,8 +4,9 @@ import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.os.Parcelable 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.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.plusAssign
import eu.kanade.tachiyomi.extension.api.ExtensionApi import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.extension.model.InstallStep
@ -40,7 +41,7 @@ import java.util.Locale
class ExtensionManager( class ExtensionManager(
private val context: Context, private val context: Context,
private val preferences: PreferencesHelper = Injekt.get(), 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() val untrustedPkgName = untrustedExtensionsFlow.value.map { it.pkgName }.toSet()
if (pkgName !in untrustedPkgName) return if (pkgName !in untrustedPkgName) return
sourcePreferences.trustedExtensions().let { exts -> trustExtension.trust(pkgName, versionCode, signatureHash)
val removed = exts.get().filterNot { it.startsWith("$pkgName:") }.toMutableSet()
removed += "$pkgName:$versionCode:$signatureHash"
exts.set(removed)
}
val nowTrustedExtensions = untrustedExtensionsFlow.value val nowTrustedExtensions = untrustedExtensionsFlow.value
.filter { it.pkgName == pkgName && it.versionCode == versionCode } .filter { it.pkgName == pkgName && it.versionCode == versionCode }

View file

@ -8,7 +8,7 @@ import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import androidx.core.content.pm.PackageInfoCompat import androidx.core.content.pm.PackageInfoCompat
import dalvik.system.PathClassLoader 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.BuildConfig
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
@ -34,7 +34,7 @@ import java.nio.file.attribute.BasicFileAttributes
internal object ExtensionLoader { internal object ExtensionLoader {
private val preferences: PreferencesHelper by injectLazy() private val preferences: PreferencesHelper by injectLazy()
private val sourcePreferences: SourcePreferences by injectLazy() private val trustExtension: TrustExtension by injectLazy()
private val loadNsfwSource by lazy { private val loadNsfwSource by lazy {
preferences.showNsfwSources().get() preferences.showNsfwSources().get()
} }
@ -429,8 +429,7 @@ internal object ExtensionLoader {
} }
private fun isTrusted(pkgInfo: PackageInfo, signatures: List<String>): Boolean { private fun isTrusted(pkgInfo: PackageInfo, signatures: List<String>): Boolean {
val key = "${pkgInfo.packageName}:${PackageInfoCompat.getLongVersionCode(pkgInfo)}:${signatures.last()}" return trustExtension.isTrusted(pkgInfo, signatures.last())
return key in sourcePreferences.trustedExtensions().get()
} }
/** /**

View file

@ -16,7 +16,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase 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.BuildConfig
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.ChapterCache
@ -79,7 +79,7 @@ class SettingsAdvancedController : SettingsController() {
private val downloadManager: DownloadManager by injectLazy() private val downloadManager: DownloadManager by injectLazy()
private val sourcePreferences: SourcePreferences by injectLazy() private val trustExtension: TrustExtension by injectLazy()
private val isUpdaterEnabled = BuildConfig.INCLUDE_UPDATER private val isUpdaterEnabled = BuildConfig.INCLUDE_UPDATER
@ -377,7 +377,7 @@ class SettingsAdvancedController : SettingsController() {
title = "Revoke all" title = "Revoke all"
onClick { onClick {
sourcePreferences.trustedExtensions().delete() trustExtension.revokeAll()
activity?.toast(R.string.requires_app_restart) activity?.toast(R.string.requires_app_restart)
} }
} }