Loading app/src/main/java/at/bitfire/davdroid/MailAccountSyncHelper.kt +3 −2 Original line number Diff line number Diff line /* * Copyright MURENA SAS 2022 * Copyright ECORP SAS 2022 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -26,13 +27,13 @@ object MailAccountSyncHelper { private const val MAIL_RECEIVER_CLASS = "com.fsck.k9.account.AccountSyncReceiver" private const val ACTION_PREFIX = "foundation.e.accountmanager.account." fun accountLoggedIn(applicationContext : Context?) { fun onAccountLoggedIn(applicationContext : Context?) { val intent = getIntent() intent.action = ACTION_PREFIX + "create" applicationContext?.sendBroadcast(intent) } fun accountLoggedOut(applicationContext: Context?, email: String?) { fun onAccountLoggedOut(applicationContext: Context?, email: String?) { email?.let { if (!it.contains("@")) { return@let Loading app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.kt +2 −2 Original line number Diff line number Diff line Loading @@ -259,7 +259,7 @@ open class LocalAddressBook( try { if (it.result) { Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(context.applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(context.applicationContext, email) } } } catch (e: Exception) { Loading @@ -273,7 +273,7 @@ open class LocalAddressBook( try { if (it.result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) { Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(context.applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(context.applicationContext, email) } } } catch (e: Exception) { Loading app/src/main/java/at/bitfire/davdroid/syncadapter/GoogleAccountAuthenticatorService.kt +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.Service import android.content.Context import android.content.Intent import android.os.Bundle import android.util.Log import at.bitfire.davdroid.R import at.bitfire.davdroid.db.AppDatabase import at.bitfire.davdroid.log.Logger Loading Loading @@ -139,6 +140,12 @@ class GoogleAccountAuthenticatorService : Service(), OnAccountsUpdateListener { LoginActivity.SETUP_ACCOUNT_PROVIDER_TYPE, LoginActivity.ACCOUNT_PROVIDER_GOOGLE ) options?.let { intent.putExtra(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH, it.getString(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH)) intent.putExtra(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH, it.getString(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH)) } val bundle = Bundle(1) bundle.putParcelable(AccountManager.KEY_INTENT, intent) return bundle Loading app/src/main/java/at/bitfire/davdroid/ui/account/AccountActivity.kt +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ class AccountActivity: AppCompatActivity() { try { if (future.result) Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(applicationContext, email) finish() } } catch (e: Exception) { Loading @@ -154,7 +154,7 @@ class AccountActivity: AppCompatActivity() { try { if (future.result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(applicationContext, email) finish() } } catch (e: Exception) { Loading app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.kt +22 −2 Original line number Diff line number Diff line Loading @@ -8,12 +8,14 @@ import android.accounts.Account import android.accounts.AccountAuthenticatorResponse import android.accounts.AccountManager import android.app.Activity import android.content.ComponentName import android.content.ContentResolver import android.content.Context import android.content.Intent import android.os.Bundle import android.provider.CalendarContract import android.text.Editable import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup Loading @@ -38,7 +40,6 @@ import at.bitfire.davdroid.resource.TaskUtils import at.bitfire.davdroid.settings.AccountSettings import at.bitfire.davdroid.settings.SettingsManager import at.bitfire.davdroid.syncadapter.AccountUtils import at.bitfire.davdroid.ui.account.AccountActivity import at.bitfire.vcard4android.GroupMethod import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint Loading Loading @@ -154,7 +155,6 @@ class AccountDetailsFragment : Fragment() { ).observe(viewLifecycleOwner, Observer { success -> if (success) { Toast.makeText(context, R.string.message_account_added_successfully, Toast.LENGTH_LONG).show() MailAccountSyncHelper.accountLoggedIn(context?.applicationContext) requireActivity().setResult(Activity.RESULT_OK) requireActivity().finish() Loading @@ -174,6 +174,8 @@ class AccountDetailsFragment : Fragment() { intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, getString(R.string.eelo_account_type)) requireActivity().startService(intent) } handlePostAuthOperations() } }) } Loading @@ -182,6 +184,24 @@ class AccountDetailsFragment : Fragment() { return v.root } private fun handlePostAuthOperations() { val packageToBeOpened = requireActivity().intent.getStringExtra(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH) val activityToBeOpened = requireActivity().intent.getStringExtra(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH) openApp(packageToBeOpened, activityToBeOpened) MailAccountSyncHelper.onAccountLoggedIn(context?.applicationContext) } private fun openApp(packageToBeOpened: String?, activityToBeOpened: String?) { if (!TextUtils.isEmpty(packageToBeOpened) && !TextUtils.isEmpty(activityToBeOpened)) { val intent = Intent(Intent.ACTION_MAIN) intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) intent.component = ComponentName(packageToBeOpened!!, activityToBeOpened!!) requireActivity().applicationContext.startActivity(intent) } } @HiltViewModel class AccountDetailsModel @Inject constructor( Loading Loading
app/src/main/java/at/bitfire/davdroid/MailAccountSyncHelper.kt +3 −2 Original line number Diff line number Diff line /* * Copyright MURENA SAS 2022 * Copyright ECORP SAS 2022 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -26,13 +27,13 @@ object MailAccountSyncHelper { private const val MAIL_RECEIVER_CLASS = "com.fsck.k9.account.AccountSyncReceiver" private const val ACTION_PREFIX = "foundation.e.accountmanager.account." fun accountLoggedIn(applicationContext : Context?) { fun onAccountLoggedIn(applicationContext : Context?) { val intent = getIntent() intent.action = ACTION_PREFIX + "create" applicationContext?.sendBroadcast(intent) } fun accountLoggedOut(applicationContext: Context?, email: String?) { fun onAccountLoggedOut(applicationContext: Context?, email: String?) { email?.let { if (!it.contains("@")) { return@let Loading
app/src/main/java/at/bitfire/davdroid/resource/LocalAddressBook.kt +2 −2 Original line number Diff line number Diff line Loading @@ -259,7 +259,7 @@ open class LocalAddressBook( try { if (it.result) { Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(context.applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(context.applicationContext, email) } } } catch (e: Exception) { Loading @@ -273,7 +273,7 @@ open class LocalAddressBook( try { if (it.result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) { Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(context.applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(context.applicationContext, email) } } } catch (e: Exception) { Loading
app/src/main/java/at/bitfire/davdroid/syncadapter/GoogleAccountAuthenticatorService.kt +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.Service import android.content.Context import android.content.Intent import android.os.Bundle import android.util.Log import at.bitfire.davdroid.R import at.bitfire.davdroid.db.AppDatabase import at.bitfire.davdroid.log.Logger Loading Loading @@ -139,6 +140,12 @@ class GoogleAccountAuthenticatorService : Service(), OnAccountsUpdateListener { LoginActivity.SETUP_ACCOUNT_PROVIDER_TYPE, LoginActivity.ACCOUNT_PROVIDER_GOOGLE ) options?.let { intent.putExtra(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH, it.getString(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH)) intent.putExtra(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH, it.getString(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH)) } val bundle = Bundle(1) bundle.putParcelable(AccountManager.KEY_INTENT, intent) return bundle Loading
app/src/main/java/at/bitfire/davdroid/ui/account/AccountActivity.kt +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ class AccountActivity: AppCompatActivity() { try { if (future.result) Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(applicationContext, email) finish() } } catch (e: Exception) { Loading @@ -154,7 +154,7 @@ class AccountActivity: AppCompatActivity() { try { if (future.result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) Handler(Looper.getMainLooper()).post { MailAccountSyncHelper.accountLoggedOut(applicationContext, email) MailAccountSyncHelper.onAccountLoggedOut(applicationContext, email) finish() } } catch (e: Exception) { Loading
app/src/main/java/at/bitfire/davdroid/ui/setup/AccountDetailsFragment.kt +22 −2 Original line number Diff line number Diff line Loading @@ -8,12 +8,14 @@ import android.accounts.Account import android.accounts.AccountAuthenticatorResponse import android.accounts.AccountManager import android.app.Activity import android.content.ComponentName import android.content.ContentResolver import android.content.Context import android.content.Intent import android.os.Bundle import android.provider.CalendarContract import android.text.Editable import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup Loading @@ -38,7 +40,6 @@ import at.bitfire.davdroid.resource.TaskUtils import at.bitfire.davdroid.settings.AccountSettings import at.bitfire.davdroid.settings.SettingsManager import at.bitfire.davdroid.syncadapter.AccountUtils import at.bitfire.davdroid.ui.account.AccountActivity import at.bitfire.vcard4android.GroupMethod import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint Loading Loading @@ -154,7 +155,6 @@ class AccountDetailsFragment : Fragment() { ).observe(viewLifecycleOwner, Observer { success -> if (success) { Toast.makeText(context, R.string.message_account_added_successfully, Toast.LENGTH_LONG).show() MailAccountSyncHelper.accountLoggedIn(context?.applicationContext) requireActivity().setResult(Activity.RESULT_OK) requireActivity().finish() Loading @@ -174,6 +174,8 @@ class AccountDetailsFragment : Fragment() { intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, getString(R.string.eelo_account_type)) requireActivity().startService(intent) } handlePostAuthOperations() } }) } Loading @@ -182,6 +184,24 @@ class AccountDetailsFragment : Fragment() { return v.root } private fun handlePostAuthOperations() { val packageToBeOpened = requireActivity().intent.getStringExtra(LoginActivity.OPEN_APP_PACKAGE_AFTER_AUTH) val activityToBeOpened = requireActivity().intent.getStringExtra(LoginActivity.OPEN_APP_ACTIVITY_AFTER_AUTH) openApp(packageToBeOpened, activityToBeOpened) MailAccountSyncHelper.onAccountLoggedIn(context?.applicationContext) } private fun openApp(packageToBeOpened: String?, activityToBeOpened: String?) { if (!TextUtils.isEmpty(packageToBeOpened) && !TextUtils.isEmpty(activityToBeOpened)) { val intent = Intent(Intent.ACTION_MAIN) intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) intent.component = ComponentName(packageToBeOpened!!, activityToBeOpened!!) requireActivity().applicationContext.startActivity(intent) } } @HiltViewModel class AccountDetailsModel @Inject constructor( Loading