/home/ivoiecob/email.hirewise-va.com/modules/MailWebclient/js/Ajax.js
'use strict'
const _ = require('underscore')
const TextUtils = require('%PathToCoreWebclientModule%/js/utils/Text.js'),
Types = require('%PathToCoreWebclientModule%/js/utils/Types.js'),
Ajax = require('%PathToCoreWebclientModule%/js/Ajax.js'),
App = require('%PathToCoreWebclientModule%/js/App.js'),
Screens = require('%PathToCoreWebclientModule%/js/Screens.js')
const Settings = require('modules/%ModuleName%/js/Settings.js')
Ajax.registerAbortRequestHandler(Settings.ServerModuleName, function (oRequest, oOpenedRequest) {
var oParameters = oRequest.Parameters,
oOpenedParameters = oOpenedRequest.Parameters
switch (oRequest.Method) {
case 'MoveMessages':
case 'DeleteMessages':
return (
oOpenedRequest.Method === 'GetRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetUnifiedRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetMessage' ||
oOpenedRequest.Method === 'GetUnifiedMailboxMessages' ||
oOpenedRequest.Method === 'GetMessagesByFolders' ||
(oOpenedRequest.Method === 'GetMessages' && oOpenedParameters.Folder === oParameters.Folder)
)
case 'GetMessages':
case 'GetUnifiedMailboxMessages':
return (
oOpenedRequest.Method === 'GetUnifiedMailboxMessages' ||
oOpenedRequest.Method === 'GetMessagesByFolders' ||
(oOpenedRequest.Method === 'GetMessages' && oOpenedParameters.Folder === oParameters.Folder)
)
case 'SetMessagesSeen':
case 'SetMessageFlagged':
return (
oOpenedRequest.Method === 'GetRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetUnifiedRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetUnifiedMailboxMessages' ||
oOpenedRequest.Method === 'GetMessagesByFolders' ||
(oOpenedRequest.Method === 'GetMessages' && oOpenedParameters.Folder === oParameters.Folder)
)
case 'SetAllMessagesSeen':
return (
oOpenedRequest.Method === 'GetRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetUnifiedRelevantFoldersInformation' ||
(oOpenedRequest.Method === 'GetMessages' && oOpenedParameters.Folder === oParameters.Folder)
)
case 'ClearFolder':
// GetRelevantFoldersInformation-request aborted during folder cleaning, not to get the wrong information.
return (
oOpenedRequest.Method === 'GetRelevantFoldersInformation' ||
oOpenedRequest.Method === 'GetUnifiedRelevantFoldersInformation' ||
(oOpenedRequest.Method === 'GetMessages' && oOpenedParameters.Folder === oParameters.Folder)
)
case 'GetRelevantFoldersInformation':
return (
(oOpenedRequest.Method === 'GetRelevantFoldersInformation' &&
oParameters.AccountID === oOpenedParameters.AccountID) ||
oOpenedRequest.Method === 'GetUnifiedRelevantFoldersInformation'
)
case 'GetMessagesFlags':
return oOpenedRequest.Method === 'GetMessagesFlags'
}
return false
})
module.exports = {
getOpenedRequest: function (sMethod) {
Ajax.getOpenedRequest('Mail', sMethod)
},
hasOpenedRequests: function (sMethod) {
return Ajax.hasOpenedRequests('Mail', sMethod || '')
},
hasInternetConnectionProblem: function () {
return Ajax.hasInternetConnectionProblem()
},
registerOnAllRequestsClosedHandler: Ajax.registerOnAllRequestsClosedHandler,
send: function (sMethod, oParameters, fResponseHandler, oContext) {
var MailCache = require('modules/%ModuleName%/js/Cache.js'),
fBaseResponseHandler = function (oResponse, oRequest) {
if (!oResponse.Result && oResponse.ErrorCode === 4002 && App.getUserRole() !== Enums.UserRole.Anonymous) {
var AccountList = require('modules/%ModuleName%/js/AccountList.js'),
aErrorMessageParts = oResponse.ErrorMessage.split(':'),
iAccountId = Types.pInt(aErrorMessageParts.shift()),
oAccount = AccountList.getAccount(iAccountId),
sErrorMessage = aErrorMessageParts.join(':')
if (oAccount && oAccount.bDefault) {
oResponse = { Result: false, ErrorCode: Enums.Errors.AuthError }
App.logoutAndGotoLogin()
} else if (oAccount) {
oAccount.passwordMightBeIncorrect(true)
var sResultError = TextUtils.i18n('%MODULENAME%/ERROR_CREDENTIALS_INCORRECT', { EMAIL: oAccount.email() })
if (sErrorMessage) {
sResultError += ' (' + sErrorMessage + ')'
}
Screens.showError(sResultError, true)
oResponse = { Result: false, ErrorCode: Enums.Errors.NotDisplayedError }
}
}
if (_.isFunction(fResponseHandler)) {
fResponseHandler.apply(oContext, [oResponse, oRequest])
}
}
if (oParameters && !oParameters.AccountID && !['GetUnifiedMailboxMessages', 'CreateAccount'].includes(sMethod)) {
oParameters.AccountID = MailCache.currentAccountId()
}
Ajax.send(Settings.ServerModuleName, sMethod, oParameters, fBaseResponseHandler, null)
},
}