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
)
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
)
}
}
}

View File

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