Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.18.0 #115

Merged
merged 13 commits into from
Apr 19, 2024
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
## Requirements
- Gradle version 6.8+
- Android API 16+
- iOS version 11.0+
- iOS version 12.0+

## Installation
root **build.gradle**
Expand All @@ -39,12 +39,12 @@ allprojects {
project **build.gradle**
```groovy
dependencies {
commonMainApi("dev.icerock.moko:permissions:0.17.0")
commonMainApi("dev.icerock.moko:permissions:0.18.0")
// compose multiplatform
commonMainApi("dev.icerock.moko:permissions-compose:0.17.0") // permissions api + compose extensions
commonMainApi("dev.icerock.moko:permissions-compose:0.18.0") // permissions api + compose extensions
commonTestImplementation("dev.icerock.moko:permissions-test:0.17.0")
commonTestImplementation("dev.icerock.moko:permissions-test:0.18.0")
}
```

Expand All @@ -58,6 +58,7 @@ The full list can be found in `dev.icerock.moko.permissions.Permission` enum.
* Storage write: **Permission.WRITE_STORAGE**
* Fine location: **Permission.LOCATION**
* Coarse location: **Permission.COARSE_LOCATION**
* Background location: **Permission.BACKGROUND_LOCATION**
* Remote notifications: **Permission.REMOTE_NOTIFICATION**
* Audio recording: **Permission.RECORD_AUDIO**
* Bluetooth LE: **Permission.BLUETOOTH_LE**
Expand Down Expand Up @@ -97,7 +98,7 @@ override fun onCreate(savedInstanceState: Bundle?) {
}

// Binds the permissions controller to the activity lifecycle.
viewModel.permissionsController.bind(lifecycle, supportFragmentManager)
viewModel.permissionsController.bind(activity)
}
```

Expand Down
10 changes: 7 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
[versions]
kotlinVersion = "1.8.10"
kotlinVersion = "1.9.10"
androidAppCompatVersion = "1.6.1"
composeMaterialVersion = "1.4.1"
composeActivityVersion = "1.7.0"
activityVersion = "1.7.0"
materialDesignVersion = "1.8.0"
androidLifecycleVersion = "2.2.0"
androidCoreTestingVersion = "2.2.0"
coroutinesVersion = "1.6.4"
mokoMvvmVersion = "0.16.0"
mokoPermissionsVersion = "0.17.0"
composeJetBrainsVersion = "1.3.1"
mokoPermissionsVersion = "0.18.0"
composeJetBrainsVersion = "1.5.1"
lifecycleRuntime = "2.6.1"
composeUiVersion = "1.0.1"

[libraries]
appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" }
material = { module = "com.google.android.material:material", version.ref = "materialDesignVersion" }
composeMaterial = { module = "androidx.compose.material:material", version.ref = "composeMaterialVersion" }
composeActivity = { module = "androidx.activity:activity-compose", version.ref = "composeActivityVersion" }
activity = { module = "androidx.activity:activity", version.ref = "activityVersion" }
composeUi = { module = "androidx.compose.ui:ui", version.ref = "composeUiVersion" }
lifecycle = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "androidLifecycleVersion" }
lifecycleRuntime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntime" }
coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutinesVersion" }
Expand Down
6 changes: 3 additions & 3 deletions permissions-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ android {
dependencies {
commonMainApi(projects.permissions)
commonMainApi(compose.runtime)

androidMainImplementation(libs.appCompat)
androidMainImplementation(libs.composeActivity)
androidMainImplementation(libs.activity)
androidMainImplementation(libs.composeUi)
androidMainImplementation(libs.lifecycleRuntime)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.activity.ComponentActivity
import androidx.lifecycle.LifecycleOwner
import dev.icerock.moko.permissions.PermissionsController

Expand All @@ -21,8 +20,10 @@ actual fun BindEffect(permissionsController: PermissionsController) {
val context: Context = LocalContext.current

LaunchedEffect(permissionsController, lifecycleOwner, context) {
val fragmentManager: FragmentManager = (context as FragmentActivity).supportFragmentManager
val activity: ComponentActivity = checkNotNull(context as? ComponentActivity) {
"$context context is not instance of ComponentActivity"
}

permissionsController.bind(lifecycleOwner.lifecycle, fragmentManager)
permissionsController.bind(activity)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package dev.icerock.moko.permissions.test

import androidx.activity.ComponentActivity
import dev.icerock.moko.permissions.Permission
import dev.icerock.moko.permissions.PermissionsController

Expand All @@ -13,8 +14,7 @@ actual abstract class PermissionsControllerMock : PermissionsController {
actual abstract override suspend fun isPermissionGranted(permission: Permission): Boolean

override fun bind(
lifecycle: androidx.lifecycle.Lifecycle,
fragmentManager: androidx.fragment.app.FragmentManager
activity: ComponentActivity
) {
TODO("Not yet implemented")
}
Expand Down
4 changes: 2 additions & 2 deletions permissions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ android {

dependencies {
commonMainImplementation(libs.coroutines)
androidMainImplementation(libs.appCompat)
androidMainImplementation(libs.activity)
androidMainImplementation(libs.lifecycleRuntime)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,21 @@
package dev.icerock.moko.permissions

import android.content.Context
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle
import androidx.activity.ComponentActivity

actual interface PermissionsController {
actual suspend fun providePermission(permission: Permission)
actual suspend fun isPermissionGranted(permission: Permission): Boolean
actual suspend fun getPermissionState(permission: Permission): PermissionState
actual fun openAppSettings()

fun bind(lifecycle: Lifecycle, fragmentManager: FragmentManager)
fun bind(activity: ComponentActivity)

companion object {
operator fun invoke(
resolverFragmentTag: String = "PermissionsControllerResolver",
applicationContext: Context
): PermissionsController {
return PermissionsControllerImpl(
resolverFragmentTag = resolverFragmentTag,
applicationContext = applicationContext
)
}
Expand Down
Loading
Loading