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 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 org.junit.Test
import org.junit.runner.RunWith
+2 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <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>
</resources>
 No newline at end of file
+9 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android="http://schemas.android.com/apk/res/android"

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

import android.annotation.SuppressLint
import android.accounts.AccountManager
import android.app.SearchManager
import android.content.Context
import android.content.Intent
@@ -8,6 +9,11 @@ import android.content.IntentSender
import android.content.res.Configuration
import android.graphics.Color
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.view.KeyEvent
import android.view.Menu
@@ -126,6 +132,9 @@ open class MessageList :
     */
    private var messageListWasDisplayed = false
    private var viewSwitcher: ViewSwitcher? = null

    private lateinit var accountManager: AccountManager

    private lateinit var recentChangesSnackbar: Snackbar

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

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

        accountManager = AccountManager.get(this)

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

        val hasAccountSetup = accounts.any { it.isFinishedSetup }
        if (!hasAccountSetup) {
            AccountSetupBasics.actionNewAccount(this)
@@ -1597,6 +1614,63 @@ open class MessageList :
        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 {
        private const val EXTRA_SEARCH = "search_bytes"
        private const val EXTRA_NO_THREADING = "no_threading"
+8 −0
Original line number 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