Easier SystemFolders handling

This commit is contained in:
djmaze 2021-12-01 13:54:35 +01:00
parent 31db5ee238
commit 547d66ebcb
13 changed files with 75 additions and 85 deletions

View file

@ -12,6 +12,8 @@ export const
forEachObjectValue = (obj, fn) => Object.values(obj).forEach(fn), forEachObjectValue = (obj, fn) => Object.values(obj).forEach(fn),
forEachObjectEntry = (obj, fn) => Object.entries(obj).forEach(([key, value]) => fn(key, value)),
pInt = (value, defaultValue = 0) => { pInt = (value, defaultValue = 0) => {
value = parseInt(value, 10); value = parseInt(value, 10);
return isNaN(value) || !isFinite(value) ? defaultValue : value; return isNaN(value) || !isFinite(value) ? defaultValue : value;
@ -28,14 +30,14 @@ export const
&& domItem.classList.toggle('disabled', domItem.disabled = item.disabled), && domItem.classList.toggle('disabled', domItem.disabled = item.disabled),
addObservablesTo = (target, observables) => addObservablesTo = (target, observables) =>
Object.entries(observables).forEach(([key, value]) => forEachObjectEntry(observables, (key, value) =>
target[key] = /*isArray(value) ? ko.observableArray(value) :*/ ko.observable(value) ), target[key] = /*isArray(value) ? ko.observableArray(value) :*/ ko.observable(value) ),
addComputablesTo = (target, computables) => addComputablesTo = (target, computables) =>
Object.entries(computables).forEach(([key, fn]) => target[key] = ko.computed(fn)), forEachObjectEntry(computables, (key, fn) => target[key] = ko.computed(fn)),
addSubscribablesTo = (target, subscribables) => addSubscribablesTo = (target, subscribables) =>
Object.entries(subscribables).forEach(([key, fn]) => target[key].subscribe(fn)), forEachObjectEntry(subscribables, (key, fn) => target[key].subscribe(fn)),
inFocus = () => { inFocus = () => {
try { try {

View file

@ -1,7 +1,7 @@
import { AbstractCollectionModel } from 'Model/AbstractCollection'; import { AbstractCollectionModel } from 'Model/AbstractCollection';
import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { UNUSED_OPTION_VALUE } from 'Common/Consts';
import { isArray, getKeyByValue } from 'Common/Utils'; import { isArray, getKeyByValue, forEachObjectEntry } from 'Common/Utils';
import { ClientSideKeyName, FolderType, FolderMetadataKeys } from 'Common/EnumsUser'; import { ClientSideKeyName, FolderType, FolderMetadataKeys } from 'Common/EnumsUser';
import * as Cache from 'Common/Cache'; import * as Cache from 'Common/Cache';
import { Settings, SettingsGet } from 'Common/Globals'; import { Settings, SettingsGet } from 'Common/Globals';
@ -27,8 +27,14 @@ normalizeFolder = sFolderFullName => ('' === sFolderFullName
? sFolderFullName ? sFolderFullName
: ''; : '';
// index is FolderType value const SystemFolders = {
let SystemFolders = [0,'','','','','','','']; Inbox: 0,
Sent: 0,
Drafts: 0,
Spam: 0,
Trash: 0,
Archive: 0
};
export class FolderCollectionModel extends AbstractCollectionModel export class FolderCollectionModel extends AbstractCollectionModel
{ {
@ -52,24 +58,14 @@ export class FolderCollectionModel extends AbstractCollectionModel
static reviveFromJson(object) { static reviveFromJson(object) {
const expandedFolders = Local.get(ClientSideKeyName.ExpandedFolders); const expandedFolders = Local.get(ClientSideKeyName.ExpandedFolders);
if (object && object.SystemFolders) { if (object && object.SystemFolders) {
let sf = object.SystemFolders; forEachObjectEntry(SystemFolders, key =>
SystemFolders = [ SystemFolders[key] = SettingsGet(key+'Folder') || object.SystemFolders[FolderType[key]]
/* USER */ 0, );
/* INBOX */ sf[1],
SettingsGet('SentFolder') || sf[2],
SettingsGet('DraftFolder') || sf[3],
SettingsGet('SpamFolder') || sf[4],
SettingsGet('TrashFolder') || sf[5],
SettingsGet('ArchiveFolder') || sf[12]
// SettingsGet('TemplatesFolder') || sf[19]
// IMPORTANT: sf[10],
// FLAGGED: sf[11],
// ALL: sf[13]
];
} }
return super.reviveFromJson(object, oFolder => { return super.reviveFromJson(object, oFolder => {
let oCacheFolder = Cache.getFolderFromCacheList(oFolder.FullName); let oCacheFolder = Cache.getFolderFromCacheList(oFolder.FullName),
type = FolderType[getKeyByValue(SystemFolders, oFolder.FullName)];
if (oCacheFolder) { if (oCacheFolder) {
oFolder.SubFolders = FolderCollectionModel.reviveFromJson(oFolder.SubFolders); oFolder.SubFolders = FolderCollectionModel.reviveFromJson(oFolder.SubFolders);
@ -79,14 +75,13 @@ export class FolderCollectionModel extends AbstractCollectionModel
if (!oCacheFolder) if (!oCacheFolder)
return null; return null;
if (1 == SystemFolders.indexOf(oFolder.FullName)) { if (1 == type) {
oCacheFolder.type(FolderType.Inbox); oCacheFolder.type(FolderType.Inbox);
Cache.setFolderInboxName(oFolder.FullName); Cache.setFolderInboxName(oFolder.FullName);
} }
Cache.setFolder(oCacheFolder.fullNameHash, oFolder.FullName, oCacheFolder); Cache.setFolder(oCacheFolder.fullNameHash, oFolder.FullName, oCacheFolder);
} }
let type = SystemFolders.indexOf(oFolder.FullName);
if (1 < type) { if (1 < type) {
oCacheFolder.type(type); oCacheFolder.type(type);
} }
@ -115,22 +110,15 @@ export class FolderCollectionModel extends AbstractCollectionModel
storeIt() { storeIt() {
FolderUserStore.displaySpecSetting(Settings.app('folderSpecLimit') < this.CountRec); FolderUserStore.displaySpecSetting(Settings.app('folderSpecLimit') < this.CountRec);
if (SystemFolders && if (!(
!(
SettingsGet('SentFolder') + SettingsGet('SentFolder') +
SettingsGet('DraftFolder') + SettingsGet('DraftsFolder') +
SettingsGet('SpamFolder') + SettingsGet('SpamFolder') +
SettingsGet('TrashFolder') + SettingsGet('TrashFolder') +
SettingsGet('ArchiveFolder') SettingsGet('ArchiveFolder')
) )
) { ) {
FolderUserStore.saveSystemFolders({ FolderUserStore.saveSystemFolders(SystemFolders);
SentFolder: SystemFolders[FolderType.Sent],
DraftFolder: SystemFolders[FolderType.Drafts],
SpamFolder: SystemFolders[FolderType.Spam],
TrashFolder: SystemFolders[FolderType.Trash],
ArchiveFolder: SystemFolders[FolderType.Archive]
});
} }
FolderUserStore.folderList(this); FolderUserStore.folderList(this);
@ -144,11 +132,11 @@ export class FolderCollectionModel extends AbstractCollectionModel
FolderUserStore.quotaLimit(this.quotaLimit); FolderUserStore.quotaLimit(this.quotaLimit);
FolderUserStore.capabilities(this.Capabilities); FolderUserStore.capabilities(this.Capabilities);
FolderUserStore.sentFolder(normalizeFolder(SettingsGet('SentFolder') || SystemFolders[2])); FolderUserStore.sentFolder(normalizeFolder(SystemFolders.Sent));
FolderUserStore.draftFolder(normalizeFolder(SettingsGet('DraftFolder') || SystemFolders[3])); FolderUserStore.draftsFolder(normalizeFolder(SystemFolders.Drafts));
FolderUserStore.spamFolder(normalizeFolder(SettingsGet('SpamFolder') || SystemFolders[4])); FolderUserStore.spamFolder(normalizeFolder(SystemFolders.Spam));
FolderUserStore.trashFolder(normalizeFolder(SettingsGet('TrashFolder') || SystemFolders[5])); FolderUserStore.trashFolder(normalizeFolder(SystemFolders.Trash));
FolderUserStore.archiveFolder(normalizeFolder(SettingsGet('ArchiveFolder') || SystemFolders[6])); FolderUserStore.archiveFolder(normalizeFolder(SystemFolders.Archive));
// FolderUserStore.folderList.valueHasMutated(); // FolderUserStore.folderList.valueHasMutated();

View file

@ -178,7 +178,7 @@ export class MessageModel extends AbstractModel {
} }
computeSenderEmail() { computeSenderEmail() {
const list = [FolderUserStore.sentFolder(), FolderUserStore.draftFolder()].includes(this.folder) ? 'to' : 'from'; const list = [FolderUserStore.sentFolder(), FolderUserStore.draftsFolder()].includes(this.folder) ? 'to' : 'from';
this.senderEmailsString(this[list].toString(true)); this.senderEmailsString(this[list].toString(true));
this.senderClearEmailsString(this[list].toStringClear()); this.senderClearEmailsString(this[list].toStringClear());
} }

View file

@ -2,7 +2,7 @@ import ko from 'ko';
import { FolderType, FolderSortMode } from 'Common/EnumsUser'; import { FolderType, FolderSortMode } from 'Common/EnumsUser';
import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { UNUSED_OPTION_VALUE } from 'Common/Consts';
import { addObservablesTo, addSubscribablesTo, addComputablesTo } from 'Common/Utils'; import { addObservablesTo, addSubscribablesTo, addComputablesTo, forEachObjectEntry } from 'Common/Utils';
import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache'; import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache';
import { Settings } from 'Common/Globals'; import { Settings } from 'Common/Globals';
//import Remote from 'Remote/User/Fetch'; Circular dependency //import Remote from 'Remote/User/Fetch'; Circular dependency
@ -26,7 +26,7 @@ export const FolderUserStore = new class {
quotaUsage: 0, quotaUsage: 0,
sentFolder: '', sentFolder: '',
draftFolder: '', draftsFolder: '',
spamFolder: '', spamFolder: '',
trashFolder: '', trashFolder: '',
archiveFolder: '', archiveFolder: '',
@ -46,7 +46,7 @@ export const FolderUserStore = new class {
self.namespace = ''; self.namespace = '';
self.folderList = ko.observableArray(); self.folderList = ko.observableArray(/*new FolderCollectionModel*/);
self.capabilities = ko.observableArray(); self.capabilities = ko.observableArray();
@ -54,7 +54,7 @@ export const FolderUserStore = new class {
addComputablesTo(self, { addComputablesTo(self, {
draftFolderNotEnabled: () => !self.draftFolder() || UNUSED_OPTION_VALUE === self.draftFolder(), draftsFolderNotEnabled: () => !self.draftsFolder() || UNUSED_OPTION_VALUE === self.draftsFolder(),
currentFolderFullName: () => (self.currentFolder() ? self.currentFolder().fullName : ''), currentFolderFullName: () => (self.currentFolder() ? self.currentFolder().fullName : ''),
currentFolderFullNameHash: () => (self.currentFolder() ? self.currentFolder().fullNameHash : ''), currentFolderFullNameHash: () => (self.currentFolder() ? self.currentFolder().fullNameHash : ''),
@ -64,7 +64,7 @@ export const FolderUserStore = new class {
folderListSystemNames: () => { folderListSystemNames: () => {
const list = [getFolderInboxName()], const list = [getFolderInboxName()],
others = [self.sentFolder(), self.draftFolder(), self.spamFolder(), self.trashFolder(), self.archiveFolder()]; others = [self.sentFolder(), self.draftsFolder(), self.spamFolder(), self.trashFolder(), self.archiveFolder()];
self.folderList().length && self.folderList().length &&
others.forEach(name => name && UNUSED_OPTION_VALUE !== name && list.push(name)); others.forEach(name => name && UNUSED_OPTION_VALUE !== name && list.push(name));
@ -87,14 +87,14 @@ export const FolderUserStore = new class {
}; };
self.sentFolder.subscribe(fRemoveSystemFolderType(self.sentFolder), self, 'beforeChange'); self.sentFolder.subscribe(fRemoveSystemFolderType(self.sentFolder), self, 'beforeChange');
self.draftFolder.subscribe(fRemoveSystemFolderType(self.draftFolder), self, 'beforeChange'); self.draftsFolder.subscribe(fRemoveSystemFolderType(self.draftsFolder), self, 'beforeChange');
self.spamFolder.subscribe(fRemoveSystemFolderType(self.spamFolder), self, 'beforeChange'); self.spamFolder.subscribe(fRemoveSystemFolderType(self.spamFolder), self, 'beforeChange');
self.trashFolder.subscribe(fRemoveSystemFolderType(self.trashFolder), self, 'beforeChange'); self.trashFolder.subscribe(fRemoveSystemFolderType(self.trashFolder), self, 'beforeChange');
self.archiveFolder.subscribe(fRemoveSystemFolderType(self.archiveFolder), self, 'beforeChange'); self.archiveFolder.subscribe(fRemoveSystemFolderType(self.archiveFolder), self, 'beforeChange');
addSubscribablesTo(self, { addSubscribablesTo(self, {
sentFolder: fSetSystemFolderType(FolderType.Sent), sentFolder: fSetSystemFolderType(FolderType.Sent),
draftFolder: fSetSystemFolderType(FolderType.Drafts), draftsFolder: fSetSystemFolderType(FolderType.Drafts),
spamFolder: fSetSystemFolderType(FolderType.Spam), spamFolder: fSetSystemFolderType(FolderType.Spam),
trashFolder: fSetSystemFolderType(FolderType.Trash), trashFolder: fSetSystemFolderType(FolderType.Trash),
archiveFolder: fSetSystemFolderType(FolderType.Archive) archiveFolder: fSetSystemFolderType(FolderType.Archive)
@ -160,13 +160,13 @@ export const FolderUserStore = new class {
saveSystemFolders(folders) { saveSystemFolders(folders) {
folders = folders || { folders = folders || {
SentFolder: FolderUserStore.sentFolder(), Sent: FolderUserStore.sentFolder(),
DraftFolder: FolderUserStore.draftFolder(), Drafts: FolderUserStore.draftsFolder(),
SpamFolder: FolderUserStore.spamFolder(), Spam: FolderUserStore.spamFolder(),
TrashFolder: FolderUserStore.trashFolder(), Trash: FolderUserStore.trashFolder(),
ArchiveFolder: FolderUserStore.archiveFolder() Archive: FolderUserStore.archiveFolder()
}; };
Object.entries(folders).forEach(([k,v])=>Settings.set(k,v)); forEachObjectEntry(folders, (k,v)=>Settings.set(k+'Folder',v));
rl.app.Remote.saveSystemFolders(null, folders); rl.app.Remote.saveSystemFolders(null, folders);
} }
}; };

View file

@ -169,7 +169,7 @@ class ComposePopupView extends AbstractViewPopup {
showBcc: false, showBcc: false,
showReplyTo: false, showReplyTo: false,
draftFolder: '', draftsFolder: '',
draftUid: 0, draftUid: 0,
sending: false, sending: false,
saving: false, saving: false,
@ -250,7 +250,7 @@ class ComposePopupView extends AbstractViewPopup {
attachmentsCount: () => this.attachments.length, attachmentsCount: () => this.attachments.length,
attachmentsInErrorCount: () => this.attachmentsInError.length, attachmentsInErrorCount: () => this.attachmentsInError.length,
attachmentsInProcessCount: () => this.attachmentsInProcess.length, attachmentsInProcessCount: () => this.attachmentsInProcess.length,
isDraftFolderMessage: () => this.draftFolder() && this.draftUid(), isDraftFolderMessage: () => this.draftsFolder() && this.draftUid(),
identitiesOptions: () => identitiesOptions: () =>
IdentityUserStore.map(item => ({ IdentityUserStore.map(item => ({
@ -338,7 +338,7 @@ class ComposePopupView extends AbstractViewPopup {
} }
return { return {
IdentityID: this.currentIdentity() ? this.currentIdentity().id() : '', IdentityID: this.currentIdentity() ? this.currentIdentity().id() : '',
MessageFolder: this.draftFolder(), MessageFolder: this.draftsFolder(),
MessageUid: this.draftUid(), MessageUid: this.draftUid(),
SaveFolder: sSaveFolder, SaveFolder: sSaveFolder,
To: this.to(), To: this.to(),
@ -412,7 +412,7 @@ class ComposePopupView extends AbstractViewPopup {
sSentFolder = UNUSED_OPTION_VALUE === sSentFolder ? '' : sSentFolder; sSentFolder = UNUSED_OPTION_VALUE === sSentFolder ? '' : sSentFolder;
setFolderHash(this.draftFolder(), ''); setFolderHash(this.draftsFolder(), '');
setFolderHash(sSentFolder, ''); setFolderHash(sSentFolder, '');
Remote.sendMessage( Remote.sendMessage(
@ -441,7 +441,7 @@ class ComposePopupView extends AbstractViewPopup {
} }
saveCommand() { saveCommand() {
if (FolderUserStore.draftFolderNotEnabled()) { if (FolderUserStore.draftsFolderNotEnabled()) {
showScreenPopup(FolderSystemPopupView, [SetSystemFoldersNotification.Draft]); showScreenPopup(FolderSystemPopupView, [SetSystemFoldersNotification.Draft]);
} else { } else {
this.savedError(false); this.savedError(false);
@ -449,7 +449,7 @@ class ComposePopupView extends AbstractViewPopup {
this.autosaveStart(); this.autosaveStart();
setFolderHash(FolderUserStore.draftFolder(), ''); setFolderHash(FolderUserStore.draftsFolder(), '');
Remote.saveMessage( Remote.saveMessage(
(iError, oData) => { (iError, oData) => {
@ -463,18 +463,18 @@ class ComposePopupView extends AbstractViewPopup {
if (this.bFromDraft) { if (this.bFromDraft) {
const message = MessageUserStore.message(); const message = MessageUserStore.message();
if (message && this.draftFolder() === message.folder && this.draftUid() == message.uid) { if (message && this.draftsFolder() === message.folder && this.draftUid() == message.uid) {
MessageUserStore.message(null); MessageUserStore.message(null);
} }
} }
this.draftFolder(oData.Result.NewFolder); this.draftsFolder(oData.Result.NewFolder);
this.draftUid(oData.Result.NewUid); this.draftUid(oData.Result.NewUid);
this.savedTime(new Date); this.savedTime(new Date);
if (this.bFromDraft) { if (this.bFromDraft) {
setFolderHash(this.draftFolder(), ''); setFolderHash(this.draftsFolder(), '');
} }
} }
} }
@ -486,7 +486,7 @@ class ComposePopupView extends AbstractViewPopup {
this.reloadDraftFolder(); this.reloadDraftFolder();
}, },
this.getMessageRequestParams(FolderUserStore.draftFolder()) this.getMessageRequestParams(FolderUserStore.draftsFolder())
); );
} }
@ -499,7 +499,7 @@ class ComposePopupView extends AbstractViewPopup {
i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'),
() => { () => {
if (this.modalVisibility()) { if (this.modalVisibility()) {
rl.app.deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]); rl.app.deleteMessagesFromFolderWithoutCheck(this.draftsFolder(), [this.draftUid()]);
this.closeCommand(); this.closeCommand();
} }
} }
@ -514,7 +514,7 @@ class ComposePopupView extends AbstractViewPopup {
this.modalVisibility() && this.modalVisibility() &&
!this.saving() && !this.saving() &&
!this.sending() && !this.sending() &&
!FolderUserStore.draftFolderNotEnabled() && !FolderUserStore.draftsFolderNotEnabled() &&
SettingsUserStore.allowDraftAutosave() SettingsUserStore.allowDraftAutosave()
) { ) {
this.saveCommand(); this.saveCommand();
@ -536,7 +536,7 @@ class ComposePopupView extends AbstractViewPopup {
clearTimeout(this.iTimer); clearTimeout(this.iTimer);
this.iTimer = setTimeout(()=>{ this.iTimer = setTimeout(()=>{
if (this.modalVisibility() if (this.modalVisibility()
&& !FolderUserStore.draftFolderNotEnabled() && !FolderUserStore.draftsFolderNotEnabled()
&& SettingsUserStore.allowDraftAutosave() && SettingsUserStore.allowDraftAutosave()
&& !this.isEmptyForm(false) && !this.isEmptyForm(false)
&& !this.saving() && !this.saving()
@ -568,13 +568,13 @@ class ComposePopupView extends AbstractViewPopup {
} }
reloadDraftFolder() { reloadDraftFolder() {
const draftFolder = FolderUserStore.draftFolder(); const draftsFolder = FolderUserStore.draftsFolder();
if (draftFolder && UNUSED_OPTION_VALUE !== draftFolder) { if (draftsFolder && UNUSED_OPTION_VALUE !== draftsFolder) {
setFolderHash(draftFolder, ''); setFolderHash(draftsFolder, '');
if (FolderUserStore.currentFolderFullName() === draftFolder) { if (FolderUserStore.currentFolderFullName() === draftsFolder) {
rl.app.reloadMessageList(true); rl.app.reloadMessageList(true);
} else { } else {
rl.app.folderInformation(draftFolder); rl.app.folderInformation(draftsFolder);
} }
} }
} }
@ -884,7 +884,7 @@ class ComposePopupView extends AbstractViewPopup {
this.bFromDraft = true; this.bFromDraft = true;
this.draftFolder(message.folder); this.draftsFolder(message.folder);
this.draftUid(message.uid); this.draftUid(message.uid);
this.subject(sSubject); this.subject(sSubject);
@ -1422,7 +1422,7 @@ class ComposePopupView extends AbstractViewPopup {
this.dragAndDropOver(false); this.dragAndDropOver(false);
this.dragAndDropVisible(false); this.dragAndDropVisible(false);
this.draftFolder(''); this.draftsFolder('');
this.draftUid(0); this.draftUid(0);
this.sending(false); this.sending(false);

View file

@ -36,7 +36,7 @@ class FolderSystemPopupView extends AbstractViewPopup {
); );
this.sentFolder = FolderUserStore.sentFolder; this.sentFolder = FolderUserStore.sentFolder;
this.draftFolder = FolderUserStore.draftFolder; this.draftsFolder = FolderUserStore.draftsFolder;
this.spamFolder = FolderUserStore.spamFolder; this.spamFolder = FolderUserStore.spamFolder;
this.trashFolder = FolderUserStore.trashFolder; this.trashFolder = FolderUserStore.trashFolder;
this.archiveFolder = FolderUserStore.archiveFolder; this.archiveFolder = FolderUserStore.archiveFolder;
@ -45,7 +45,7 @@ class FolderSystemPopupView extends AbstractViewPopup {
addSubscribablesTo(FolderUserStore, { addSubscribablesTo(FolderUserStore, {
sentFolder: fSaveSystemFolders, sentFolder: fSaveSystemFolders,
draftFolder: fSaveSystemFolders, draftsFolder: fSaveSystemFolders,
spamFolder: fSaveSystemFolders, spamFolder: fSaveSystemFolders,
trashFolder: fSaveSystemFolders, trashFolder: fSaveSystemFolders,
archiveFolder: fSaveSystemFolders archiveFolder: fSaveSystemFolders

View file

@ -148,7 +148,7 @@ export class MailMessageList extends AbstractViewRight {
isTrashFolder: () => (FolderUserStore.trashFolder() || 0) === MessageUserStore.listEndFolder(), isTrashFolder: () => (FolderUserStore.trashFolder() || 0) === MessageUserStore.listEndFolder(),
isDraftFolder: () => (FolderUserStore.draftFolder() || 0) === MessageUserStore.listEndFolder(), isDraftFolder: () => (FolderUserStore.draftsFolder() || 0) === MessageUserStore.listEndFolder(),
isSentFolder: () => (FolderUserStore.sentFolder() || 0) === MessageUserStore.listEndFolder(), isSentFolder: () => (FolderUserStore.sentFolder() || 0) === MessageUserStore.listEndFolder(),

View file

@ -493,7 +493,7 @@ export class MailMessageView extends AbstractViewRight {
* @returns {boolean} * @returns {boolean}
*/ */
isDraftFolder() { isDraftFolder() {
return MessageUserStore.message() && FolderUserStore.draftFolder() === MessageUserStore.message().folder; return MessageUserStore.message() && FolderUserStore.draftsFolder() === MessageUserStore.message().folder;
} }
/** /**

View file

@ -24,9 +24,9 @@ abstract class FolderType
const DRAFTS = 3; const DRAFTS = 3;
const JUNK = 4; const JUNK = 4;
const TRASH = 5; const TRASH = 5;
const ARCHIVE = 6;
const IMPORTANT = 10; const IMPORTANT = 10;
const FLAGGED = 11; const FLAGGED = 11;
const ARCHIVE = 12;
const ALL = 13; const ALL = 13;
// TODO: SnappyMail // TODO: SnappyMail

View file

@ -957,7 +957,7 @@ class Actions
if ($oSettingsLocal instanceof Settings) { if ($oSettingsLocal instanceof Settings) {
$aResult['SentFolder'] = (string)$oSettingsLocal->GetConf('SentFolder', ''); $aResult['SentFolder'] = (string)$oSettingsLocal->GetConf('SentFolder', '');
$aResult['DraftFolder'] = (string)$oSettingsLocal->GetConf('DraftFolder', ''); $aResult['DraftsFolder'] = (string)$oSettingsLocal->GetConf('DraftFolder', '');
$aResult['SpamFolder'] = (string)$oSettingsLocal->GetConf('SpamFolder', ''); $aResult['SpamFolder'] = (string)$oSettingsLocal->GetConf('SpamFolder', '');
$aResult['TrashFolder'] = (string)$oSettingsLocal->GetConf('TrashFolder', ''); $aResult['TrashFolder'] = (string)$oSettingsLocal->GetConf('TrashFolder', '');
$aResult['ArchiveFolder'] = (string)$oSettingsLocal->GetConf('ArchiveFolder', ''); $aResult['ArchiveFolder'] = (string)$oSettingsLocal->GetConf('ArchiveFolder', '');

View file

@ -137,7 +137,7 @@ trait Accounts
$oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount); $oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount);
if ($oSettingsLocal instanceof \RainLoop\Settings) { if ($oSettingsLocal instanceof \RainLoop\Settings) {
$aResult['SentFolder'] = (string) $oSettingsLocal->GetConf('SentFolder', ''); $aResult['SentFolder'] = (string) $oSettingsLocal->GetConf('SentFolder', '');
$aResult['DraftFolder'] = (string) $oSettingsLocal->GetConf('DraftFolder', ''); $aResult['DraftsFolder'] = (string) $oSettingsLocal->GetConf('DraftFolder', '');
$aResult['SpamFolder'] = (string) $oSettingsLocal->GetConf('SpamFolder', ''); $aResult['SpamFolder'] = (string) $oSettingsLocal->GetConf('SpamFolder', '');
$aResult['TrashFolder'] = (string) $oSettingsLocal->GetConf('TrashFolder', ''); $aResult['TrashFolder'] = (string) $oSettingsLocal->GetConf('TrashFolder', '');
$aResult['ArchiveFolder'] = (string) $oSettingsLocal->GetConf('ArchiveFolder', ''); $aResult['ArchiveFolder'] = (string) $oSettingsLocal->GetConf('ArchiveFolder', '');

View file

@ -457,11 +457,11 @@ trait Folders
$oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount); $oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount);
$oSettingsLocal->SetConf('SentFolder', $this->GetActionParam('SentFolder', '')); $oSettingsLocal->SetConf('SentFolder', $this->GetActionParam('Sent', ''));
$oSettingsLocal->SetConf('DraftFolder', $this->GetActionParam('DraftFolder', '')); $oSettingsLocal->SetConf('DraftFolder', $this->GetActionParam('Drafts', ''));
$oSettingsLocal->SetConf('SpamFolder', $this->GetActionParam('SpamFolder', '')); $oSettingsLocal->SetConf('SpamFolder', $this->GetActionParam('Spam', ''));
$oSettingsLocal->SetConf('TrashFolder', $this->GetActionParam('TrashFolder', '')); $oSettingsLocal->SetConf('TrashFolder', $this->GetActionParam('Trash', ''));
$oSettingsLocal->SetConf('ArchiveFolder', $this->GetActionParam('ArchiveFolder', '')); $oSettingsLocal->SetConf('ArchiveFolder', $this->GetActionParam('Archive', ''));
return $this->DefaultResponse(__FUNCTION__, return $this->DefaultResponse(__FUNCTION__,
$this->SettingsProvider(true)->Save($oAccount, $oSettingsLocal)); $this->SettingsProvider(true)->Save($oAccount, $oSettingsLocal));

View file

@ -12,7 +12,7 @@
</div> </div>
<div class="control-group"> <div class="control-group">
<label data-i18n="FOLDER_LIST/DRAFTS_NAME"></label> <label data-i18n="FOLDER_LIST/DRAFTS_NAME"></label>
<select data-bind="options: folderSelectList, value: draftFolder, <select data-bind="options: folderSelectList, value: draftsFolder,
optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select> optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select>
</div> </div>
<div class="control-group"> <div class="control-group">