From aa305aaeec68218a1c26326134f8ab8c5be1f830 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Mon, 23 Feb 2026 09:40:04 +0100 Subject: [PATCH] fix: redirect towards microG wizard in case there is no Google account at all in microG --- .../e/apps/ui/setup/signin/SignInFragment.kt | 47 +++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt index 302381ae6..9febd6706 100644 --- a/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/SignInFragment.kt @@ -132,6 +132,7 @@ class SignInFragment : Fragment(R.layout.fragment_sign_in) { getString(R.string.sign_in_google_applounge_only), getString(R.string.sign_in_google_system_wide) ) + MaterialAlertDialogBuilder(requireContext()) .setTitle(getString(R.string.sign_in_google_choice_title)) .setItems(options) { dialog, which -> @@ -145,15 +146,24 @@ class SignInFragment : Fragment(R.layout.fragment_sign_in) { } private fun startSystemWideGoogleLogin() { - val hasMicrog = MicrogSupportChecker.hasSupportedMicrog(requireContext()) && - viewModel.hasMicrogAccount() - if (!hasMicrog) { + val hasMicrogSupport = MicrogSupportChecker.hasSupportedMicrog(requireContext()) + if (!hasMicrogSupport) { showMicrogDialog( isSuccess = false, message = getString(R.string.sign_in_microg_not_available) ) return } + + if (!viewModel.hasMicrogAccount()) { + startMicrogSignInWizard() + return + } + + launchAccountPicker() + } + + private fun launchAccountPicker() { val intent = AccountManager.newChooseAccountIntent( null, null, @@ -163,6 +173,37 @@ class SignInFragment : Fragment(R.layout.fragment_sign_in) { null, null ) + accountPickerLauncher.launch(intent) } + + private fun startMicrogSignInWizard() { + AccountManager.get(requireContext()).addAccount( + MicrogCertUtil.GOOGLE_ACCOUNT_TYPE, + null, + null, + null, + requireActivity(), + { onMicrogAccountAdded() }, + null + ) + } + + private fun onMicrogAccountAdded() { + if (!isAdded) { + return + } + + requireActivity().runOnUiThread { + if (viewModel.hasMicrogAccount()) { + launchAccountPicker() + return@runOnUiThread + } + + showMicrogDialog( + isSuccess = false, + message = getString(R.string.sign_in_microg_no_account) + ) + } + } } -- GitLab