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.foundation.layout.padding
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.rounded.Call
|
import androidx.compose.material.icons.rounded.Call
|
||||||
|
import androidx.compose.material.icons.rounded.Person
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@ -24,6 +25,8 @@ fun ContactsSettingsScreen() {
|
|||||||
val viewModel: ContactsSettingsScreenVM = viewModel()
|
val viewModel: ContactsSettingsScreenVM = viewModel()
|
||||||
val context = LocalContext.current
|
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 hasCallPermission by viewModel.hasCallPermission.collectAsStateWithLifecycle(null)
|
||||||
val callOnTap by viewModel.callOnTap.collectAsStateWithLifecycle(null)
|
val callOnTap by viewModel.callOnTap.collectAsStateWithLifecycle(null)
|
||||||
|
|
||||||
@ -31,6 +34,26 @@ fun ContactsSettingsScreen() {
|
|||||||
title = stringResource(R.string.preference_search_contacts)
|
title = stringResource(R.string.preference_search_contacts)
|
||||||
) {
|
) {
|
||||||
item {
|
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 {
|
PreferenceCategory {
|
||||||
AnimatedVisibility(hasCallPermission == false) {
|
AnimatedVisibility(hasCallPermission == false) {
|
||||||
MissingPermissionBanner(
|
MissingPermissionBanner(
|
||||||
|
|||||||
@ -27,4 +27,17 @@ class ContactsSettingsScreenVM : ViewModel(), KoinComponent {
|
|||||||
|
|
||||||
fun setCallOnTap(callOnTap: Boolean) =
|
fun setCallOnTap(callOnTap: Boolean) =
|
||||||
settings.setCallOnTap(callOnTap)
|
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