From 848057bfc4c414743b83e6c93154ea92a68061fb Mon Sep 17 00:00:00 2001 From: MUEDSA <7676275+muedsa@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:08:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=97=B6=E4=B9=9F=E5=88=A0=E9=99=A4=E6=8F=92=E4=BB=B6=E7=9A=84?= =?UTF-8?q?Prefs=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tvbox/screens/manage/PluginManageViewModel.kt | 10 ++++++++++ .../main/java/com/muedsa/tvbox/store/PluginKeyCache.kt | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/muedsa/tvbox/screens/manage/PluginManageViewModel.kt b/app/src/main/java/com/muedsa/tvbox/screens/manage/PluginManageViewModel.kt index 20b176e..de1889f 100644 --- a/app/src/main/java/com/muedsa/tvbox/screens/manage/PluginManageViewModel.kt +++ b/app/src/main/java/com/muedsa/tvbox/screens/manage/PluginManageViewModel.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.pm.PackageManager import android.os.Environment import androidx.compose.runtime.Immutable +import androidx.datastore.preferences.core.edit import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.muedsa.tvbox.plugin.LoadedPlugins @@ -12,6 +13,7 @@ import com.muedsa.tvbox.plugin.PluginManager import com.muedsa.tvbox.room.dao.EpisodeProgressDao import com.muedsa.tvbox.room.dao.FavoriteMediaDao import com.muedsa.tvbox.store.DataStoreRepo +import com.muedsa.tvbox.store.PluginKeyCache import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers @@ -121,6 +123,14 @@ class PluginManageScreenViewModel @Inject constructor( if (PluginManager.uninstallPlugin(context, pluginInfo)) { favoriteMediaDao.deleteByPluginPackage(pluginPackage = pluginInfo.packageName) episodeProgressDao.deleteByPluginPackage(pluginPackage = pluginInfo.packageName) + dateStoreRepo.pluginDataStore.edit { prefs -> + val keys = prefs.asMap().keys + keys.forEach { key -> + if (key.name.startsWith(PluginKeyCache.getGlobalKeyPrefix(pluginPackage = pluginInfo.packageName))) { + prefs.remove(key) + } + } + } withContext(Dispatchers.Main) { onSuccess() } diff --git a/app/src/main/java/com/muedsa/tvbox/store/PluginKeyCache.kt b/app/src/main/java/com/muedsa/tvbox/store/PluginKeyCache.kt index d93b026..9c433bc 100644 --- a/app/src/main/java/com/muedsa/tvbox/store/PluginKeyCache.kt +++ b/app/src/main/java/com/muedsa/tvbox/store/PluginKeyCache.kt @@ -8,10 +8,12 @@ object PluginKeyCache { private const val GLOBAL_KEY_NAME_SEPARATOR = ":" + fun getGlobalKeyPrefix(pluginPackage: String): String = "$pluginPackage$GLOBAL_KEY_NAME_SEPARATOR" + @Synchronized @Suppress("UNCHECKED_CAST") fun getGlobalKey(pluginPackage: String, key: PluginPerfKey): Preferences.Key { - val name = "$pluginPackage$GLOBAL_KEY_NAME_SEPARATOR${key.name}" + val name = "${getGlobalKeyPrefix(pluginPackage)}${key.name}" return cache.computeIfAbsent(name) { key.getAndroidKey(name) } as Preferences.Key