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

Commit 8d351e42 authored by Michael Enoma's avatar Michael Enoma 👽
Browse files

(Matt)Import e accounts from account manager

parent 3e4b4ac9
Loading
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
package com.fsck.k9

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import com.fsck.k9.ui.changelog.ChangeLogMode
import com.fsck.k9.ui.changelog.ChangelogViewModel
import com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity
import com.fsck.k9.ui.endtoend.AutocryptKeyTransferPresenter
import com.fsck.k9.ui.folders.FolderNameFormatter
import com.fsck.k9.ui.helper.SizeFormatter
import com.fsck.k9.ui.helper.SizeFormatter
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
+2 −1
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources>

    <style name="ToolbarTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
    <style name="ToolbarTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
     <!--   <item name="colorControlNormal">@lineageos.platform:color/color_default_accent</item>-->
        <item name="colorControlNormal">@lineageos.platform:color/color_default_accent</item>
    </style>
    </style>
</resources>
</resources>
 No newline at end of file
+9 −0
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.fsck.k9.ui">
    package="com.fsck.k9.ui">


    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission
        android:name="android.permission.AUTHENTICATE_ACCOUNTS"
        android:maxSdkVersion="22" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <queries>
    <queries>
        <intent>
        <intent>
            <!-- Used to check whether to display the "Add from Contacts" menu item in the compose screen -->
            <!-- Used to check whether to display the "Add from Contacts" menu item in the compose screen -->
+75 −1
Original line number Original line Diff line number Diff line
package com.fsck.k9.activity
package com.fsck.k9.activity


import android.annotation.SuppressLint
import android.annotation.SuppressLint
import android.accounts.AccountManager
import android.app.SearchManager
import android.app.SearchManager
import android.content.Context
import android.content.Context
import android.content.Intent
import android.content.Intent
@@ -8,6 +9,11 @@ import android.content.IntentSender
import android.content.res.Configuration
import android.content.res.Configuration
import android.graphics.Color
import android.graphics.Color
import android.os.Bundle
import android.os.Bundle
import com.fsck.k9.activity.setup.accountmanager.AccountManagerConstants.ACCOUNT_EMAIL_ADDRESS_KEY
import com.fsck.k9.activity.setup.accountmanager.AccountManagerConstants.EELO_ACCOUNT_TYPE
import com.fsck.k9.activity.setup.accountmanager.AccountManagerConstants.GOOGLE_ACCOUNT_TYPE
import com.fsck.k9.activity.setup.accountmanager.EeloAccountCreator
import com.fsck.k9.helper.EmailHelper
import android.os.Parcelable
import android.os.Parcelable
import android.view.KeyEvent
import android.view.KeyEvent
import android.view.Menu
import android.view.Menu
@@ -126,6 +132,9 @@ open class MessageList :
     */
     */
    private var messageListWasDisplayed = false
    private var messageListWasDisplayed = false
    private var viewSwitcher: ViewSwitcher? = null
    private var viewSwitcher: ViewSwitcher? = null

    private lateinit var accountManager: AccountManager

    private lateinit var recentChangesSnackbar: Snackbar
    private lateinit var recentChangesSnackbar: Snackbar


    public override fun onCreate(savedInstanceState: Bundle?) {
    public override fun onCreate(savedInstanceState: Bundle?) {
@@ -141,8 +150,16 @@ open class MessageList :
            return
            return
        }
        }


        val accounts = preferences.accounts
        var accounts = preferences.accounts
        deleteIncompleteAccounts(accounts)
        deleteIncompleteAccounts(accounts)

        accountManager = AccountManager.get(this)

// TODO remove old accounts automatically
        if (addNewAccountsAutomatically(accounts)) {
            accounts = preferences.accounts
        }

        val hasAccountSetup = accounts.any { it.isFinishedSetup }
        val hasAccountSetup = accounts.any { it.isFinishedSetup }
        if (!hasAccountSetup) {
        if (!hasAccountSetup) {
            AccountSetupBasics.actionNewAccount(this)
            AccountSetupBasics.actionNewAccount(this)
@@ -1597,6 +1614,63 @@ open class MessageList :
        val noThreading: Boolean = false
        val noThreading: Boolean = false
    )
    )


    private fun addNewAccountsAutomatically(accounts: List<Account>): Boolean {
        return try {
            val eeloAccounts: Array<android.accounts.Account> = getEeloAccountsOnDevice()
            val googleAccounts: Array<android.accounts.Account> = getGoogleAccountsOnDevice()
            var accountWasAdded = false
            for (eeloAccount in eeloAccounts) {
                val emailId: String = accountManager.getUserData(eeloAccount, ACCOUNT_EMAIL_ADDRESS_KEY)
                if (!emailId.contains("@")) continue
                var accountIsSignedIn = false
                for (account in accounts) {
                    if (emailId == account.email) {
                        accountIsSignedIn = true
                        break
                    }
                }
                if (!accountIsSignedIn) {
                    val password: String = accountManager.getPassword(eeloAccount)
                    EeloAccountCreator.createAccount(this, emailId, password)
                    accountWasAdded = true
                }
            }
//            for (googleAccount in googleAccounts) {
//                val emailId: String = accountManager.getUserData(
//                    googleAccount,
//                    ACCOUNT_EMAIL_ADDRESS_KEY
//                )
//                var accountIsSignedIn = false
//                for (account in accounts) {
//                    if (emailId == account.email) {
//                        if (account.name == null) { // we need to fix an old bug
//                            account.name = emailId
//                            account.save(Preferences.getPreferences(this))
//                        }
//                        accountIsSignedIn = true
//                        break
//                    }
//                }
//                if (!accountIsSignedIn) {
//                    GoogleAccountCreator.createAccount(this, emailId)
//                    accountWasAdded = true
//                }
//            }
            accountWasAdded
        } catch (e: SecurityException) {
            e.printStackTrace()
            false
        }
    }

    private fun getEeloAccountsOnDevice(): Array<android.accounts.Account> {
        return accountManager.getAccountsByType(EELO_ACCOUNT_TYPE)
    }

    private fun getGoogleAccountsOnDevice(): Array<android.accounts.Account> {
        return accountManager.getAccountsByType(GOOGLE_ACCOUNT_TYPE)
    }

    companion object : KoinComponent {
    companion object : KoinComponent {
        private const val EXTRA_SEARCH = "search_bytes"
        private const val EXTRA_SEARCH = "search_bytes"
        private const val EXTRA_NO_THREADING = "no_threading"
        private const val EXTRA_NO_THREADING = "no_threading"
+8 −0
Original line number Original line Diff line number Diff line
package com.fsck.k9.activity.setup.accountmanager

object AccountManagerConstants {
    const val EELO_ACCOUNT_TYPE = "e.foundation.webdav.eelo"
    const val GOOGLE_ACCOUNT_TYPE = "e.foundation.webdav.google"
    const val ACCOUNT_EMAIL_ADDRESS_KEY = "email_address"
    const val MAIL_CONTENT_AUTHORITY = "foundation.e.mail.provider.AppContentProvider"
}
 No newline at end of file
Loading