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 93d8bc5  [OPENMEETINGS-2073] cleanWb REST call perform real-time clean
93d8bc5 is described below

commit 93d8bc551e6bef4e4dcf476dfd70ba4bd14ac4ff
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu May 23 11:45:49 2019 +0700

    [OPENMEETINGS-2073] cleanWb REST call perform real-time clean
---
 .../apache/openmeetings/db/manager/IWhiteboardManager.java   |  2 +-
 .../java/org/apache/openmeetings/db/util/ws/RoomMessage.java |  1 +
 .../org/apache/openmeetings/web/app/WhiteboardManager.java   | 12 +++++++++++-
 .../java/org/apache/openmeetings/web/room/RoomPanel.java     |  5 +++++
 .../org/apache/openmeetings/web/room/wb/AbstractWbPanel.java |  4 ++++
 .../java/org/apache/openmeetings/web/room/wb/WbPanel.java    |  7 +++++++
 .../java/org/apache/openmeetings/web/room/wb/raw-wb-area.js  | 12 ++++++++++++
 .../org/apache/openmeetings/webservice/RoomWebService.java   |  2 +-
 8 files changed, 42 insertions(+), 3 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
index 9e2a3cd..d8f02fe 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
@@ -22,5 +22,5 @@ import org.apache.openmeetings.db.dto.room.Whiteboards;
 
 public interface IWhiteboardManager {
        Whiteboards get(Long roomId);
-       void remove(Long roomId);
+       void clean(Long roomId, Long userId);
 }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
index 9d48ca5..3331380 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
@@ -54,6 +54,7 @@ public class RoomMessage implements IWebSocketPushMessage {
                , muteOthers
                , quickPollUpdated
                , kurentoStatus
+               , wbReload
        }
        private final Date timestamp;
        private final String uid;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index a213207..e4d6681 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 
 import java.util.ArrayList;
@@ -32,13 +33,16 @@ import java.util.concurrent.TimeUnit;
 
 import javax.annotation.PostConstruct;
 
+import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.RoomFile;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.manager.IWhiteboardManager;
+import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -87,7 +91,7 @@ public class WhiteboardManager implements IWhiteboardManager {
        }
 
        @Override
-       public void remove(Long roomId) {
+       public void clean(Long roomId, Long userId) {
                if (roomId == null) {
                        return;
                }
@@ -100,6 +104,12 @@ public class WhiteboardManager implements 
IWhiteboardManager {
                                        map().unlock(roomId);
                                }
                        }
+                       new Thread(() -> {
+                               ensureApplication();
+                               User u = new User();
+                               u.setId(userId);
+                               WebSocketHelper.sendRoom(new 
RoomMessage(roomId, u, RoomMessage.Type.wbReload));
+                       }).start();
                } catch (InterruptedException e) {
                        log.warn("Unexpected exception while map clean-up", e);
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index f1abfa3..4734df8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -540,6 +540,11 @@ public class RoomPanel extends BasePanel {
                                        case kurentoStatus:
                                                menu.update(handler);
                                                break;
+                                       case wbReload:
+                                               if (Room.Type.interview != 
r.getType()) {
+                                                       wb.reloadWb(handler);
+                                               }
+                                               break;
                                }
                        }
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
index be492e2..463cd1b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
@@ -53,6 +53,10 @@ public abstract class AbstractWbPanel extends Panel {
                return this;
        }
 
+       public void reloadWb(IPartialPageRequestHandler handler) {
+               //designed to be empty
+       }
+
        protected abstract String getRole();
 
        /**
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index de26a3f..0ee5598 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -183,6 +183,13 @@ public class WbPanel extends AbstractWbPanel {
        }
 
        @Override
+       public void reloadWb(IPartialPageRequestHandler handler) {
+               StringBuilder sb = new StringBuilder("WbArea.doCleanAll();");
+               internalWbLoad(sb);
+               handler.appendJavaScript(sb);
+       }
+
+       @Override
        public void processWbAction(WbAction a, JSONObject obj, 
IPartialPageRequestHandler handler) throws IOException {
                Client c = rp.getClient();
                if (c == null) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index 59d7f6b..f4c189c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -439,5 +439,17 @@ var DrawWbArea = function() {
                $(window).off('keyup', _deleteHandler);
        };
        self.updateAreaClass = function() {};
+       self.doCleanAll = function() {
+               if (!_inited) {
+                       return;
+               }
+               tabs.find('li').each(function() {
+                       const wbId = $(this).data('wb-id')
+                               , tabId = self.getWbTabId(wbId);
+                       $(this).remove();
+                       $('#' + tabId).remove();
+               });
+               refreshTabs();
+       };
        return self;
 };
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index 99414b6..56de7da 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -423,7 +423,7 @@ public class RoomWebService extends BaseWebService {
        {
                log.debug("[cleanwb] room id {}", id);
                return performCall(sid, User.Right.Soap, sd -> {
-                       wbManager.remove(id);
+                       wbManager.clean(id, sd.getUserId());
                        return new ServiceResult("", Type.SUCCESS);
                });
        }

Reply via email to