Add preferences for app shortcut search

This commit is contained in:
MM20
2022-03-21 14:58:14 +01:00
parent a4a562e335
commit d6ebbd193a
10 changed files with 129 additions and 41 deletions
@@ -94,6 +94,28 @@ fun SearchSettingsScreen() {
enabled = hasCalendarPermission == true
)
val hasAppShortcutsPermission by viewModel.hasAppShortcutPermission.observeAsState()
AnimatedVisibility(hasAppShortcutsPermission == false) {
MissingPermissionBanner(
text = stringResource(R.string.missing_permission_appshortcuts_search_settings, stringResource(R.string.app_name)),
onClick = {
viewModel.requestAppShortcutsPermission(context as AppCompatActivity)
},
modifier = Modifier.padding(16.dp)
)
}
val appShortcuts by viewModel.appShortcuts.observeAsState()
SwitchPreference(
title = stringResource(R.string.preference_search_appshortcuts),
summary = stringResource(R.string.preference_search_appshortcuts_summary),
icon = Icons.Rounded.AppShortcut,
value = appShortcuts == true && hasAppShortcutsPermission == true,
onValueChanged = {
viewModel.setAppShortcuts(it)
},
enabled = hasAppShortcutsPermission == true
)
val calculator by viewModel.calculator.observeAsState()
SwitchPreference(
title = stringResource(R.string.preference_search_calculator),
@@ -150,4 +150,23 @@ class SearchSettingsScreenVM : ViewModel(), KoinComponent {
}
}
}
val hasAppShortcutPermission = permissionsManager.hasPermission(PermissionGroup.AppShortcuts).asLiveData()
val appShortcuts = dataStore.data.map { it.appShortcutSearch.enabled }.asLiveData()
fun setAppShortcuts(appShortcuts: Boolean) {
viewModelScope.launch {
dataStore.updateData {
it.toBuilder()
.setAppShortcutSearch(
it.appShortcutSearch.toBuilder()
.setEnabled(appShortcuts)
)
.build()
}
}
}
fun requestAppShortcutsPermission(activity: AppCompatActivity) {
permissionsManager.requestPermission(activity, PermissionGroup.AppShortcuts)
}
}