You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2022/12/11 09:08:00 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2253] video-pod size/position is preserved; code clean-up

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 9e05fa506 [OPENMEETINGS-2253] video-pod size/position is preserved; code clean-up
9e05fa506 is described below

commit 9e05fa506be52ad1c78f6e2b844ebf2d6f009af7
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Dec 11 16:07:51 2022 +0700

    [OPENMEETINGS-2253] video-pod size/position is preserved; code clean-up
---
 .../openmeetings/core/documents/LibraryChartLoader.java   |  8 +++-----
 .../org/apache/openmeetings/db/dao/server/OAuth2Dao.java  |  3 +--
 .../apache/openmeetings/backup/converter/WbConverter.java |  3 +--
 .../src/main/front/room/src/video-manager-util.js         | 15 +++++++++++++++
 openmeetings-web/src/main/front/room/src/video.js         | 15 ++++++++++++++-
 .../openmeetings/web/admin/AdminUserChoiceProvider.java   |  2 +-
 6 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
index 8379c2542..bb9a6bbfc 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
@@ -25,7 +25,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.slf4j.Logger;
@@ -40,8 +39,7 @@ public class LibraryChartLoader {
 
 	private LibraryChartLoader() {}
 
-	@SuppressWarnings("rawtypes")
-	public static List loadChart(File dir, String fileName) {
+	public static List<?> loadChart(File dir, String fileName) {
 		try {
 			File file = new File(dir, fileName + CHART_EXT);
 
@@ -53,11 +51,11 @@ public class LibraryChartLoader {
 			try (InputStream is = new FileInputStream(file);
 					BufferedReader reader = new BufferedReader(new InputStreamReader(is, UTF_8)))
 			{
-				return (List) xStream.fromXML(reader);
+				return (List<?>) xStream.fromXML(reader);
 			}
 		} catch (Exception err) {
 			log.error("Unexpected error while loading chart", err);
 		}
-		return new ArrayList<>();
+		return List.of();
 	}
 }
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
index c22823bb4..a81d76bea 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
@@ -21,7 +21,6 @@ package org.apache.openmeetings.db.dao.server;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isAllowRegisterOauth;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -49,7 +48,7 @@ public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
 
 	public List<OAuthServer> getActive() {
 		if (!isAllowRegisterOauth()) {
-			return new ArrayList<>();
+			return List.of();
 		}
 		TypedQuery<OAuthServer> query = em.createNamedQuery("getEnabledOAuthServers", OAuthServer.class);
 		return query.getResultList();
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
index ed7c8fbd2..57bcaea09 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
@@ -33,7 +33,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -322,6 +321,6 @@ public class WbConverter {
 		} catch (Exception err) {
 			log.error("loadWmlFile", err);
 		}
-		return new ArrayList<>();
+		return List.of();
 	}
 }
diff --git a/openmeetings-web/src/main/front/room/src/video-manager-util.js b/openmeetings-web/src/main/front/room/src/video-manager-util.js
index 15c4abb4d..e3d7c4fd2 100644
--- a/openmeetings-web/src/main/front/room/src/video-manager-util.js
+++ b/openmeetings-web/src/main/front/room/src/video-manager-util.js
@@ -1,10 +1,24 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
 let share;
 
+function __savePod(v) {
+	const opts = Room.getOptions();
+	if (!opts.interview && v && v.find('video').length > 0 && v.data('clientType') === 'WEBCAM' && v.dialog('instance')) {
+		const userUI = $(`#user${v.data('clientUid')}`)
+			, widget = v.dialog('widget');
+		userUI.data('video-pod', {
+			x: widget.css('left')
+			, y: widget.css('top')
+			, w: widget.css('width')
+			, h: widget.css('height')
+		});
+	}
+}
 function _closeV(v) {
 	if (!v || v.length < 1) {
 		return;
 	}
+	__savePod(v);
 	if (v.dialog('instance') !== undefined) {
 		v.dialog('destroy');
 	}
@@ -48,6 +62,7 @@ module.exports = {
 	, sendMessage: (_m) => {
 		OmUtil.sendMessage(_m, {type: 'kurento'});
 	}
+	, savePod: __savePod
 	, closeV: _closeV
 	, close: (uid, showShareBtn) => {
 		const v = $('#' + VideoUtil.getVid(uid));
diff --git a/openmeetings-web/src/main/front/room/src/video.js b/openmeetings-web/src/main/front/room/src/video.js
index da71ed5c2..55375c44f 100644
--- a/openmeetings-web/src/main/front/room/src/video.js
+++ b/openmeetings-web/src/main/front/room/src/video.js
@@ -383,6 +383,7 @@ module.exports = class Video {
 				sd.camEnabled = _c.camEnabled;
 				const state = __getState();
 				if (camChanged) {
+					VideoMgrUtil.savePod(v);
 					v.off();
 					if (v.dialog('instance')) {
 						v.dialog('destroy');
@@ -409,7 +410,18 @@ module.exports = class Video {
 			const _id = VideoUtil.getVid(sd.uid);
 			_resizeDlgArea(size.width, size.height);
 			if (hasVideo && !isSharing && !isRecording) {
-				VideoUtil.setPos(v, VideoUtil.getPos(VideoUtil.getRects(VIDWIN_SEL, _id), sd.width, sd.height + 25));
+				// let's try to restore size+position
+				const opts = Room.getOptions()
+					, stored = $(`#user${sd.cuid}`).data('video-pod');
+				if (!opts.interview && stored) {
+					const widget = v.dialog('widget');
+					widget.css('left', stored.x);
+					widget.css('top', stored.y)
+					widget.css('width', stored.w);
+					widget.css('height', stored.h)
+				} else {
+					VideoUtil.setPos(v, VideoUtil.getPos(VideoUtil.getRects(VIDWIN_SEL, _id), sd.width, sd.height + 25));
+				}
 			}
 			state.video = $(hasVideo ? '<video>' : '<audio>').attr('id', 'vid' + _id)
 				.attr('playsinline', 'playsinline')
@@ -515,6 +527,7 @@ module.exports = class Video {
 			data.rtcPeer = null;
 		}
 		function _cleanup(evt) {
+			VideoMgrUtil.savePod(v);
 			delete vidSize.width;
 			delete vidSize.height;
 			OmUtil.log('!!Disposing participant ' + sd.uid);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
index 6fd2da498..d17449eba 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
@@ -57,6 +57,6 @@ public abstract class AdminUserChoiceProvider extends ChoiceProvider<User> {
 		for (String id : inIds) {
 			ids.add(Long.valueOf(id));
 		}
-		return new ArrayList<>(userDao.get(ids));
+		return userDao.get(ids);
 	}
 }