You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/02/11 08:06:15 UTC

[openmeetings] branch 4.0.x updated: [OPENMEETINGS-2008] chat clean affects all users

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch 4.0.x
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/4.0.x by this push:
     new 7e9e6cb  [OPENMEETINGS-2008] chat clean affects all users
7e9e6cb is described below

commit 7e9e6cb992e779ed31ddbb4ab737a7eb8b380697
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Feb 11 15:01:35 2019 +0700

    [OPENMEETINGS-2008] chat clean affects all users
---
 .../openmeetings/web/user/chat/ChatToolbar.java      | 20 +++++++++++---------
 .../apache/openmeetings/web/user/chat/raw-chat.js    |  6 +++++-
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
index 62872a7..f90cab1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
@@ -33,6 +33,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ChatDao;
 import org.apache.openmeetings.db.entity.basic.ChatMessage;
 import org.apache.openmeetings.db.entity.user.User;
@@ -50,6 +51,7 @@ import org.apache.wicket.request.resource.ResourceStreamResource;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 
+import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.core.IJQueryWidget.JQueryWidget;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.IWysiwygToolbar;
 
@@ -180,26 +182,26 @@ public class ChatToolbar extends Panel implements IWysiwygToolbar {
 
 			@Override
 			protected void onSubmit(AjaxRequestTarget target) {
-				final ChatDao dao = getBean(ChatDao.class);
+				final ChatDao chatDao = getBean(ChatDao.class);
 				final String scope = chatForm.getScope();
 				final boolean admin = hasAdminLevel(getRights());
 				chatForm.process(
 					() -> {
 						if (admin) {
-							dao.deleteGlobal();
-							clean(target, ID_ALL);
+							chatDao.deleteGlobal();
+							WebSocketHelper.sendAll(cleanMsg(ID_ALL).toString());
 						}
 						return true;
 					}
 					, r -> {
 						if (admin || isModerator(getUserId(), r.getId())) {
-							dao.deleteRoom(r.getId());
-							clean(target, scope);
+							chatDao.deleteRoom(r.getId());
+							WebSocketHelper.sendRoom(r.getId(), cleanMsg(scope));
 						}
 						return true;
 					}, u -> {
-						dao.deleteUser(u.getId());
-						clean(target, scope);
+						chatDao.deleteUser(u.getId());
+						WebSocketHelper.sendUser(u.getId(), cleanMsg(scope).toString());
 						return true;
 					});
 			}
@@ -217,8 +219,8 @@ public class ChatToolbar extends Panel implements IWysiwygToolbar {
 				}));
 	}
 
-	private static void clean(AjaxRequestTarget target, String scope) {
-		target.appendJavaScript("$('#" + scope + "').html('')");
+	private static JSONObject cleanMsg(String scope) {
+		return new JSONObject().put("type", "chat").put("action", "clean").put("scope", scope);
 	}
 
 	void update(AjaxRequestTarget target) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
index 366264d..d89e06b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
@@ -437,7 +437,11 @@ $(function() {
 			if (m) {
 				switch(m.type) {
 					case "chat":
-						Chat.addMessage(m);
+						if ('clean' === m.action) {
+							$('#' + m.scope).html('');
+						} else {
+							Chat.addMessage(m);
+						}
 						break;
 					case "typing":
 						if (typeof(typingActivity) === "function") {