Skip to content

Commit

Permalink
Allow specifying the PermissionStatus for a preview
Browse files Browse the repository at this point in the history
  • Loading branch information
eygraber committed Dec 2, 2024
1 parent 9dd0e2b commit 38d94a0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@ import androidx.compose.ui.util.fastMap
@Composable
public fun rememberMultiplePermissionsState(
permissions: List<String>,
onPermissionsResult: (Map<String, Boolean>) -> Unit = {}
onPermissionsResult: (Map<String, Boolean>) -> Unit = {},
permissionStatuses: Map<String, PermissionStatus> = emptyMap()
): MultiplePermissionsState {
return when {
LocalInspectionMode.current -> PreviewMultiplePermissionsState(permissions)
LocalInspectionMode.current ->
PreviewMultiplePermissionsState(permissions, permissionStatuses)
else -> rememberMutableMultiplePermissionsState(permissions, onPermissionsResult)
}
}
Expand Down Expand Up @@ -93,9 +95,16 @@ public interface MultiplePermissionsState {
@OptIn(ExperimentalPermissionsApi::class)
@Immutable
private class PreviewMultiplePermissionsState(
permissions: List<String>
permissions: List<String>,
permissionStatuses: Map<String, PermissionStatus>
) : MultiplePermissionsState {
override val permissions: List<PermissionState> = permissions.fastMap(::PreviewPermissionState)
override val permissions: List<PermissionState> = permissions.fastMap { permission ->
PreviewPermissionState(
permission = permission,
status = permissionStatuses[permission] ?: PermissionStatus.Granted,
)
}

override val revokedPermissions: List<PermissionState> = emptyList()
override val allPermissionsGranted: Boolean = false
override val shouldShowRationale: Boolean = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,11 @@ import androidx.compose.ui.platform.LocalInspectionMode
@Composable
public fun rememberPermissionState(
permission: String,
onPermissionResult: (Boolean) -> Unit = {}
onPermissionResult: (Boolean) -> Unit = {},
previewPermissionStatus: PermissionStatus = PermissionStatus.Granted
): PermissionState {
return when {
LocalInspectionMode.current -> PreviewPermissionState(permission)
LocalInspectionMode.current -> PreviewPermissionState(permission, previewPermissionStatus)
else -> rememberMutablePermissionState(permission, onPermissionResult)
}
}
Expand Down Expand Up @@ -83,7 +84,7 @@ public interface PermissionState {
@Immutable
internal class PreviewPermissionState(
override val permission: String,
override val status: PermissionStatus = PermissionStatus.Granted
override val status: PermissionStatus
) : PermissionState {
override fun launchPermissionRequest() {}
}

0 comments on commit 38d94a0

Please sign in to comment.