mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Prevent parameter errors in sendMessage()/saveMessage() due to too many parameters.
Instead provide an object. sendMessage param 'SentFolder' and saveMessage param 'DraftFolder' now both 'SaveFolder'
This commit is contained in:
parent
6f49e9b80f
commit
7670d2073d
7 changed files with 185 additions and 306 deletions
|
|
@ -54,10 +54,17 @@ class AbstractAjaxPromises extends AbstractBasicPromises {
|
||||||
};
|
};
|
||||||
params.XToken = Settings.appSettingsGet('token');
|
params.XToken = Settings.appSettingsGet('token');
|
||||||
// init.body = JSON.stringify(params);
|
// init.body = JSON.stringify(params);
|
||||||
const formData = new FormData();
|
const formData = new FormData(),
|
||||||
Object.keys(params).forEach(key => {
|
buildFormData = (formData, data, parentKey) => {
|
||||||
formData.append(key, params[key])
|
if (data && typeof data === 'object' && !(data instanceof Date || data instanceof File)) {
|
||||||
});
|
Object.keys(data).forEach(key =>
|
||||||
|
buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
formData.set(parentKey, data == null ? '' : data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
buildFormData(formData, params);
|
||||||
init.body = (new URLSearchParams(formData)).toString();
|
init.body = (new URLSearchParams(formData)).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,7 @@ class UserAjaxUserPromises extends AbstractAjaxPromises {
|
||||||
this.setTrigger(fTrigger, true);
|
this.setTrigger(fTrigger, true);
|
||||||
|
|
||||||
clearTimeout(this.foldersTimeout);
|
clearTimeout(this.foldersTimeout);
|
||||||
this.foldersTimeout = setTimeout(() => {
|
this.foldersTimeout = setTimeout(() => this.foldersReload(fTrigger), 500);
|
||||||
this.foldersReload(fTrigger);
|
|
||||||
}, 500);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
folderDelete(sFolderFullNameRaw, fTrigger) {
|
folderDelete(sFolderFullNameRaw, fTrigger) {
|
||||||
|
|
|
||||||
|
|
@ -155,11 +155,11 @@ class AbstractAjaxRemote {
|
||||||
const formData = new FormData(),
|
const formData = new FormData(),
|
||||||
buildFormData = (formData, data, parentKey) => {
|
buildFormData = (formData, data, parentKey) => {
|
||||||
if (data && typeof data === 'object' && !(data instanceof Date || data instanceof File)) {
|
if (data && typeof data === 'object' && !(data instanceof Date || data instanceof File)) {
|
||||||
Object.entries(data).forEach(([key,value]) => {
|
Object.keys(data).forEach(key =>
|
||||||
buildFormData(formData, value, parentKey ? `${parentKey}[${key}]` : key);
|
buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key)
|
||||||
});
|
);
|
||||||
} else {
|
} else {
|
||||||
formData.append(parentKey, data == null ? '' : data);
|
formData.set(parentKey, data == null ? '' : data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
buildFormData(formData, params);
|
buildFormData(formData, params);
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
adminLogin(fCallback, sLogin, sPassword) {
|
adminLogin(fCallback, sLogin, sPassword) {
|
||||||
this.defaultRequest(fCallback, 'AdminLogin', {
|
this.defaultRequest(fCallback, 'AdminLogin', {
|
||||||
'Login': sLogin,
|
Login: sLogin,
|
||||||
'Password': sPassword
|
Password: sPassword
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
domainList(fCallback, bIncludeAliases = true) {
|
domainList(fCallback, bIncludeAliases = true) {
|
||||||
this.defaultRequest(fCallback, 'AdminDomainList', {
|
this.defaultRequest(fCallback, 'AdminDomainList', {
|
||||||
'IncludeAliases': bIncludeAliases ? '1' : '0'
|
IncludeAliases: bIncludeAliases ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,9 +94,9 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'AdminPackageInstall',
|
'AdminPackageInstall',
|
||||||
{
|
{
|
||||||
'Id': oPackage.id,
|
Id: oPackage.id,
|
||||||
'Type': oPackage.type,
|
Type: oPackage.type,
|
||||||
'File': oPackage.file
|
File: oPackage.file
|
||||||
},
|
},
|
||||||
60000
|
60000
|
||||||
);
|
);
|
||||||
|
|
@ -108,7 +108,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
packageDelete(fCallback, oPackage) {
|
packageDelete(fCallback, oPackage) {
|
||||||
this.defaultRequest(fCallback, 'AdminPackageDelete', {
|
this.defaultRequest(fCallback, 'AdminPackageDelete', {
|
||||||
'Id': oPackage.id
|
Id: oPackage.id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,7 +118,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
domain(fCallback, sName) {
|
domain(fCallback, sName) {
|
||||||
this.defaultRequest(fCallback, 'AdminDomainLoad', {
|
this.defaultRequest(fCallback, 'AdminDomainLoad', {
|
||||||
'Name': sName
|
Name: sName
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,7 +128,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
plugin(fCallback, sName) {
|
plugin(fCallback, sName) {
|
||||||
this.defaultRequest(fCallback, 'AdminPluginLoad', {
|
this.defaultRequest(fCallback, 'AdminPluginLoad', {
|
||||||
'Name': sName
|
Name: sName
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -138,7 +138,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
domainDelete(fCallback, sName) {
|
domainDelete(fCallback, sName) {
|
||||||
this.defaultRequest(fCallback, 'AdminDomainDelete', {
|
this.defaultRequest(fCallback, 'AdminDomainDelete', {
|
||||||
'Name': sName
|
Name: sName
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -150,7 +150,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
domainDisable(fCallback, sName, bDisabled) {
|
domainDisable(fCallback, sName, bDisabled) {
|
||||||
return this.defaultRequest(fCallback, 'AdminDomainDisable', {
|
return this.defaultRequest(fCallback, 'AdminDomainDisable', {
|
||||||
Name: sName,
|
Name: sName,
|
||||||
Disabled: bDisabled ? '1' : '0'
|
Disabled: bDisabled ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,7 +168,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
licensing(fCallback, bForce) {
|
licensing(fCallback, bForce) {
|
||||||
return this.defaultRequest(fCallback, 'AdminLicensing', {
|
return this.defaultRequest(fCallback, 'AdminLicensing', {
|
||||||
Force: bForce ? '1' : '0'
|
Force: bForce ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -192,7 +192,7 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
pluginDisable(fCallback, sName, bDisabled) {
|
pluginDisable(fCallback, sName, bDisabled) {
|
||||||
return this.defaultRequest(fCallback, 'AdminPluginDisable', {
|
return this.defaultRequest(fCallback, 'AdminPluginDisable', {
|
||||||
Name: sName,
|
Name: sName,
|
||||||
Disabled: bDisabled ? '1' : '0'
|
Disabled: bDisabled ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -225,28 +225,28 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
sWhiteList
|
sWhiteList
|
||||||
) {
|
) {
|
||||||
this.defaultRequest(fCallback, 'AdminDomainSave', {
|
this.defaultRequest(fCallback, 'AdminDomainSave', {
|
||||||
'Create': bCreate ? '1' : '0',
|
Create: bCreate ? 1 : 0,
|
||||||
'Name': sName,
|
Name: sName,
|
||||||
|
|
||||||
'IncHost': sIncHost,
|
IncHost: sIncHost,
|
||||||
'IncPort': iIncPort,
|
IncPort: iIncPort,
|
||||||
'IncSecure': sIncSecure,
|
IncSecure: sIncSecure,
|
||||||
'IncShortLogin': bIncShortLogin ? '1' : '0',
|
IncShortLogin: bIncShortLogin ? 1 : 0,
|
||||||
|
|
||||||
'UseSieve': bUseSieve ? '1' : '0',
|
UseSieve: bUseSieve ? 1 : 0,
|
||||||
'SieveAllowRaw': sSieveAllowRaw ? '1' : '0',
|
SieveAllowRaw: sSieveAllowRaw ? 1 : 0,
|
||||||
'SieveHost': sSieveHost,
|
SieveHost: sSieveHost,
|
||||||
'SievePort': iSievePort,
|
SievePort: iSievePort,
|
||||||
'SieveSecure': sSieveSecure,
|
SieveSecure: sSieveSecure,
|
||||||
|
|
||||||
'OutHost': sOutHost,
|
OutHost: sOutHost,
|
||||||
'OutPort': iOutPort,
|
OutPort: iOutPort,
|
||||||
'OutSecure': sOutSecure,
|
OutSecure: sOutSecure,
|
||||||
'OutShortLogin': bOutShortLogin ? '1' : '0',
|
OutShortLogin: bOutShortLogin ? 1 : 0,
|
||||||
'OutAuth': bOutAuth ? '1' : '0',
|
OutAuth: bOutAuth ? 1 : 0,
|
||||||
'OutUsePhpMail': bOutPhpMail ? '1' : '0',
|
OutUsePhpMail: bOutPhpMail ? 1 : 0,
|
||||||
|
|
||||||
'WhiteList': sWhiteList
|
WhiteList: sWhiteList
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -267,19 +267,19 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
bOutPhpMail
|
bOutPhpMail
|
||||||
) {
|
) {
|
||||||
this.defaultRequest(fCallback, 'AdminDomainTest', {
|
this.defaultRequest(fCallback, 'AdminDomainTest', {
|
||||||
'Name': sName,
|
Name: sName,
|
||||||
'IncHost': sIncHost,
|
IncHost: sIncHost,
|
||||||
'IncPort': iIncPort,
|
IncPort: iIncPort,
|
||||||
'IncSecure': sIncSecure,
|
IncSecure: sIncSecure,
|
||||||
'UseSieve': bUseSieve ? '1' : '0',
|
UseSieve: bUseSieve ? 1 : 0,
|
||||||
'SieveHost': sSieveHost,
|
SieveHost: sSieveHost,
|
||||||
'SievePort': iSievePort,
|
SievePort: iSievePort,
|
||||||
'SieveSecure': sSieveSecure,
|
SieveSecure: sSieveSecure,
|
||||||
'OutHost': sOutHost,
|
OutHost: sOutHost,
|
||||||
'OutPort': iOutPort,
|
OutPort: iOutPort,
|
||||||
'OutSecure': sOutSecure,
|
OutSecure: sOutSecure,
|
||||||
'OutAuth': bOutAuth ? '1' : '0',
|
OutAuth: bOutAuth ? 1 : 0,
|
||||||
'OutUsePhpMail': bOutPhpMail ? '1' : '0'
|
OutUsePhpMail: bOutPhpMail ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,11 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'Folders',
|
'Folders',
|
||||||
{
|
{
|
||||||
'SentFolder': Settings.settingsGet('SentFolder'),
|
SentFolder: Settings.settingsGet('SentFolder'),
|
||||||
'DraftFolder': Settings.settingsGet('DraftFolder'),
|
DraftFolder: Settings.settingsGet('DraftFolder'),
|
||||||
'SpamFolder': Settings.settingsGet('SpamFolder'),
|
SpamFolder: Settings.settingsGet('SpamFolder'),
|
||||||
'TrashFolder': Settings.settingsGet('TrashFolder'),
|
TrashFolder: Settings.settingsGet('TrashFolder'),
|
||||||
'ArchiveFolder': Settings.settingsGet('ArchiveFolder')
|
ArchiveFolder: Settings.settingsGet('ArchiveFolder')
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
|
|
@ -65,13 +65,13 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
login(fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe) {
|
login(fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe) {
|
||||||
this.defaultRequest(fCallback, 'Login', {
|
this.defaultRequest(fCallback, 'Login', {
|
||||||
'Email': sEmail,
|
Email: sEmail,
|
||||||
'Login': sLogin,
|
Login: sLogin,
|
||||||
'Password': sPassword,
|
Password: sPassword,
|
||||||
'Language': sLanguage || '',
|
Language: sLanguage || '',
|
||||||
'AdditionalCode': sAdditionalCode || '',
|
AdditionalCode: sAdditionalCode || '',
|
||||||
'AdditionalCodeSignMe': bAdditionalCodeSignMe ? '1' : '0',
|
AdditionalCodeSignMe: bAdditionalCodeSignMe ? 1 : 0,
|
||||||
'SignMe': bSignMe ? '1' : '0'
|
SignMe: bSignMe ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -109,7 +109,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
testTwoFactor(fCallback, sCode) {
|
testTwoFactor(fCallback, sCode) {
|
||||||
this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
|
this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
|
||||||
'Code': sCode
|
Code: sCode
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
enableTwoFactor(fCallback, bEnable) {
|
enableTwoFactor(fCallback, bEnable) {
|
||||||
this.defaultRequest(fCallback, 'EnableTwoFactor', {
|
this.defaultRequest(fCallback, 'EnableTwoFactor', {
|
||||||
'Enable': bEnable ? '1' : '0'
|
Enable: bEnable ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -146,10 +146,10 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
saveContactsSyncData(fCallback, bEnable, sUrl, sUser, sPassword) {
|
saveContactsSyncData(fCallback, bEnable, sUrl, sUser, sPassword) {
|
||||||
this.defaultRequest(fCallback, 'SaveContactsSyncData', {
|
this.defaultRequest(fCallback, 'SaveContactsSyncData', {
|
||||||
'Enable': bEnable ? '1' : '0',
|
Enable: bEnable ? 1 : 0,
|
||||||
'Url': sUrl,
|
Url: sUrl,
|
||||||
'User': sUser,
|
User: sUser,
|
||||||
'Password': sPassword
|
Password: sPassword
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -161,9 +161,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
accountSetup(fCallback, sEmail, sPassword, bNew = true) {
|
accountSetup(fCallback, sEmail, sPassword, bNew = true) {
|
||||||
this.defaultRequest(fCallback, 'AccountSetup', {
|
this.defaultRequest(fCallback, 'AccountSetup', {
|
||||||
'Email': sEmail,
|
Email: sEmail,
|
||||||
'Password': sPassword,
|
Password: sPassword,
|
||||||
'New': bNew ? '1' : '0'
|
New: bNew ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -173,7 +173,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
accountDelete(fCallback, sEmailToDelete) {
|
accountDelete(fCallback, sEmailToDelete) {
|
||||||
this.defaultRequest(fCallback, 'AccountDelete', {
|
this.defaultRequest(fCallback, 'AccountDelete', {
|
||||||
'EmailToDelete': sEmailToDelete
|
EmailToDelete: sEmailToDelete
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -184,8 +184,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
accountsAndIdentitiesSortOrder(fCallback, aAccounts, aIdentities) {
|
accountsAndIdentitiesSortOrder(fCallback, aAccounts, aIdentities) {
|
||||||
this.defaultRequest(fCallback, 'AccountsAndIdentitiesSortOrder', {
|
this.defaultRequest(fCallback, 'AccountsAndIdentitiesSortOrder', {
|
||||||
'Accounts': aAccounts,
|
Accounts: aAccounts,
|
||||||
'Identities': aIdentities
|
Identities: aIdentities
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -201,13 +201,13 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
identityUpdate(fCallback, sId, sEmail, sName, sReplyTo, sBcc, sSignature, bSignatureInsertBefore) {
|
identityUpdate(fCallback, sId, sEmail, sName, sReplyTo, sBcc, sSignature, bSignatureInsertBefore) {
|
||||||
this.defaultRequest(fCallback, 'IdentityUpdate', {
|
this.defaultRequest(fCallback, 'IdentityUpdate', {
|
||||||
'Id': sId,
|
Id: sId,
|
||||||
'Email': sEmail,
|
Email: sEmail,
|
||||||
'Name': sName,
|
Name: sName,
|
||||||
'ReplyTo': sReplyTo,
|
ReplyTo: sReplyTo,
|
||||||
'Bcc': sBcc,
|
Bcc: sBcc,
|
||||||
'Signature': sSignature,
|
Signature: sSignature,
|
||||||
'SignatureInsertBefore': bSignatureInsertBefore ? '1' : '0'
|
SignatureInsertBefore: bSignatureInsertBefore ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -217,7 +217,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
identityDelete(fCallback, sIdToDelete) {
|
identityDelete(fCallback, sIdToDelete) {
|
||||||
this.defaultRequest(fCallback, 'IdentityDelete', {
|
this.defaultRequest(fCallback, 'IdentityDelete', {
|
||||||
'IdToDelete': sIdToDelete
|
IdToDelete: sIdToDelete
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,9 +236,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
filtersSave(fCallback, filters, raw, isRawIsActive) {
|
filtersSave(fCallback, filters, raw, isRawIsActive) {
|
||||||
this.defaultRequest(fCallback, 'FiltersSave', {
|
this.defaultRequest(fCallback, 'FiltersSave', {
|
||||||
'Raw': raw,
|
Raw: raw,
|
||||||
'RawIsActive': isRawIsActive ? '1' : '0',
|
RawIsActive: isRawIsActive ? 1 : 0,
|
||||||
'Filters': filters.map(item => item.toJson())
|
Filters: filters.map(item => item.toJson())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,7 +262,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
templateGetById(fCallback, sID) {
|
templateGetById(fCallback, sID) {
|
||||||
this.defaultRequest(fCallback, 'TemplateGetByID', {
|
this.defaultRequest(fCallback, 'TemplateGetByID', {
|
||||||
'ID': sID
|
ID: sID
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -272,7 +272,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
templateDelete(fCallback, sID) {
|
templateDelete(fCallback, sID) {
|
||||||
this.defaultRequest(fCallback, 'TemplateDelete', {
|
this.defaultRequest(fCallback, 'TemplateDelete', {
|
||||||
'IdToDelete': sID
|
IdToDelete: sID
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -284,9 +284,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
templateSetup(fCallback, sID, sName, sBody) {
|
templateSetup(fCallback, sID, sName, sBody) {
|
||||||
this.defaultRequest(fCallback, 'TemplateSetup', {
|
this.defaultRequest(fCallback, 'TemplateSetup', {
|
||||||
'ID': sID,
|
ID: sID,
|
||||||
'Name': sName,
|
Name: sName,
|
||||||
'Body': sBody
|
Body: sBody
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -324,7 +324,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
AppStore.projectHash(),
|
AppStore.projectHash(),
|
||||||
folderHash,
|
folderHash,
|
||||||
inboxUidNext,
|
inboxUidNext,
|
||||||
useThreads ? '1' : '0',
|
useThreads ? 1 : 0,
|
||||||
useThreads ? sThreadUid : ''
|
useThreads ? sThreadUid : ''
|
||||||
].join(String.fromCharCode(0))
|
].join(String.fromCharCode(0))
|
||||||
),
|
),
|
||||||
|
|
@ -341,7 +341,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
Limit: iLimit,
|
Limit: iLimit,
|
||||||
Search: sSearch,
|
Search: sSearch,
|
||||||
UidNext: inboxUidNext,
|
UidNext: inboxUidNext,
|
||||||
UseThreads: useThreads ? '1' : '0',
|
UseThreads: useThreads ? 1 : 0,
|
||||||
ThreadUid: useThreads ? sThreadUid : ''
|
ThreadUid: useThreads ? sThreadUid : ''
|
||||||
},
|
},
|
||||||
sSearch ? SEARCH_AJAX_TIMEOUT : DEFAULT_AJAX_TIMEOUT,
|
sSearch ? SEARCH_AJAX_TIMEOUT : DEFAULT_AJAX_TIMEOUT,
|
||||||
|
|
@ -359,7 +359,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'MessageUploadAttachments',
|
'MessageUploadAttachments',
|
||||||
{
|
{
|
||||||
'Attachments': aDownloads
|
Attachments: aDownloads
|
||||||
},
|
},
|
||||||
999000
|
999000
|
||||||
);
|
);
|
||||||
|
|
@ -389,7 +389,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
sFolderFullNameRaw,
|
sFolderFullNameRaw,
|
||||||
iUid,
|
iUid,
|
||||||
AppStore.projectHash(),
|
AppStore.projectHash(),
|
||||||
AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0'
|
AppStore.threadsAllowed() && SettingsStore.useThreads() ? 1 : 0
|
||||||
].join(String.fromCharCode(0))
|
].join(String.fromCharCode(0))
|
||||||
),
|
),
|
||||||
['Message']
|
['Message']
|
||||||
|
|
@ -410,7 +410,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'ComposeUploadExternals',
|
'ComposeUploadExternals',
|
||||||
{
|
{
|
||||||
'Externals': aExternals
|
Externals: aExternals
|
||||||
},
|
},
|
||||||
999000
|
999000
|
||||||
);
|
);
|
||||||
|
|
@ -426,8 +426,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'ComposeUploadDrive',
|
'ComposeUploadDrive',
|
||||||
{
|
{
|
||||||
'AccessToken': sAccessToken,
|
AccessToken: sAccessToken,
|
||||||
'Url': sUrl
|
Url: sUrl
|
||||||
},
|
},
|
||||||
999000
|
999000
|
||||||
);
|
);
|
||||||
|
|
@ -465,9 +465,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
|
|
||||||
if (request) {
|
if (request) {
|
||||||
this.defaultRequest(fCallback, 'FolderInformation', {
|
this.defaultRequest(fCallback, 'FolderInformation', {
|
||||||
'Folder': folder,
|
Folder: folder,
|
||||||
'FlagsUids': Array.isArray(uids) ? uids.join(',') : '',
|
FlagsUids: Array.isArray(uids) ? uids.join(',') : '',
|
||||||
'UidNext': getFolderInboxName() === folder ? getFolderUidNext(folder) : ''
|
UidNext: getFolderInboxName() === folder ? getFolderUidNext(folder) : ''
|
||||||
});
|
});
|
||||||
} else if (SettingsStore.useThreads()) {
|
} else if (SettingsStore.useThreads()) {
|
||||||
getApp().reloadFlagsCurrentMessageListAndMessageFromCache();
|
getApp().reloadFlagsCurrentMessageListAndMessageFromCache();
|
||||||
|
|
@ -480,7 +480,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
folderInformationMultiply(fCallback, aFolders) {
|
folderInformationMultiply(fCallback, aFolders) {
|
||||||
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
|
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
|
||||||
'Folders': aFolders
|
Folders: aFolders
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -499,9 +499,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
messageSetFlagged(fCallback, sFolderFullNameRaw, aUids, bSetFlagged) {
|
messageSetFlagged(fCallback, sFolderFullNameRaw, aUids, bSetFlagged) {
|
||||||
this.defaultRequest(fCallback, 'MessageSetFlagged', {
|
this.defaultRequest(fCallback, 'MessageSetFlagged', {
|
||||||
'Folder': sFolderFullNameRaw,
|
Folder: sFolderFullNameRaw,
|
||||||
'Uids': aUids.join(','),
|
Uids: aUids.join(','),
|
||||||
'SetAction': bSetFlagged ? '1' : '0'
|
SetAction: bSetFlagged ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -513,9 +513,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
messageSetSeen(fCallback, sFolderFullNameRaw, aUids, bSetSeen) {
|
messageSetSeen(fCallback, sFolderFullNameRaw, aUids, bSetSeen) {
|
||||||
this.defaultRequest(fCallback, 'MessageSetSeen', {
|
this.defaultRequest(fCallback, 'MessageSetSeen', {
|
||||||
'Folder': sFolderFullNameRaw,
|
Folder: sFolderFullNameRaw,
|
||||||
'Uids': aUids.join(','),
|
Uids: aUids.join(','),
|
||||||
'SetAction': bSetSeen ? '1' : '0'
|
SetAction: bSetSeen ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -527,73 +527,18 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen, aThreadUids = null) {
|
messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen, aThreadUids = null) {
|
||||||
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
||||||
'Folder': sFolderFullNameRaw,
|
Folder: sFolderFullNameRaw,
|
||||||
'SetAction': bSetSeen ? '1' : '0',
|
SetAction: bSetSeen ? 1 : 0,
|
||||||
'ThreadUids': aThreadUids ? aThreadUids.join(',') : ''
|
ThreadUids: aThreadUids ? aThreadUids.join(',') : ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {?Function} fCallback
|
* @param {?Function} fCallback
|
||||||
* @param {string} sIdentityID
|
* @param {Object} oData
|
||||||
* @param {string} sMessageFolder
|
|
||||||
* @param {string} sMessageUid
|
|
||||||
* @param {string} sDraftFolder
|
|
||||||
* @param {string} sTo
|
|
||||||
* @param {string} sCc
|
|
||||||
* @param {string} sBcc
|
|
||||||
* @param {string} sReplyTo
|
|
||||||
* @param {string} sSubject
|
|
||||||
* @param {boolean} bTextIsHtml
|
|
||||||
* @param {string} sText
|
|
||||||
* @param {Array} aAttachments
|
|
||||||
* @param {(Array|null)} aDraftInfo
|
|
||||||
* @param {string} sInReplyTo
|
|
||||||
* @param {string} sReferences
|
|
||||||
* @param {boolean} bMarkAsImportant
|
|
||||||
*/
|
*/
|
||||||
saveMessage(
|
saveMessage(fCallback, oData) {
|
||||||
fCallback,
|
this.defaultRequest(fCallback, 'SaveMessage', oData, SAVE_MESSAGE_AJAX_TIMEOUT);
|
||||||
sIdentityID,
|
|
||||||
sMessageFolder,
|
|
||||||
sMessageUid,
|
|
||||||
sDraftFolder,
|
|
||||||
sTo,
|
|
||||||
sCc,
|
|
||||||
sBcc,
|
|
||||||
sReplyTo,
|
|
||||||
sSubject,
|
|
||||||
bTextIsHtml,
|
|
||||||
sText,
|
|
||||||
aAttachments,
|
|
||||||
aDraftInfo,
|
|
||||||
sInReplyTo,
|
|
||||||
sReferences,
|
|
||||||
bMarkAsImportant
|
|
||||||
) {
|
|
||||||
this.defaultRequest(
|
|
||||||
fCallback,
|
|
||||||
'SaveMessage',
|
|
||||||
{
|
|
||||||
'IdentityID': sIdentityID,
|
|
||||||
'MessageFolder': sMessageFolder,
|
|
||||||
'MessageUid': sMessageUid,
|
|
||||||
'DraftFolder': sDraftFolder,
|
|
||||||
'To': sTo,
|
|
||||||
'Cc': sCc,
|
|
||||||
'Bcc': sBcc,
|
|
||||||
'ReplyTo': sReplyTo,
|
|
||||||
'Subject': sSubject,
|
|
||||||
'TextIsHtml': bTextIsHtml ? '1' : '0',
|
|
||||||
'Text': sText,
|
|
||||||
'DraftInfo': aDraftInfo,
|
|
||||||
'InReplyTo': sInReplyTo,
|
|
||||||
'References': sReferences,
|
|
||||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
|
||||||
'Attachments': aAttachments
|
|
||||||
},
|
|
||||||
SAVE_MESSAGE_AJAX_TIMEOUT
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -606,81 +551,20 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
sendReadReceiptMessage(fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText) {
|
sendReadReceiptMessage(fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText) {
|
||||||
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
|
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
|
||||||
'MessageFolder': sMessageFolder,
|
MessageFolder: sMessageFolder,
|
||||||
'MessageUid': sMessageUid,
|
MessageUid: sMessageUid,
|
||||||
'ReadReceipt': sReadReceipt,
|
ReadReceipt: sReadReceipt,
|
||||||
'Subject': sSubject,
|
Subject: sSubject,
|
||||||
'Text': sText
|
Text: sText
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {?Function} fCallback
|
* @param {?Function} fCallback
|
||||||
* @param {string} sIdentityID
|
* @param {Object} oData
|
||||||
* @param {string} sMessageFolder
|
|
||||||
* @param {string} sMessageUid
|
|
||||||
* @param {string} sSentFolder
|
|
||||||
* @param {string} sTo
|
|
||||||
* @param {string} sCc
|
|
||||||
* @param {string} sBcc
|
|
||||||
* @param {string} sReplyTo
|
|
||||||
* @param {string} sSubject
|
|
||||||
* @param {boolean} bTextIsHtml
|
|
||||||
* @param {string} sText
|
|
||||||
* @param {Array} aAttachments
|
|
||||||
* @param {(Array|null)} aDraftInfo
|
|
||||||
* @param {string} sInReplyTo
|
|
||||||
* @param {string} sReferences
|
|
||||||
* @param {boolean} bRequestDsn
|
|
||||||
* @param {boolean} bRequestReadReceipt
|
|
||||||
* @param {boolean} bMarkAsImportant
|
|
||||||
*/
|
*/
|
||||||
sendMessage(
|
sendMessage(fCallback, oData) {
|
||||||
fCallback,
|
this.defaultRequest(fCallback, 'SendMessage', oData, SEND_MESSAGE_AJAX_TIMEOUT);
|
||||||
sIdentityID,
|
|
||||||
sMessageFolder,
|
|
||||||
sMessageUid,
|
|
||||||
sSentFolder,
|
|
||||||
sTo,
|
|
||||||
sCc,
|
|
||||||
sBcc,
|
|
||||||
sReplyTo,
|
|
||||||
sSubject,
|
|
||||||
bTextIsHtml,
|
|
||||||
sText,
|
|
||||||
aAttachments,
|
|
||||||
aDraftInfo,
|
|
||||||
sInReplyTo,
|
|
||||||
sReferences,
|
|
||||||
bRequestDsn,
|
|
||||||
bRequestReadReceipt,
|
|
||||||
bMarkAsImportant
|
|
||||||
) {
|
|
||||||
this.defaultRequest(
|
|
||||||
fCallback,
|
|
||||||
'SendMessage',
|
|
||||||
{
|
|
||||||
'IdentityID': sIdentityID,
|
|
||||||
'MessageFolder': sMessageFolder,
|
|
||||||
'MessageUid': sMessageUid,
|
|
||||||
'SentFolder': sSentFolder,
|
|
||||||
'To': sTo,
|
|
||||||
'Cc': sCc,
|
|
||||||
'Bcc': sBcc,
|
|
||||||
'ReplyTo': sReplyTo,
|
|
||||||
'Subject': sSubject,
|
|
||||||
'TextIsHtml': bTextIsHtml ? '1' : '0',
|
|
||||||
'Text': sText,
|
|
||||||
'DraftInfo': aDraftInfo,
|
|
||||||
'InReplyTo': sInReplyTo,
|
|
||||||
'References': sReferences,
|
|
||||||
'Dsn': bRequestDsn ? '1' : '0',
|
|
||||||
'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
|
|
||||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
|
||||||
'Attachments': aAttachments
|
|
||||||
},
|
|
||||||
SEND_MESSAGE_AJAX_TIMEOUT
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -718,7 +602,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
folderClear(fCallback, sFolderFullNameRaw) {
|
folderClear(fCallback, sFolderFullNameRaw) {
|
||||||
this.defaultRequest(fCallback, 'FolderClear', {
|
this.defaultRequest(fCallback, 'FolderClear', {
|
||||||
'Folder': sFolderFullNameRaw
|
Folder: sFolderFullNameRaw
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -729,8 +613,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
folderSetSubscribe(fCallback, sFolderFullNameRaw, bSubscribe) {
|
folderSetSubscribe(fCallback, sFolderFullNameRaw, bSubscribe) {
|
||||||
this.defaultRequest(fCallback, 'FolderSubscribe', {
|
this.defaultRequest(fCallback, 'FolderSubscribe', {
|
||||||
'Folder': sFolderFullNameRaw,
|
Folder: sFolderFullNameRaw,
|
||||||
'Subscribe': bSubscribe ? '1' : '0'
|
Subscribe: bSubscribe ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -741,8 +625,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
folderSetCheckable(fCallback, sFolderFullNameRaw, bCheckable) {
|
folderSetCheckable(fCallback, sFolderFullNameRaw, bCheckable) {
|
||||||
this.defaultRequest(fCallback, 'FolderCheckable', {
|
this.defaultRequest(fCallback, 'FolderCheckable', {
|
||||||
'Folder': sFolderFullNameRaw,
|
Folder: sFolderFullNameRaw,
|
||||||
'Checkable': bCheckable ? '1' : '0'
|
Checkable: bCheckable ? 1 : 0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -759,11 +643,11 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'MessageMove',
|
'MessageMove',
|
||||||
{
|
{
|
||||||
'FromFolder': sFolder,
|
FromFolder: sFolder,
|
||||||
'ToFolder': sToFolder,
|
ToFolder: sToFolder,
|
||||||
'Uids': aUids.join(','),
|
Uids: aUids.join(','),
|
||||||
'MarkAsRead': bMarkAsRead ? '1' : '0',
|
MarkAsRead: bMarkAsRead ? 1 : 0,
|
||||||
'Learning': sLearning || ''
|
Learning: sLearning || ''
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
|
|
@ -779,9 +663,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
messagesCopy(fCallback, sFolder, sToFolder, aUids) {
|
messagesCopy(fCallback, sFolder, sToFolder, aUids) {
|
||||||
this.defaultRequest(fCallback, 'MessageCopy', {
|
this.defaultRequest(fCallback, 'MessageCopy', {
|
||||||
'FromFolder': sFolder,
|
FromFolder: sFolder,
|
||||||
'ToFolder': sToFolder,
|
ToFolder: sToFolder,
|
||||||
'Uids': aUids.join(',')
|
Uids: aUids.join(',')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -795,8 +679,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'MessageDelete',
|
'MessageDelete',
|
||||||
{
|
{
|
||||||
'Folder': sFolder,
|
Folder: sFolder,
|
||||||
'Uids': aUids.join(',')
|
Uids: aUids.join(',')
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
|
|
@ -829,9 +713,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'Contacts',
|
'Contacts',
|
||||||
{
|
{
|
||||||
'Offset': iOffset,
|
Offset: iOffset,
|
||||||
'Limit': iLimit,
|
Limit: iLimit,
|
||||||
'Search': sSearch
|
Search: sSearch
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
|
|
@ -847,9 +731,9 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
contactSave(fCallback, sRequestUid, sUid, aProperties) {
|
contactSave(fCallback, sRequestUid, sUid, aProperties) {
|
||||||
this.defaultRequest(fCallback, 'ContactSave', {
|
this.defaultRequest(fCallback, 'ContactSave', {
|
||||||
'RequestUid': sRequestUid,
|
RequestUid: sRequestUid,
|
||||||
'Uid': sUid.trim(),
|
Uid: sUid.trim(),
|
||||||
'Properties': aProperties
|
Properties: aProperties
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -859,7 +743,7 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
*/
|
*/
|
||||||
contactsDelete(fCallback, aUids) {
|
contactsDelete(fCallback, aUids) {
|
||||||
this.defaultRequest(fCallback, 'ContactsDelete', {
|
this.defaultRequest(fCallback, 'ContactsDelete', {
|
||||||
'Uids': aUids.join(',')
|
Uids: aUids.join(',')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -873,8 +757,8 @@ class RemoteUserAjax extends AbstractAjaxRemote {
|
||||||
fCallback,
|
fCallback,
|
||||||
'Suggestions',
|
'Suggestions',
|
||||||
{
|
{
|
||||||
'Query': sQuery,
|
Query: sQuery,
|
||||||
'Page': iPage
|
Page: iPage
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
|
|
|
||||||
|
|
@ -337,11 +337,33 @@ class ComposePopupView extends AbstractViewNext {
|
||||||
this.iTimer = 0;
|
this.iTimer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getMessageRequestParams(sSaveFolder)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
IdentityID: this.currentIdentity() ? this.currentIdentity().id() : '',
|
||||||
|
MessageFolder: this.draftFolder(),
|
||||||
|
MessageUid: this.draftUid(),
|
||||||
|
SaveFolder: sSaveFolder,
|
||||||
|
To: this.to(),
|
||||||
|
Cc: this.cc(),
|
||||||
|
Bcc: this.bcc(),
|
||||||
|
ReplyTo: this.replyTo(),
|
||||||
|
Subject: this.subject(),
|
||||||
|
TextIsHtml: this.oEditor && this.oEditor.isHtml() ? 1 : 0,
|
||||||
|
Text: this.oEditor ? this.oEditor.getData(true) : '',
|
||||||
|
DraftInfo: this.aDraftInfo,
|
||||||
|
InReplyTo: this.sInReplyTo,
|
||||||
|
References: this.sReferences,
|
||||||
|
MarkAsImportant: this.markAsImportant() ? 1 : 0,
|
||||||
|
Attachments: this.prepearAttachmentsForSendOrSave(),
|
||||||
|
// Only used at send, not at save:
|
||||||
|
Dsn: this.requestDsn() ? 1 : 0,
|
||||||
|
ReadReceiptRequest: this.requestReadReceipt() ? 1 : 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@command((self) => self.canBeSentOrSaved())
|
@command((self) => self.canBeSentOrSaved())
|
||||||
sendCommand() {
|
sendCommand() {
|
||||||
const sTo = this.to().trim(),
|
|
||||||
sCc = this.cc().trim(),
|
|
||||||
sBcc = this.bcc().trim();
|
|
||||||
let sSentFolder = FolderStore.sentFolder();
|
let sSentFolder = FolderStore.sentFolder();
|
||||||
|
|
||||||
this.attachmentsInProcessError(false);
|
this.attachmentsInProcessError(false);
|
||||||
|
|
@ -356,7 +378,7 @@ class ComposePopupView extends AbstractViewNext {
|
||||||
this.attachmentsPlace(true);
|
this.attachmentsPlace(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sTo && !sCc && !sBcc) {
|
if (!this.to().trim() && !this.cc().trim() && !this.bcc().trim()) {
|
||||||
this.emptyToError(true);
|
this.emptyToError(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -404,24 +426,7 @@ class ComposePopupView extends AbstractViewNext {
|
||||||
|
|
||||||
Remote.sendMessage(
|
Remote.sendMessage(
|
||||||
this.sendMessageResponse,
|
this.sendMessageResponse,
|
||||||
this.currentIdentity() ? this.currentIdentity().id() : '',
|
this.getMessageRequestParams(sSentFolder)
|
||||||
this.draftFolder(),
|
|
||||||
this.draftUid(),
|
|
||||||
sSentFolder,
|
|
||||||
sTo,
|
|
||||||
this.cc(),
|
|
||||||
this.bcc(),
|
|
||||||
this.replyTo(),
|
|
||||||
this.subject(),
|
|
||||||
this.oEditor ? this.oEditor.isHtml() : false,
|
|
||||||
this.oEditor ? this.oEditor.getData(true) : '',
|
|
||||||
this.prepearAttachmentsForSendOrSave(),
|
|
||||||
this.aDraftInfo,
|
|
||||||
this.sInReplyTo,
|
|
||||||
this.sReferences,
|
|
||||||
this.requestDsn(),
|
|
||||||
this.requestReadReceipt(),
|
|
||||||
this.markAsImportant()
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -445,22 +450,7 @@ class ComposePopupView extends AbstractViewNext {
|
||||||
|
|
||||||
Remote.saveMessage(
|
Remote.saveMessage(
|
||||||
this.saveMessageResponse,
|
this.saveMessageResponse,
|
||||||
this.currentIdentity() ? this.currentIdentity().id() : '',
|
this.getMessageRequestParams(FolderStore.draftFolder())
|
||||||
this.draftFolder(),
|
|
||||||
this.draftUid(),
|
|
||||||
FolderStore.draftFolder(),
|
|
||||||
this.to(),
|
|
||||||
this.cc(),
|
|
||||||
this.bcc(),
|
|
||||||
this.replyTo(),
|
|
||||||
this.subject(),
|
|
||||||
this.oEditor ? this.oEditor.isHtml() : false,
|
|
||||||
this.oEditor ? this.oEditor.getData(true) : '',
|
|
||||||
this.prepearAttachmentsForSendOrSave(),
|
|
||||||
this.aDraftInfo,
|
|
||||||
this.sInReplyTo,
|
|
||||||
this.sReferences,
|
|
||||||
this.markAsImportant()
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5107,7 +5107,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
$sMessageFolder = $this->GetActionParam('MessageFolder', '');
|
$sMessageFolder = $this->GetActionParam('MessageFolder', '');
|
||||||
$sMessageUid = $this->GetActionParam('MessageUid', '');
|
$sMessageUid = $this->GetActionParam('MessageUid', '');
|
||||||
|
|
||||||
$sDraftFolder = $this->GetActionParam('DraftFolder', '');
|
$sDraftFolder = $this->GetActionParam('SaveFolder', '');
|
||||||
if (0 === strlen($sDraftFolder))
|
if (0 === strlen($sDraftFolder))
|
||||||
{
|
{
|
||||||
throw new Exceptions\ClientException(Notifications::UnknownError);
|
throw new Exceptions\ClientException(Notifications::UnknownError);
|
||||||
|
|
@ -5333,7 +5333,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
|
|
||||||
$sDraftFolder = $this->GetActionParam('MessageFolder', '');
|
$sDraftFolder = $this->GetActionParam('MessageFolder', '');
|
||||||
$sDraftUid = $this->GetActionParam('MessageUid', '');
|
$sDraftUid = $this->GetActionParam('MessageUid', '');
|
||||||
$sSentFolder = $this->GetActionParam('SentFolder', '');
|
$sSentFolder = $this->GetActionParam('SaveFolder', '');
|
||||||
$aDraftInfo = $this->GetActionParam('DraftInfo', null);
|
$aDraftInfo = $this->GetActionParam('DraftInfo', null);
|
||||||
$bDsn = '1' === (string) $this->GetActionParam('Dsn', '0');
|
$bDsn = '1' === (string) $this->GetActionParam('Dsn', '0');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue