Remove uninstalled icon packs from database
This commit is contained in:
parent
473ecf8875
commit
c040076ce9
@ -53,4 +53,10 @@ interface IconDao {
|
||||
|
||||
@Query("SELECT scale FROM IconPack WHERE packageName = :pack")
|
||||
suspend fun getScale(pack: String): Float?
|
||||
|
||||
@Query("DELETE FROM Icons WHERE iconPack NOT IN (:keep)")
|
||||
suspend fun deleteIconsNotIn(keep: List<String>)
|
||||
|
||||
@Query("DELETE FROM IconPack WHERE packageName NOT IN (:keep)")
|
||||
suspend fun deleteIconPacksNotIn(keep: List<String>)
|
||||
}
|
||||
@ -14,15 +14,14 @@ import android.graphics.drawable.AdaptiveIconDrawable
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.graphics.drawable.RotateDrawable
|
||||
import android.util.Log
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.room.withTransaction
|
||||
import de.mm20.launcher2.database.AppDatabase
|
||||
import de.mm20.launcher2.icons.loaders.AppFilterIconPackInstaller
|
||||
import de.mm20.launcher2.icons.loaders.GrayscaleMapIconPackInstaller
|
||||
import de.mm20.launcher2.ktx.isAtLeastApiLevel
|
||||
import de.mm20.launcher2.ktx.obtainTypedArrayOrNull
|
||||
import de.mm20.launcher2.ktx.randomElementOrNull
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
@ -58,6 +57,7 @@ class IconPackManager(
|
||||
AppFilterIconPackInstaller(context, appDatabase),
|
||||
GrayscaleMapIconPackInstaller(context, appDatabase),
|
||||
)
|
||||
val installedPacks = mutableListOf<IconPack>()
|
||||
for (installer in installers) {
|
||||
val iconPacks = installer.getInstalledIconPacks()
|
||||
for (pack in iconPacks) {
|
||||
@ -68,11 +68,21 @@ class IconPackManager(
|
||||
Log.d("MM20", "Icon pack ${pack.packageName} is up to date")
|
||||
}
|
||||
}
|
||||
installedPacks.addAll(iconPacks)
|
||||
}
|
||||
uninstallAllIconPacksExcept(installedPacks)
|
||||
updateIconPacksMutex.unlock()
|
||||
return iconsHaveBeenUpdated
|
||||
}
|
||||
|
||||
private suspend fun uninstallAllIconPacksExcept(keep: List<IconPack>) {
|
||||
val dao = appDatabase.iconDao()
|
||||
appDatabase.withTransaction {
|
||||
dao.deleteIconsNotIn(keep.map { it.packageName })
|
||||
dao.deleteIconPacksNotIn(keep.map { it.packageName })
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getIcon(
|
||||
iconPack: String,
|
||||
packageName: String,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user