Add contact search switch on contact search settings screen
This commit is contained in:
parent
8ae0c3c10d
commit
a85530de42
@ -5,6 +5,7 @@ import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.Call
|
||||
import androidx.compose.material.icons.rounded.Person
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Modifier
|
||||
@ -24,6 +25,8 @@ fun ContactsSettingsScreen() {
|
||||
val viewModel: ContactsSettingsScreenVM = viewModel()
|
||||
val context = LocalContext.current
|
||||
|
||||
val localContacts by viewModel.localContacts.collectAsStateWithLifecycle(null)
|
||||
val hasContactsPermission by viewModel.hasContactsPermission.collectAsStateWithLifecycle(null)
|
||||
val hasCallPermission by viewModel.hasCallPermission.collectAsStateWithLifecycle(null)
|
||||
val callOnTap by viewModel.callOnTap.collectAsStateWithLifecycle(null)
|
||||
|
||||
@ -31,6 +34,26 @@ fun ContactsSettingsScreen() {
|
||||
title = stringResource(R.string.preference_search_contacts)
|
||||
) {
|
||||
item {
|
||||
PreferenceCategory {
|
||||
AnimatedVisibility(hasContactsPermission == false) {
|
||||
MissingPermissionBanner(
|
||||
text = stringResource(R.string.missing_permission_contact_search_settings),
|
||||
onClick = {
|
||||
viewModel.requestContactsPermission(context as AppCompatActivity)
|
||||
},
|
||||
modifier = Modifier.padding(16.dp)
|
||||
)
|
||||
}
|
||||
SwitchPreference(
|
||||
title = stringResource(R.string.preference_search_contacts),
|
||||
summary = stringResource(R.string.preference_search_contacts_summary),
|
||||
icon = Icons.Rounded.Person,
|
||||
value = localContacts == true,
|
||||
onValueChanged = {
|
||||
viewModel.setLocalContacts(it)
|
||||
}
|
||||
)
|
||||
}
|
||||
PreferenceCategory {
|
||||
AnimatedVisibility(hasCallPermission == false) {
|
||||
MissingPermissionBanner(
|
||||
|
||||
@ -27,4 +27,17 @@ class ContactsSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
|
||||
fun setCallOnTap(callOnTap: Boolean) =
|
||||
settings.setCallOnTap(callOnTap)
|
||||
|
||||
val hasContactsPermission = permissionsManager.hasPermission(PermissionGroup.Contacts)
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
fun requestContactsPermission(activity: AppCompatActivity) {
|
||||
permissionsManager.requestPermission(activity, PermissionGroup.Contacts)
|
||||
}
|
||||
|
||||
val localContacts = settings.enabled
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
|
||||
fun setLocalContacts(enabled: Boolean) {
|
||||
settings.setEnabled(enabled)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user