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

Commit 118450e3 authored by cketti's avatar cketti
Browse files

Only create special local folders once

Previously special local folders were created every time the server
settings were checked. The folders weren't created when the server settings
check would encounter an error, e.g. if there was no internet connectivity,
but the user decided to continue anyway.
parent 482e8df6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import com.fsck.k9.Account
import com.fsck.k9.Preferences
import com.fsck.k9.activity.K9Activity
import com.fsck.k9.helper.EmailHelper.getDomainFromEmailAddress
import com.fsck.k9.mailstore.SpecialLocalFoldersCreator
import com.fsck.k9.preferences.Protocols
import com.fsck.k9.setup.ServerNameSuggester
import com.fsck.k9.ui.R
@@ -22,6 +23,7 @@ import org.koin.android.ext.android.inject
class AccountSetupAccountType : K9Activity() {
    private val preferences: Preferences by inject()
    private val serverNameSuggester: ServerNameSuggester by inject()
    private val localFoldersCreator: SpecialLocalFoldersCreator by inject()

    private lateinit var account: Account
    private var makeDefault = false
@@ -52,6 +54,7 @@ class AccountSetupAccountType : K9Activity() {

    private fun setupAccount(serverType: String, schemePrefix: String) {
        setupStoreAndSmtpTransport(serverType, schemePrefix)
        createSpecialLocalFolders()
        returnAccountTypeSelectionResult()
    }

@@ -82,6 +85,10 @@ class AccountSetupAccountType : K9Activity() {
        account.transportUri = transportUri.toString()
    }

    private fun createSpecialLocalFolders() {
        localFoldersCreator.createSpecialLocalFolders(account)
    }

    private fun returnAccountTypeSelectionResult() {
        AccountSetupIncoming.actionIncomingSettings(this, account, makeDefault)
        finish()
+4 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.fsck.k9.helper.Utility;
import com.fsck.k9.mail.AuthType;
import com.fsck.k9.mail.ConnectionSecurity;
import com.fsck.k9.mail.ServerSettings;
import com.fsck.k9.mailstore.SpecialLocalFoldersCreator;
import com.fsck.k9.preferences.Protocols;
import com.fsck.k9.ui.R;
import com.fsck.k9.view.ClientCertificateSpinner;
@@ -53,6 +54,7 @@ public class AccountSetupBasics extends K9Activity
    private final BackendManager backendManager = DI.get(BackendManager.class);
    private final ProvidersXmlDiscovery providersXmlDiscovery = DI.get(ProvidersXmlDiscovery.class);
    private final AccountCreator accountCreator = DI.get(AccountCreator.class);
    private final SpecialLocalFoldersCreator localFoldersCreator = DI.get(SpecialLocalFoldersCreator.class);

    private EditText mEmailView;
    private EditText mPasswordView;
@@ -259,6 +261,8 @@ public class AccountSetupBasics extends K9Activity

        mAccount.setDeletePolicy(accountCreator.getDefaultDeletePolicy(incomingServerSettings.type));

        localFoldersCreator.createSpecialLocalFolders(mAccount);

        // Check incoming here.  Then check outgoing in onActivityResult()
        AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.INCOMING);
    }
+0 −12
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.fsck.k9.mail.CertificateValidationException;
import com.fsck.k9.mail.MailServerDirection;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.filter.Hex;
import com.fsck.k9.mailstore.SpecialLocalFoldersCreator;
import com.fsck.k9.ui.R;
import timber.log.Timber;

@@ -435,8 +434,6 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
                    return null;
                }

                createSpecialLocalFolders(direction);

                setResult(RESULT_OK);
                finish();

@@ -517,15 +514,6 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
            return account.getStoreUri().startsWith("webdav");
        }

        private void createSpecialLocalFolders(CheckDirection direction) throws MessagingException {
            if (direction != CheckDirection.INCOMING) {
                return;
            }

            SpecialLocalFoldersCreator localFoldersCreator = DI.get(SpecialLocalFoldersCreator.class);
            localFoldersCreator.createSpecialLocalFolders(account);
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            setMessage(values[0]);