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);
});
}