Refactor permissions manager

This commit is contained in:
MM20
2022-01-03 21:41:44 +01:00
parent 5c0d142fd9
commit b5005ee4ea
15 changed files with 183 additions and 84 deletions
@@ -4,11 +4,14 @@ import android.content.Context
import android.provider.MediaStore
import androidx.core.database.getStringOrNull
import de.mm20.launcher2.ktx.jsonObjectOf
import de.mm20.launcher2.permissions.PermissionGroup
import de.mm20.launcher2.permissions.PermissionsManager
import de.mm20.launcher2.search.SearchableDeserializer
import de.mm20.launcher2.search.SearchableSerializer
import de.mm20.launcher2.search.data.*
import org.json.JSONObject
import org.koin.core.component.KoinComponent
import org.koin.core.component.get
class LocalFileSerializer : SearchableSerializer {
override fun serialize(searchable: Searchable): String {
@@ -24,11 +27,11 @@ class LocalFileSerializer : SearchableSerializer {
class LocalFileDeserializer(
val context: Context
) : SearchableDeserializer {
) : SearchableDeserializer, KoinComponent {
override fun deserialize(serialized: String): Searchable? {
if (!PermissionsManager.checkPermission(
context,
PermissionsManager.EXTERNAL_STORAGE
val permissionsManager: PermissionsManager = get()
if (!permissionsManager.checkPermission(
PermissionGroup.ExternalStorage
)
) return null
val json = JSONObject(serialized)
@@ -21,10 +21,13 @@ import de.mm20.launcher2.files.R
import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.ktx.formatToString
import de.mm20.launcher2.media.ThumbnailUtilsCompat
import de.mm20.launcher2.permissions.PermissionGroup
import de.mm20.launcher2.permissions.PermissionsManager
import de.mm20.launcher2.preferences.LauncherPreferences
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent
import org.koin.core.component.get
import java.io.IOException
import java.util.*
import java.io.File as JavaIOFile
@@ -161,14 +164,14 @@ open class LocalFile(
companion object {
companion object: KoinComponent {
fun search(context: Context, query: String): List<LocalFile> {
val results = mutableListOf<LocalFile>()
if (!LauncherPreferences.instance.searchFiles) return results
if (query.isBlank()) return results
if (!PermissionsManager.checkPermission(
context,
PermissionsManager.EXTERNAL_STORAGE
val permissionsManager: PermissionsManager = get()
if (!permissionsManager.checkPermission(
PermissionGroup.ExternalStorage
)
) return results
val uri = MediaStore.Files.getContentUri("external").buildUpon()