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

Commit 02049c58 authored by cketti's avatar cketti
Browse files

Create DraftsFolderProvider

parent 82db38bd
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -8,8 +8,8 @@ import com.fsck.k9.backend.webdav.WebDavStoreUriCreator
import com.fsck.k9.backend.webdav.WebDavStoreUriDecoder
import com.fsck.k9.mail.ServerSettings
import com.fsck.k9.mail.ssl.TrustManagerFactory
import com.fsck.k9.mail.store.webdav.DraftsFolderProvider
import com.fsck.k9.mail.store.webdav.WebDavStore
import com.fsck.k9.mail.store.webdav.WebDavStoreSettings
import com.fsck.k9.mail.transport.WebDavTransport
import com.fsck.k9.mailstore.K9BackendStorageFactory

@@ -23,13 +23,16 @@ class WebDavBackendFactory(
        val accountName = account.displayName
        val backendStorage = backendStorageFactory.createBackendStorage(account)
        val serverSettings = WebDavStoreUriDecoder.decode(account.storeUri)
        val webDavStore = createWebDavStore(serverSettings, account)
        val webDavTransport = WebDavTransport(trustManagerFactory, serverSettings, account)
        val draftsFolderProvider = createDraftsFolderProvider(account)
        val webDavStore = WebDavStore(trustManagerFactory, serverSettings, draftsFolderProvider)
        val webDavTransport = WebDavTransport(trustManagerFactory, serverSettings, draftsFolderProvider)
        return WebDavBackend(accountName, backendStorage, webDavStore, webDavTransport)
    }

    private fun createWebDavStore(serverSettings: WebDavStoreSettings, account: Account): WebDavStore {
        return WebDavStore(trustManagerFactory, serverSettings, account)
    private fun createDraftsFolderProvider(account: Account): DraftsFolderProvider {
        return DraftsFolderProvider {
            account.draftsFolder ?: error("No Drafts folder configured")
        }
    }

    override fun decodeStoreUri(storeUri: String): ServerSettings {
+8 −5
Original line number Diff line number Diff line
@@ -8,8 +8,8 @@ import com.fsck.k9.backend.webdav.WebDavStoreUriCreator
import com.fsck.k9.backend.webdav.WebDavStoreUriDecoder
import com.fsck.k9.mail.ServerSettings
import com.fsck.k9.mail.ssl.TrustManagerFactory
import com.fsck.k9.mail.store.webdav.DraftsFolderProvider
import com.fsck.k9.mail.store.webdav.WebDavStore
import com.fsck.k9.mail.store.webdav.WebDavStoreSettings
import com.fsck.k9.mail.transport.WebDavTransport
import com.fsck.k9.mailstore.K9BackendStorageFactory

@@ -23,13 +23,16 @@ class WebDavBackendFactory(
        val accountName = account.displayName
        val backendStorage = backendStorageFactory.createBackendStorage(account)
        val serverSettings = WebDavStoreUriDecoder.decode(account.storeUri)
        val webDavStore = createWebDavStore(serverSettings, account)
        val webDavTransport = WebDavTransport(trustManagerFactory, serverSettings, account)
        val draftsFolderProvider = createDraftsFolderProvider(account)
        val webDavStore = WebDavStore(trustManagerFactory, serverSettings, draftsFolderProvider)
        val webDavTransport = WebDavTransport(trustManagerFactory, serverSettings, draftsFolderProvider)
        return WebDavBackend(accountName, backendStorage, webDavStore, webDavTransport)
    }

    private fun createWebDavStore(serverSettings: WebDavStoreSettings, account: Account): WebDavStore {
        return WebDavStore(trustManagerFactory, serverSettings, account)
    private fun createDraftsFolderProvider(account: Account): DraftsFolderProvider {
        return DraftsFolderProvider {
            account.draftsFolder ?: error("No Drafts folder configured")
        }
    }

    override fun decodeStoreUri(storeUri: String): ServerSettings {
+5 −0
Original line number Diff line number Diff line
package com.fsck.k9.mail.store.webdav;

public interface DraftsFolderProvider {
    String getDraftsFolder();
}
+8 −12
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.filter.Base64;
import com.fsck.k9.mail.ssl.TrustManagerFactory;
import com.fsck.k9.mail.store.StoreConfig;
import com.fsck.k9.mail.store.webdav.WebDavHttpClient.WebDavHttpClientFactory;
import javax.net.ssl.SSLException;
import javax.xml.parsers.ParserConfigurationException;
@@ -60,7 +59,7 @@ import static com.fsck.k9.mail.helper.UrlEncodingHelper.decodeUtf8;
 */
@SuppressWarnings("deprecation")
public class WebDavStore {
    private final StoreConfig storeConfig;
    private final DraftsFolderProvider draftsFolderProvider;
    private ConnectionSecurity mConnectionSecurity;
    private String username;
    private String alias;
@@ -84,13 +83,14 @@ public class WebDavStore {
    private WebDavFolder sendFolder = null;
    private Map<String, WebDavFolder> folderList = new HashMap<>();

    public WebDavStore(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings, StoreConfig storeConfig) {
        this(trustManagerFactory, serverSettings, storeConfig, new WebDavHttpClient.WebDavHttpClientFactory());
    public WebDavStore(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings,
            DraftsFolderProvider draftsFolderProvider) {
        this(trustManagerFactory, serverSettings, draftsFolderProvider, new WebDavHttpClient.WebDavHttpClientFactory());
    }

    public WebDavStore(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings, StoreConfig storeConfig,
            WebDavHttpClientFactory clientFactory) {
        this.storeConfig = storeConfig;
    public WebDavStore(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings,
            DraftsFolderProvider draftsFolderProvider, WebDavHttpClientFactory clientFactory) {
        this.draftsFolderProvider = draftsFolderProvider;
        httpClientFactory = clientFactory;
        this.trustManagerFactory = trustManagerFactory;

@@ -152,10 +152,6 @@ public class WebDavStore {
        return authenticationType;
    }

    StoreConfig getStoreConfig() {
        return storeConfig;
    }

    public void checkSettings() throws MessagingException {
        authenticate();
    }
@@ -935,7 +931,7 @@ public class WebDavStore {
    }

    public void sendMessages(List<Message> messages) throws MessagingException {
        WebDavFolder tmpFolder = getFolder(storeConfig.getDraftsFolder());
        WebDavFolder tmpFolder = getFolder(draftsFolderProvider.getDraftsFolder());
        try {
            tmpFolder.open();
            List<WebDavMessage> retMessages = tmpFolder.appendWebDavMessages(messages);
+4 −3
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.Transport;
import com.fsck.k9.mail.ssl.TrustManagerFactory;
import com.fsck.k9.mail.store.StoreConfig;
import com.fsck.k9.mail.store.webdav.DraftsFolderProvider;
import com.fsck.k9.mail.store.webdav.WebDavStore;
import com.fsck.k9.mail.store.webdav.WebDavStoreSettings;
import timber.log.Timber;
@@ -16,8 +16,9 @@ import timber.log.Timber;
public class WebDavTransport extends Transport {
    private WebDavStore store;

    public WebDavTransport(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings, StoreConfig storeConfig) {
        store = new WebDavStore(trustManagerFactory, serverSettings, storeConfig);
    public WebDavTransport(TrustManagerFactory trustManagerFactory, WebDavStoreSettings serverSettings,
            DraftsFolderProvider draftsFolderProvider) {
        store = new WebDavStore(trustManagerFactory, serverSettings, draftsFolderProvider);

        if (K9MailLib.isDebug())
            Timber.d(">>> New WebDavTransport creation complete");
Loading