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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8009a74  [OPENMEETINGS-1988] dublicated action requests are filtered
8009a74 is described below

commit 8009a740cac9ae4c68919514bf9c2be30fe1367e
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Wed Feb 13 16:50:37 2019 +0700

    [OPENMEETINGS-1988] dublicated action requests are filtered
---
 .../web/room/activities/ActivitiesPanel.java       | 22 ++++++++++++++++++----
 .../openmeetings/web/room/activities/activities.js |  8 ++++----
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
index 043fb8e..b7789d3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
@@ -48,6 +48,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 public class ActivitiesPanel extends Panel {
@@ -87,7 +88,7 @@ public class ActivitiesPanel extends Panel {
                                }
                                switch (act) {
                                        case close:
-                                               remove(id, target);
+                                               remove(target, id);
                                                break;
                                        case decline:
                                                if 
(room.getClient().hasRight(Right.moderator)) {
@@ -171,6 +172,12 @@ public class ActivitiesPanel extends Panel {
                if (shouldSkip(self, a)) {
                        return;
                }
+               if (a.getType().isAction()) {
+                       remove(handler, activities.entrySet().parallelStream()
+                               .filter(e -> 
a.getSender().equals(e.getValue().getSender()) && a.getType() == 
e.getValue().getType())
+                               .map(e -> e.getValue().getId())
+                               .toArray(String[]::new));
+               }
                activities.put(a.getId(), a);
                String text = "";
                final String name = self ? getString("1362") : a.getName();
@@ -241,9 +248,16 @@ public class ActivitiesPanel extends Panel {
                handler.appendJavaScript(new 
StringBuilder("Activities.add(").append(aobj.toString()).append(");"));
        }
 
-       public void remove(String uid, IPartialPageRequestHandler handler) {
-               activities.remove(uid);
-               
handler.appendJavaScript(String.format("Activities.remove('%s');", uid));
+       public void remove(IPartialPageRequestHandler handler, String...ids) {
+               if (ids.length < 1) {
+                       return;
+               }
+               JSONArray arr = new JSONArray();
+               for (String id : ids) {
+                       arr.put(id);
+                       activities.remove(id);
+               }
+               
handler.appendJavaScript(String.format("Activities.remove(%s);", arr));
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
index f97dc53..7ce2d68 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
@@ -84,8 +84,10 @@ var Activities = function() {
        function _action(name, val) {
                activityAction($('.room.box').data('room-id'), name, val);
        }
-       function _remove(id) {
-               $('#' + _getId(id)).remove();
+       function _remove(ids) {
+               for (let i = 0; i < ids.length; ++i) {
+                       $('#' + _getId(ids[i])).remove();
+               }
                _updateCount();
        }
        function _clearItem(id) {
@@ -168,8 +170,6 @@ var Activities = function() {
                                fnd.hide();
                        }
                        a.find('.activity-close').click(function() {
-                               a.remove();
-                               _updateCount();
                                _action('close', obj.id);
                        });
                        a.find('.activity-text').text(obj.text);

Reply via email to