/*jslint browser : true, continue : true,
devel : true, indent : 2, maxerr : 50,
newcap : true, nomen : true, plusplus : true,
regexp : true, sloppy : true, vars : false,
white : true
*/
/*global $, app */
app.inbox = (function() {
"use strict";
//---------------- BEGIN MODULE SCOPE VARIABLES --------------
var stateMap = {},
configModule,
initModule,
terminateModule,
getMessages,
timerVar=null;
//----------------- END MODULE SCOPE VARIABLES ---------------
//------------------- BEGIN UTILITY METHODS ------------------
getMessages = function() {
stateMap.$appList.html("
Checking...
");
app.api.get("mail/salesandsupportsummaries", function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
stateMap.$appList.empty();
var newMessageCount = 0;
var lastAccount = "";
//The list
var displayedItems = 0;
var generatedHtml = '';
//Iterate the results
for (var y = 0; y < res.length; y++) {
var obj = res[y];
if (!obj.flags.includes("deleted")) {
if (!obj.flags.includes("seen")) {
newMessageCount++;
}
var displayClass = obj.flags.includes("seen")
? "border-secondary text-secondary"
: "border-primary text-primary";
var answeredIconClass = obj.flags.includes("answered")
? " mdi mdi-reply"
: "";
//Make a group on change of account
if (lastAccount !== obj.account) {
lastAccount = obj.account;
//Insert as 'header' in list
generatedHtml +=
'- ' + lastAccount + "
";
}
//LIST ITEM
generatedHtml +=
'- " +
obj.subject +
" - " +
obj.from +
"
";
displayedItems++;
} //if not deleted
} //loop
//Nothing to display?
if (!displayedItems) {
generatedHtml +=
'- NO MESSAGES - ' +
moment().format("YYYY-MM-DD LT") +
"
";
}
//close list group
generatedHtml += "
";
generatedHtml +=
'Last check: ' +
moment().format("YYYY-MM-DD LT") +
"
";
//SET IT
stateMap.$appList.append(generatedHtml);
//case 3516
if (newMessageCount > 0) {
document.title =
newMessageCount +
" NEW message" +
(newMessageCount == 1 ? "" : "s");
} else {
document.title = "No new messages";
}
}
//do it every 5 minutes
timerVar=setTimeout(getMessages,5*60*1000);
//timerVar=setTimeout(getMessages,5000);
console.log("INBOX.GETMESSAGES - started timer " + timerVar);
});
};
//-------------------- END UTILITY METHODS -------------------
//------------------- BEGIN EVENT HANDLERS -------------------
//-------------------- END EVENT HANDLERS --------------------
//------------------- BEGIN PUBLIC METHODS -------------------
//CONFIGMODULE
//
configModule = function(context) {
stateMap.context = context.context;
if (stateMap.context.params.id) {
stateMap.id = stateMap.context.params.id;
}
};
//INITMODULE
//
initModule = function($container) {
if (typeof $container === "undefined") {
$container = $("#app-shell-main-content");
}
$container.html(Handlebars.templates["app.inbox"]({}));
stateMap.$appList = $("#rf-list-div");
getMessages();
//auto refresh every 10 minutes
// intervalRef = setInterval(function() {
// getMessages();
// }, 10 * 60 * 1000);
app.nav.contextClear();
////app.nav.setContextTitle("inbox");
};
// TERMINATE MODULE
//
terminateModule = function() {
if(timerVar!=null){
clearTimeout(timerVar);
console.log("INBOX.TERMINATEMODULE - cleared timer" + timerVar);
}
//clear up event handler
// clearInterval(intervalRef);
// intervalRef=null;
//console.log("INBOX.TERMINATEMODULE");
};
//PUBLIC METHODS
//
return {
configModule: configModule,
initModule: initModule,
terminateModule: terminateModule
};
//------------------- END PUBLIC METHODS ---------------------
})();