Skip to content

Commit 26b0e13

Browse files
authored
Merge pull request #115 from icerockdev/develop
Release 0.18.0
2 parents 1c4c043 + 9881ca8 commit 26b0e13

File tree

21 files changed

+219
-176
lines changed

21 files changed

+219
-176
lines changed

README.md

+6-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
## Requirements
2525
- Gradle version 6.8+
2626
- Android API 16+
27-
- iOS version 11.0+
27+
- iOS version 12.0+
2828

2929
## Installation
3030
root **build.gradle**
@@ -39,12 +39,12 @@ allprojects {
3939
project **build.gradle**
4040
```groovy
4141
dependencies {
42-
commonMainApi("dev.icerock.moko:permissions:0.17.0")
42+
commonMainApi("dev.icerock.moko:permissions:0.18.0")
4343
4444
// compose multiplatform
45-
commonMainApi("dev.icerock.moko:permissions-compose:0.17.0") // permissions api + compose extensions
45+
commonMainApi("dev.icerock.moko:permissions-compose:0.18.0") // permissions api + compose extensions
4646
47-
commonTestImplementation("dev.icerock.moko:permissions-test:0.17.0")
47+
commonTestImplementation("dev.icerock.moko:permissions-test:0.18.0")
4848
}
4949
```
5050

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

99100
// Binds the permissions controller to the activity lifecycle.
100-
viewModel.permissionsController.bind(lifecycle, supportFragmentManager)
101+
viewModel.permissionsController.bind(activity)
101102
}
102103
```
103104

gradle/libs.versions.toml

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
[versions]
2-
kotlinVersion = "1.8.10"
2+
kotlinVersion = "1.9.10"
33
androidAppCompatVersion = "1.6.1"
44
composeMaterialVersion = "1.4.1"
55
composeActivityVersion = "1.7.0"
6+
activityVersion = "1.7.0"
67
materialDesignVersion = "1.8.0"
78
androidLifecycleVersion = "2.2.0"
89
androidCoreTestingVersion = "2.2.0"
910
coroutinesVersion = "1.6.4"
1011
mokoMvvmVersion = "0.16.0"
11-
mokoPermissionsVersion = "0.17.0"
12-
composeJetBrainsVersion = "1.3.1"
12+
mokoPermissionsVersion = "0.18.0"
13+
composeJetBrainsVersion = "1.5.1"
1314
lifecycleRuntime = "2.6.1"
15+
composeUiVersion = "1.0.1"
1416

1517
[libraries]
1618
appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" }
1719
material = { module = "com.google.android.material:material", version.ref = "materialDesignVersion" }
1820
composeMaterial = { module = "androidx.compose.material:material", version.ref = "composeMaterialVersion" }
1921
composeActivity = { module = "androidx.activity:activity-compose", version.ref = "composeActivityVersion" }
22+
activity = { module = "androidx.activity:activity", version.ref = "activityVersion" }
23+
composeUi = { module = "androidx.compose.ui:ui", version.ref = "composeUiVersion" }
2024
lifecycle = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "androidLifecycleVersion" }
2125
lifecycleRuntime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntime" }
2226
coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutinesVersion" }

permissions-compose/build.gradle.kts

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ android {
2121
dependencies {
2222
commonMainApi(projects.permissions)
2323
commonMainApi(compose.runtime)
24-
25-
androidMainImplementation(libs.appCompat)
26-
androidMainImplementation(libs.composeActivity)
24+
androidMainImplementation(libs.activity)
25+
androidMainImplementation(libs.composeUi)
26+
androidMainImplementation(libs.lifecycleRuntime)
2727
}

permissions-compose/src/androidMain/kotlin/dev/icerock/moko/permissions/compose/BindEffect.android.kt

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import androidx.compose.runtime.Composable
99
import androidx.compose.runtime.LaunchedEffect
1010
import androidx.compose.ui.platform.LocalContext
1111
import androidx.compose.ui.platform.LocalLifecycleOwner
12-
import androidx.fragment.app.FragmentActivity
13-
import androidx.fragment.app.FragmentManager
12+
import androidx.activity.ComponentActivity
1413
import androidx.lifecycle.LifecycleOwner
1514
import dev.icerock.moko.permissions.PermissionsController
1615

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

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

26-
permissionsController.bind(lifecycleOwner.lifecycle, fragmentManager)
27+
permissionsController.bind(activity)
2728
}
2829
}

permissions-test/src/androidMain/kotlin/dev/icerock/moko/permissions/test/PermissionsControllerMock.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package dev.icerock.moko.permissions.test
66

7+
import androidx.activity.ComponentActivity
78
import dev.icerock.moko.permissions.Permission
89
import dev.icerock.moko.permissions.PermissionsController
910

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

1516
override fun bind(
16-
lifecycle: androidx.lifecycle.Lifecycle,
17-
fragmentManager: androidx.fragment.app.FragmentManager
17+
activity: ComponentActivity
1818
) {
1919
TODO("Not yet implemented")
2020
}

permissions/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ android {
1515

1616
dependencies {
1717
commonMainImplementation(libs.coroutines)
18-
androidMainImplementation(libs.appCompat)
18+
androidMainImplementation(libs.activity)
1919
androidMainImplementation(libs.lifecycleRuntime)
20-
}
20+
}

permissions/src/androidMain/kotlin/dev/icerock/moko/permissions/PermissionsController.kt

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,21 @@
55
package dev.icerock.moko.permissions
66

77
import android.content.Context
8-
import androidx.fragment.app.FragmentManager
9-
import androidx.lifecycle.Lifecycle
8+
import androidx.activity.ComponentActivity
109

1110
actual interface PermissionsController {
1211
actual suspend fun providePermission(permission: Permission)
1312
actual suspend fun isPermissionGranted(permission: Permission): Boolean
1413
actual suspend fun getPermissionState(permission: Permission): PermissionState
1514
actual fun openAppSettings()
1615

17-
fun bind(lifecycle: Lifecycle, fragmentManager: FragmentManager)
16+
fun bind(activity: ComponentActivity)
1817

1918
companion object {
2019
operator fun invoke(
21-
resolverFragmentTag: String = "PermissionsControllerResolver",
2220
applicationContext: Context
2321
): PermissionsController {
2422
return PermissionsControllerImpl(
25-
resolverFragmentTag = resolverFragmentTag,
2623
applicationContext = applicationContext
2724
)
2825
}

0 commit comments

Comments
 (0)