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 a4db988 [OPENMEETINGS-2049] room via hash seems to be more stable
a4db988 is described below
commit a4db988ead738101c5e1a46261161c21e485761d
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed Mar 27 18:10:10 2019 +0700
[OPENMEETINGS-2049] room via hash seems to be more stable
---
.../java/org/apache/openmeetings/web/common/MainPanel.java | 8 ++++----
.../org/apache/openmeetings/web/common/OmWebSocketPanel.java | 11 ++++++++---
.../java/org/apache/openmeetings/web/room/wb/raw-wb-board.js | 12 +++++++++---
3 files changed, 21 insertions(+), 10 deletions(-)
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 73eee59..934594e 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -124,6 +124,10 @@ public class MainPanel extends Panel {
setAuto(true);
setOutputMarkupId(true);
setOutputMarkupPlaceholderTag(true);
+ }
+
+ @Override
+ protected void onInitialize() {
add(new OmWebSocketPanel("ws-panel") {
private static final long serialVersionUID = 1L;
@@ -182,10 +186,6 @@ public class MainPanel extends Panel {
return getClient();
}
});
- }
-
- @Override
- protected void onInitialize() {
menu = new MenuPanel("menu", getMainMenu());
add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
add(contents.add(getClient() == null || panel == null ? EMPTY :
panel).setOutputMarkupId(true).setMarkupId("contents"));
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
index f626da9..868c819 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.common;
import static org.apache.openmeetings.core.remote.KurentoHandler.KURENTO_TYPE;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import java.util.concurrent.atomic.AtomicBoolean;
+
import org.apache.openmeetings.core.remote.KurentoHandler;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.entity.basic.Client;
@@ -51,6 +53,7 @@ public abstract class OmWebSocketPanel extends Panel {
private static final long serialVersionUID = 1L;
private static final Logger log =
LoggerFactory.getLogger(OmWebSocketPanel.class);
public static final String CONNECTED_MSG = "socketConnected";
+ private final AtomicBoolean connected = new AtomicBoolean();
private final AbstractAjaxTimerBehavior pingTimer = new
AbstractAjaxTimerBehavior(Duration.seconds(30)) {
private static final long serialVersionUID = 1L;
@@ -80,9 +83,11 @@ public abstract class OmWebSocketPanel extends Panel {
@Override
protected void onMessage(WebSocketRequestHandler handler,
TextMessage msg) {
if (CONNECTED_MSG.equals(msg.getText())) {
- OmWebSocketPanel.this.onConnect(handler);
- log.debug("WebSocketBehavior:: pingTimer is
attached");
- pingTimer.restart(handler);
+ if (connected.compareAndSet(false, true)) {
+
OmWebSocketPanel.this.onConnect(handler);
+ log.debug("WebSocketBehavior::
pingTimer is attached");
+ pingTimer.restart(handler);
+ }
} else {
final JSONObject m;
try {
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
index 698bdf0..a2bb582 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
@@ -15,9 +15,15 @@ var Wb = function() {
function _setActive() {
!!t && t.find('.om-icon.' + mode).addClass(ACTIVE);
}
+ function __validBtn(btn) {
+ return !!btn && btn.length === 1
+ && typeof(btn.data) === 'function'
+ && typeof(btn.data()) === 'object'
+ && typeof(btn.data().deactivate) === 'function';
+ }
function _btnClick(toolType) {
const b = _getBtn();
- if (b.length && b.hasClass(ACTIVE)) {
+ if (__validBtn(b)) {
b.data().deactivate();
}
_cleanActive();
@@ -474,7 +480,7 @@ var Wb = function() {
_updateZoomPanel();
if (ccount !== canvases.length) {
const b = _getBtn();
- if (b.length && b.hasClass(ACTIVE)) {
+ if (__validBtn(b)) {
b.data().deactivate();
b.data().activate();
}
@@ -753,7 +759,7 @@ var Wb = function() {
wb.setRole = function(_role) {
if (role !== _role) {
const btn = _getBtn();
- if (!!btn && btn.length === 1) {
+ if (__validBtn(btn)) {
btn.data().deactivate();
}
a.find('.tools').remove();