Skip to content

Commit a216eae

Browse files
committed
Add ReadContactPermission to handle read-only contact permissions separately from write permissions.
1 parent d6aded9 commit a216eae

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

permissions-contacts/src/androidMain/kotlin/dev/icerock/moko/permissions/contacts/ContactsPermission.android.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,12 @@ actual val contactsDelegate = object : PermissionDelegate {
1717
Manifest.permission.WRITE_CONTACTS
1818
)
1919
}
20+
21+
actual val readContactsDelegate = object : PermissionDelegate {
22+
override fun getPermissionStateOverride(applicationContext: Context) = null
23+
24+
override fun getPlatformPermission() =
25+
listOf(
26+
Manifest.permission.READ_CONTACTS
27+
)
28+
}

permissions-contacts/src/commonMain/kotlin/dev/icerock/moko/permissions/contacts/ContactPermission.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,28 @@ import dev.icerock.moko.permissions.Permission
88
import dev.icerock.moko.permissions.PermissionDelegate
99

1010
internal expect val contactsDelegate: PermissionDelegate
11+
internal expect val readContactsDelegate: PermissionDelegate
1112

13+
/**
14+
* Permission to read and write contacts.
15+
*
16+
* On Android, declare both `READ_CONTACTS` and `WRITE_CONTACTS` permissions
17+
* in `AndroidManifest.xml`
18+
*/
1219
object ContactPermission : Permission {
1320
override val delegate get() = contactsDelegate
1421
}
1522

23+
/**
24+
* Permission to read contacts
25+
*
26+
* On Android, declare `READ_CONTACTS` permission in `AndroidManifest.xml`
27+
*
28+
* On iOS this permission is the same with [ContactPermission]
29+
*/
30+
object ReadContactPermission : Permission {
31+
override val delegate get() = readContactsDelegate
32+
}
33+
1634
val Permission.Companion.CONTACTS get() = ContactPermission
35+
val Permission.Companion.READ_CONTACTS get() = ReadContactPermission

permissions-contacts/src/iosMain/kotlin/dev/icerock/moko/permissions/contacts/ContactsPermission.ios.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,4 @@ private class ContactsPermissionDelegate(
7676
private const val CNAuthorizationStatusLimited: Long = 4
7777

7878
actual val contactsDelegate: PermissionDelegate = ContactsPermissionDelegate(ContactPermission)
79+
actual val readContactsDelegate: PermissionDelegate = ContactsPermissionDelegate(ReadContactPermission)

0 commit comments

Comments
 (0)