From 168ab729a1bf01855fbc54fbe29793713c50345f Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 17 Apr 2023 18:07:22 +0200 Subject: [PATCH] Hide Google Drive / OneDrive file settings if unavailable --- .../filesearch/FileSearchSettingsScreen.kt | 120 +++++++++--------- .../filesearch/FileSearchSettingsScreenVM.kt | 3 + 2 files changed, 65 insertions(+), 58 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreen.kt index 7fc96986..3efe7ab9 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreen.kt @@ -140,71 +140,75 @@ fun FileSearchSettingsScreen() { enabled = owncloudAccount != null ) - val onedrive by viewModel.onedrive.observeAsState() - val microsoftAccount by viewModel.microsoftAccount.observeAsState() - AnimatedVisibility(microsoftAccount == null) { - Banner( - text = stringResource(R.string.no_account_microsoft), - icon = Icons.Rounded.AccountBox, - primaryAction = { - TextButton(onClick = { - viewModel.login( - context as AppCompatActivity, - AccountType.Microsoft - ) - }) { - Text( - stringResource(R.string.connect_account), - ) - } + if (viewModel.microsoftAvailable) { + val onedrive by viewModel.onedrive.observeAsState() + val microsoftAccount by viewModel.microsoftAccount.observeAsState() + AnimatedVisibility(microsoftAccount == null) { + Banner( + text = stringResource(R.string.no_account_microsoft), + icon = Icons.Rounded.AccountBox, + primaryAction = { + TextButton(onClick = { + viewModel.login( + context as AppCompatActivity, + AccountType.Microsoft + ) + }) { + Text( + stringResource(R.string.connect_account), + ) + } + }, + modifier = Modifier.padding(16.dp) + ) + } + SwitchPreference( + title = stringResource(R.string.preference_search_onedrive), + summary = microsoftAccount?.let { + stringResource(R.string.preference_search_onedrive_summary, it.userName) + } ?: stringResource(R.string.preference_summary_not_logged_in), + value = onedrive == true && microsoftAccount != null, + onValueChanged = { + viewModel.setOneDrive(it) }, - modifier = Modifier.padding(16.dp) + enabled = microsoftAccount != null ) } - SwitchPreference( - title = stringResource(R.string.preference_search_onedrive), - summary = microsoftAccount?.let { - stringResource(R.string.preference_search_onedrive_summary, it.userName) - } ?: stringResource(R.string.preference_summary_not_logged_in), - value = onedrive == true && microsoftAccount != null, - onValueChanged = { - viewModel.setOneDrive(it) - }, - enabled = microsoftAccount != null - ) - val gdrive by viewModel.gdrive.observeAsState() - val googleAccount by viewModel.googleAccount.observeAsState() - AnimatedVisibility(googleAccount == null) { - Banner( - text = stringResource(R.string.no_account_google), - icon = Icons.Rounded.AccountBox, - primaryAction = { - TextButton(onClick = { - viewModel.login( - context as AppCompatActivity, - AccountType.Google - ) - }) { - Text( - stringResource(R.string.connect_account), - ) - } + if (viewModel.googleAvailable) { + val gdrive by viewModel.gdrive.observeAsState() + val googleAccount by viewModel.googleAccount.observeAsState() + AnimatedVisibility(googleAccount == null) { + Banner( + text = stringResource(R.string.no_account_google), + icon = Icons.Rounded.AccountBox, + primaryAction = { + TextButton(onClick = { + viewModel.login( + context as AppCompatActivity, + AccountType.Google + ) + }) { + Text( + stringResource(R.string.connect_account), + ) + } + }, + modifier = Modifier.padding(16.dp) + ) + } + SwitchPreference( + title = stringResource(R.string.preference_search_gdrive), + summary = googleAccount?.let { + stringResource(R.string.preference_search_gdrive_summary, it.userName) + } ?: stringResource(R.string.preference_summary_not_logged_in), + value = gdrive == true && googleAccount != null, + onValueChanged = { + viewModel.setGdrive(it) }, - modifier = Modifier.padding(16.dp) + enabled = googleAccount != null ) } - SwitchPreference( - title = stringResource(R.string.preference_search_gdrive), - summary = googleAccount?.let { - stringResource(R.string.preference_search_gdrive_summary, it.userName) - } ?: stringResource(R.string.preference_summary_not_logged_in), - value = gdrive == true && googleAccount != null, - onValueChanged = { - viewModel.setGdrive(it) - }, - enabled = googleAccount != null - ) } } } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreenVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreenVM.kt index a05b2592..078c1846 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreenVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/filesearch/FileSearchSettingsScreenVM.kt @@ -30,6 +30,9 @@ class FileSearchSettingsScreenVM : ViewModel(), KoinComponent { val microsoftAccount = MutableLiveData(null) val googleAccount = MutableLiveData(null) + val microsoftAvailable = accountsRepository.isSupported(AccountType.Microsoft) + val googleAvailable = accountsRepository.isSupported(AccountType.Google) + fun onResume() { viewModelScope.launch { nextcloudAccount.value =