Implement custom permission system for plugins

This commit is contained in:
MM20
2023-12-18 16:51:48 +01:00
parent 1c542f38ba
commit cb7f6b6693
20 changed files with 294 additions and 126 deletions
@@ -64,7 +64,6 @@ enum class PermissionGroup {
Notifications,
AppShortcuts,
Accessibility,
Plugins,
}
internal class PermissionsManagerImpl(
@@ -85,9 +84,6 @@ internal class PermissionsManagerImpl(
private val locationPermissionState = MutableStateFlow(
checkPermissionOnce(PermissionGroup.Location)
)
private val pluginsPermissionState = MutableStateFlow(
checkPermissionOnce(PermissionGroup.Plugins)
)
private val notificationsPermissionState = MutableStateFlow(false)
private val accessibilityPermissionState = MutableStateFlow(false)
private val appShortcutsPermissionState = MutableStateFlow(
@@ -158,14 +154,6 @@ internal class PermissionsManagerImpl(
CrashReporter.logException(e)
}
}
PermissionGroup.Plugins -> {
ActivityCompat.requestPermissions(
context,
pluginPermissions,
permissionGroup.ordinal
)
}
}
}
@@ -183,10 +171,6 @@ internal class PermissionsManagerImpl(
contactPermissions.all { context.checkPermission(it) }
}
PermissionGroup.Plugins -> {
pluginPermissions.all { context.checkPermission(it) }
}
PermissionGroup.ExternalStorage -> {
if (isAtLeastApiLevel(Build.VERSION_CODES.R)) {
Environment.isExternalStorageManager()
@@ -218,7 +202,6 @@ internal class PermissionsManagerImpl(
PermissionGroup.Notifications -> notificationsPermissionState
PermissionGroup.AppShortcuts -> appShortcutsPermissionState
PermissionGroup.Accessibility -> accessibilityPermissionState
PermissionGroup.Plugins -> pluginsPermissionState
}
}
@@ -237,7 +220,6 @@ internal class PermissionsManagerImpl(
PermissionGroup.Notifications -> notificationsPermissionState.value = granted
PermissionGroup.AppShortcuts -> appShortcutsPermissionState.value = granted
PermissionGroup.Accessibility -> accessibilityPermissionState.value = granted
PermissionGroup.Plugins -> pluginsPermissionState.value = granted
}
}
@@ -280,6 +262,5 @@ internal class PermissionsManagerImpl(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
private val pluginPermissions = arrayOf(PluginContract.Permission)
}
}