Hide Google Drive / OneDrive file settings if unavailable

This commit is contained in:
MM20 2023-04-17 18:07:22 +02:00
parent e0515b4432
commit 168ab729a1
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 65 additions and 58 deletions

View File

@ -140,71 +140,75 @@ fun FileSearchSettingsScreen() {
enabled = owncloudAccount != null enabled = owncloudAccount != null
) )
val onedrive by viewModel.onedrive.observeAsState() if (viewModel.microsoftAvailable) {
val microsoftAccount by viewModel.microsoftAccount.observeAsState() val onedrive by viewModel.onedrive.observeAsState()
AnimatedVisibility(microsoftAccount == null) { val microsoftAccount by viewModel.microsoftAccount.observeAsState()
Banner( AnimatedVisibility(microsoftAccount == null) {
text = stringResource(R.string.no_account_microsoft), Banner(
icon = Icons.Rounded.AccountBox, text = stringResource(R.string.no_account_microsoft),
primaryAction = { icon = Icons.Rounded.AccountBox,
TextButton(onClick = { primaryAction = {
viewModel.login( TextButton(onClick = {
context as AppCompatActivity, viewModel.login(
AccountType.Microsoft context as AppCompatActivity,
) AccountType.Microsoft
}) { )
Text( }) {
stringResource(R.string.connect_account), 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() if (viewModel.googleAvailable) {
val googleAccount by viewModel.googleAccount.observeAsState() val gdrive by viewModel.gdrive.observeAsState()
AnimatedVisibility(googleAccount == null) { val googleAccount by viewModel.googleAccount.observeAsState()
Banner( AnimatedVisibility(googleAccount == null) {
text = stringResource(R.string.no_account_google), Banner(
icon = Icons.Rounded.AccountBox, text = stringResource(R.string.no_account_google),
primaryAction = { icon = Icons.Rounded.AccountBox,
TextButton(onClick = { primaryAction = {
viewModel.login( TextButton(onClick = {
context as AppCompatActivity, viewModel.login(
AccountType.Google context as AppCompatActivity,
) AccountType.Google
}) { )
Text( }) {
stringResource(R.string.connect_account), 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
)
} }
} }
} }

View File

@ -30,6 +30,9 @@ class FileSearchSettingsScreenVM : ViewModel(), KoinComponent {
val microsoftAccount = MutableLiveData<Account?>(null) val microsoftAccount = MutableLiveData<Account?>(null)
val googleAccount = MutableLiveData<Account?>(null) val googleAccount = MutableLiveData<Account?>(null)
val microsoftAvailable = accountsRepository.isSupported(AccountType.Microsoft)
val googleAvailable = accountsRepository.isSupported(AccountType.Google)
fun onResume() { fun onResume() {
viewModelScope.launch { viewModelScope.launch {
nextcloudAccount.value = nextcloudAccount.value =