mirror of
https://github.com/thunderbird/thunderbird-android.git
synced 2024-09-20 12:12:15 +02:00
Save special folder mapping when creating an account
This commit is contained in:
parent
a1a090f77e
commit
df776baeea
@ -151,23 +151,18 @@ class Account(override val uuid: String) : BaseAccount {
|
||||
|
||||
@get:Synchronized
|
||||
var draftsFolderSelection = SpecialFolderSelection.AUTOMATIC
|
||||
private set
|
||||
|
||||
@get:Synchronized
|
||||
var sentFolderSelection = SpecialFolderSelection.AUTOMATIC
|
||||
private set
|
||||
|
||||
@get:Synchronized
|
||||
var trashFolderSelection = SpecialFolderSelection.AUTOMATIC
|
||||
private set
|
||||
|
||||
@get:Synchronized
|
||||
var archiveFolderSelection = SpecialFolderSelection.AUTOMATIC
|
||||
private set
|
||||
|
||||
@get:Synchronized
|
||||
var spamFolderSelection = SpecialFolderSelection.AUTOMATIC
|
||||
private set
|
||||
|
||||
@get:Synchronized
|
||||
@set:Synchronized
|
||||
|
@ -3,9 +3,12 @@ package com.fsck.k9.account
|
||||
import android.content.Context
|
||||
import app.k9mail.core.common.mail.Protocols
|
||||
import app.k9mail.feature.account.common.domain.entity.Account
|
||||
import app.k9mail.feature.account.common.domain.entity.SpecialFolderOption
|
||||
import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings
|
||||
import app.k9mail.feature.account.setup.AccountSetupExternalContract
|
||||
import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult
|
||||
import com.fsck.k9.Account.FolderMode
|
||||
import com.fsck.k9.Account.SpecialFolderSelection
|
||||
import com.fsck.k9.Core
|
||||
import com.fsck.k9.Preferences
|
||||
import com.fsck.k9.controller.MessagingController
|
||||
@ -16,6 +19,7 @@ import com.fsck.k9.mail.store.imap.ImapStoreSettings.createExtra
|
||||
import com.fsck.k9.mail.store.imap.ImapStoreSettings.isSendClientId
|
||||
import com.fsck.k9.mail.store.imap.ImapStoreSettings.isUseCompression
|
||||
import com.fsck.k9.mail.store.imap.ImapStoreSettings.pathPrefix
|
||||
import com.fsck.k9.mailstore.SpecialFolderUpdater
|
||||
import com.fsck.k9.mailstore.SpecialLocalFoldersCreator
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -69,6 +73,10 @@ class AccountCreator(
|
||||
|
||||
localFoldersCreator.createSpecialLocalFolders(newAccount)
|
||||
|
||||
account.specialFolderSettings?.let { specialFolderSettings ->
|
||||
newAccount.setSpecialFolders(specialFolderSettings)
|
||||
}
|
||||
|
||||
newAccount.markSetupFinished()
|
||||
|
||||
preferences.saveAccount(newAccount)
|
||||
@ -79,6 +87,51 @@ class AccountCreator(
|
||||
|
||||
return newAccount.uuid
|
||||
}
|
||||
|
||||
/**
|
||||
* Set special folders by name.
|
||||
*
|
||||
* Since the folder list hasn't been synced yet, we don't have database IDs for the folders. So we use the same
|
||||
* mechanism that is used when importing settings. See [SpecialFolderUpdater] for details.
|
||||
*/
|
||||
private fun K9Account.setSpecialFolders(specialFolders: SpecialFolderSettings) {
|
||||
importedArchiveFolder = specialFolders.archiveSpecialFolderOption.toFolderServerId()
|
||||
archiveFolderSelection = specialFolders.archiveSpecialFolderOption.toFolderSelection()
|
||||
|
||||
importedDraftsFolder = specialFolders.draftsSpecialFolderOption.toFolderServerId()
|
||||
draftsFolderSelection = specialFolders.draftsSpecialFolderOption.toFolderSelection()
|
||||
|
||||
importedSentFolder = specialFolders.sentSpecialFolderOption.toFolderServerId()
|
||||
sentFolderSelection = specialFolders.sentSpecialFolderOption.toFolderSelection()
|
||||
|
||||
importedSpamFolder = specialFolders.spamSpecialFolderOption.toFolderServerId()
|
||||
spamFolderSelection = specialFolders.spamSpecialFolderOption.toFolderSelection()
|
||||
|
||||
importedTrashFolder = specialFolders.trashSpecialFolderOption.toFolderServerId()
|
||||
trashFolderSelection = specialFolders.trashSpecialFolderOption.toFolderSelection()
|
||||
}
|
||||
|
||||
private fun SpecialFolderOption.toFolderServerId(): String? {
|
||||
return when (this) {
|
||||
is SpecialFolderOption.None -> null
|
||||
is SpecialFolderOption.Regular -> remoteFolder.serverId.serverId
|
||||
is SpecialFolderOption.Special -> remoteFolder.serverId.serverId
|
||||
}
|
||||
}
|
||||
|
||||
private fun SpecialFolderOption.toFolderSelection(): SpecialFolderSelection {
|
||||
return when (this) {
|
||||
is SpecialFolderOption.None -> {
|
||||
if (isAutomatic) SpecialFolderSelection.AUTOMATIC else SpecialFolderSelection.MANUAL
|
||||
}
|
||||
is SpecialFolderOption.Regular -> {
|
||||
SpecialFolderSelection.MANUAL
|
||||
}
|
||||
is SpecialFolderOption.Special -> {
|
||||
if (isAutomatic) SpecialFolderSelection.AUTOMATIC else SpecialFolderSelection.MANUAL
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun K9Account.setIncomingServerSettings(serverSettings: ServerSettings) {
|
||||
|
Loading…
Reference in New Issue
Block a user