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 <solomax...@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") {

Reply via email to