Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 114e686a authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Merge branch '3939-a15-redirect-towards-microG-wizard' into 'main'

fix: redirect towards microG wizard

See merge request !694
parents 1b2f63cd aa305aae
Loading
Loading
Loading
Loading
Loading
+44 −3
Original line number Diff line number Diff line
@@ -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)
            )
        }
    }
}