Index: lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java
===================================================================
diff -u -re64a90c0cc74118c5b88f5cbae323065abd59cac -rbe6b9658350d706f615e5ce3e4a6b96b8513c5ee
--- lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java (.../PresenceChatAction.java) (revision e64a90c0cc74118c5b88f5cbae323065abd59cac)
+++ lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java (.../PresenceChatAction.java) (revision be6b9658350d706f615e5ce3e4a6b96b8513c5ee)
@@ -88,7 +88,11 @@
// roster is used also to get messages by other users, so we need to synchronise on it
synchronized (roster) {
Date currentDate = new Date(currentTime);
- activeUsers.put(nickname, currentDate);
+
+ if (!StringUtils.isBlank(nickname)) {
+ // blank nickname means this is just check but user is not really using chat
+ activeUsers.put(nickname, currentDate);
+ }
if (currentTime - lastCheckTime > IPresenceChatService.PRESENCE_IDLE_TIMEOUT) {
// store active users
@@ -104,7 +108,7 @@
}
lastCheckTime = currentTime;
- } else {
+ } else if (!StringUtils.isBlank(nickname)) {
roster.put(nickname, currentDate);
}
@@ -123,13 +127,13 @@
HttpServletResponse response) {
try {
long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
- boolean presenceShown = Boolean.parseBoolean(request.getParameter("presenceShown"));
+ boolean getMessages = Boolean.parseBoolean(request.getParameter("getMessages"));
// this is the current user
String nickname = request.getParameter("to");
-
+
JSONObject responseJSON = new JSONObject();
// no need to fetch messages if presence is collapsed
- if (presenceShown) {
+ if (getMessages && !StringUtils.isBlank(nickname)) {
// this is the other user from opened tab, null if it is group chat
String from = request.getParameter("from");
if (StringUtils.isBlank(from)) {
Index: lams_learning/web/includes/javascript/presence.js
===================================================================
diff -u -re64a90c0cc74118c5b88f5cbae323065abd59cac -rbe6b9658350d706f615e5ce3e4a6b96b8513c5ee
--- lams_learning/web/includes/javascript/presence.js (.../presence.js) (revision e64a90c0cc74118c5b88f5cbae323065abd59cac)
+++ lams_learning/web/includes/javascript/presence.js (.../presence.js) (revision be6b9658350d706f615e5ce3e4a6b96b8513c5ee)
@@ -214,18 +214,25 @@
// skip another attempt if previous did not return yet (slow server?)
if (!pollInProgress) {
pollInProgress = true;
- var selected = presenceChatTabs.tabs('option','selected');
- var from = getUserFromTabIndex(selected);
- if (groupChatInfo.nick == from) {
- from = null;
+ var from = null;
+ var selected = null;
+ var lastMessageUid = null;
+ var getMessages = presenceShown && presenceImEnabled;
+ if (getMessages) {
+ selected = presenceChatTabs.tabs('option','active');
+ from = getUserFromTabIndex(selected);
+ if (groupChatInfo.nick == from) {
+ from = null;
+ }
+ lastMessageUid = roster.lastMessageUids[from ? from : 'group'];
}
-
+
$.ajax({
url : actionUrl,
data : {'method' : 'getChatContent',
'lessonID' : lessonId,
- 'presenceShown' : presenceShown,
- 'lastMessageUid' : roster.lastMessageUids[from ? from : 'group'],
+ 'getMessages' : getMessages,
+ 'lastMessageUid' : lastMessageUid,
'to' : nickname,
'from' : from
},
Index: lams_learning/web/presenceChat.jsp
===================================================================
diff -u -re64a90c0cc74118c5b88f5cbae323065abd59cac -rbe6b9658350d706f615e5ce3e4a6b96b8513c5ee
--- lams_learning/web/presenceChat.jsp (.../presenceChat.jsp) (revision e64a90c0cc74118c5b88f5cbae323065abd59cac)
+++ lams_learning/web/presenceChat.jsp (.../presenceChat.jsp) (revision be6b9658350d706f615e5ce3e4a6b96b8513c5ee)
@@ -12,9 +12,9 @@
var lamsUrl = "