[Libreoffice-commits] online.git: loleaflet/reference.html loleaflet/src

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue May 28 17:58:24 UTC 2019


 loleaflet/reference.html              |   23 ++++++++++++++++++---
 loleaflet/src/layer/tile/TileLayer.js |    4 +++
 loleaflet/src/map/Map.js              |    4 +--
 loleaflet/src/map/handler/Map.WOPI.js |   36 ++++++++++++++++++++--------------
 4 files changed, 48 insertions(+), 19 deletions(-)

New commits:
commit 51a63c0e7618acf6fbb536164030ebb7a9694aa1
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Tue May 28 13:09:24 2019 +0200
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Tue May 28 19:58:16 2019 +0200

    Deprecate Views_Added and Views_Removed; implement Views_List instead.
    
    This helps avoiding the situation when the state in the Online and in
    the integration get out of sync.
    
    The integration should always get the most current state via Views_List,
    and if they want to implement eg. notification what view has joined or
    has left, they should just compare the old and the new state.
    
    Change-Id: I841f77419bf86a57f77e16f8c0bd08063f31f68a
    Reviewed-on: https://gerrit.libreoffice.org/73103
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/loleaflet/reference.html b/loleaflet/reference.html
index 767293068..7cb520ab9 100644
--- a/loleaflet/reference.html
+++ b/loleaflet/reference.html
@@ -2890,19 +2890,36 @@ Editor to WOPI host
 		    <nobr>UserName: <String></nobr>
 		    <nobr>Color: <Number></nobr>
 		    <nobr>ReadOnly: <Boolean></nobr>
+		    <nobr>Deprecated: true;</nobr>
 		</code></td>
 		<td>A new member is added. ViewId is unique integer
 		identifying a session/view. UserId is user identity. UserName is
 		display name of the user. Color is RGB color integer
-		value. ReadOnly tells if the new view is opened as readonly.
+		value. ReadOnly tells if the new view is opened as readonly.<br/>
+		This message is <strong>deprecated</strong>, instead implement just
+		handling of Views_List which holds the same payload as
+		<code>Get_Views_Resp</code>.
 		</td>
 	</tr>
 	<tr>
 		<td><code><b>View_Removed</b></code></td>
 		<td><code>
 		    <nobr>ViewId: <Number></nobr>
-		</code></td>
-		<td>View with <code>ViewId</code> has closed the document.
+		    <nobr>Deprecated: true;</nobr>
+		</code></td>
+		<td>View with <code>ViewId</code> has closed the document.<br/>
+		This message is <strong>deprecated</strong>, instead implement just
+		handling of Get_Views_Resp and if you need the info which view has
+		been added / removed, check against the previous state.<br/>
+		This message is <strong>deprecated</strong>, instead implement just
+		handling of Views_List which holds the same payload as
+		<code>Get_Views_Resp</code>.
+		</td>
+	</tr>
+	<tr>
+		<td><code><b>Views_List</b></code></td>
+		<td>See <code>Get_Views_Resp</code>.</td>
+		<td>Complete information about the currently connected views.
 		</td>
 	</tr>
 	</table>
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index a6cccc0a5..6dc66544e 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -1067,6 +1067,10 @@ L.TileLayer = L.GridLayer.extend({
 				this._removeView(parseInt(viewInfoIdx));
 			}
 		}
+
+		// Sending postMessage about View_Added / View_Removed is
+		// deprecated, going forward we prefer sending the entire information.
+		this._map.fire('updateviewslist');
 	},
 
 	_onRenderFontMsg: function (textMsg, img) {
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 30d81fa86..272f7fe1c 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -265,7 +265,7 @@ L.Map = L.Evented.extend({
 		if (viewInfo.userextrainfo !== undefined && viewInfo.userextrainfo.avatar !== undefined) {
 			this._viewInfoByUserName[viewInfo.username] = viewInfo;
 		}
-		this.fire('postMessage', {msgId: 'View_Added', args: {ViewId: viewInfo.id, UserId: viewInfo.userid, UserName: viewInfo.username, UserExtraInfo: viewInfo.userextrainfo, Color: L.LOUtil.rgbToHex(viewInfo.color), ReadOnly: viewInfo.readonly}});
+		this.fire('postMessage', {msgId: 'View_Added', args: {Deprecated: true, ViewId: viewInfo.id, UserId: viewInfo.userid, UserName: viewInfo.username, UserExtraInfo: viewInfo.userextrainfo, Color: L.LOUtil.rgbToHex(viewInfo.color), ReadOnly: viewInfo.readonly}});
 
 		// Fire last, otherwise not all events are handled correctly.
 		this.fire('addview', {viewId: viewInfo.id, username: viewInfo.username, extraInfo: viewInfo.userextrainfo, readonly: this.isViewReadOnly(viewInfo.id)});
@@ -277,7 +277,7 @@ L.Map = L.Evented.extend({
 		var username = this._viewInfo[viewid].username;
 		delete this._viewInfoByUserName[this._viewInfo[viewid].username];
 		delete this._viewInfo[viewid];
-		this.fire('postMessage', {msgId: 'View_Removed', args: {ViewId: viewid}});
+		this.fire('postMessage', {msgId: 'View_Removed', args: {Deprecated: true, ViewId: viewid}});
 
 		// Fire last, otherwise not all events are handled correctly.
 		this.fire('removeview', {viewId: viewid, username: username});
diff --git a/loleaflet/src/map/handler/Map.WOPI.js b/loleaflet/src/map/handler/Map.WOPI.js
index 5269cbe51..be108a108 100644
--- a/loleaflet/src/map/handler/Map.WOPI.js
+++ b/loleaflet/src/map/handler/Map.WOPI.js
@@ -50,6 +50,8 @@ L.Map.WOPI = L.Handler.extend({
 
 		this._map.on('wopiprops', this._setWopiProps, this);
 		L.DomEvent.on(window, 'message', this._postMessageListener, this);
+
+		this._map.on('updateviewslist', function() { this._postViewsMessage('Views_List'); }, this);
 	},
 
 	removeHooks: function() {
@@ -62,6 +64,8 @@ L.Map.WOPI = L.Handler.extend({
 
 		this._map.off('wopiprops', this._setWopiProps, this);
 		L.DomEvent.off(window, 'message', this._postMessageListener, this);
+
+		this._map.off('updateviewslist');
 	},
 
 	_setWopiProps: function(wopiInfo) {
@@ -244,20 +248,7 @@ L.Map.WOPI = L.Handler.extend({
 			}
 		}
 		else if (msg.MessageId === 'Get_Views') {
-			var getMembersRespVal = [];
-			for (var viewInfoIdx in this._map._viewInfo) {
-				getMembersRespVal.push({
-					ViewId: viewInfoIdx,
-					UserName: this._map._viewInfo[viewInfoIdx].username,
-					UserId: this._map._viewInfo[viewInfoIdx].userid,
-					UserExtraInfo: this._map._viewInfo[viewInfoIdx].userextrainfo,
-					Color: this._map._viewInfo[viewInfoIdx].color,
-					ReadOnly: this._map._viewInfo[viewInfoIdx].readonly,
-					IsCurrentView: this._map._docLayer._viewId === parseInt(viewInfoIdx, 10)
-				});
-			}
-
-			this._postMessage({msgId: 'Get_Views_Resp', args: getMembersRespVal});
+			this._postViewsMessage('Get_Views_Resp');
 		}
 		else if (msg.MessageId === 'Action_Save') {
 			var dontTerminateEdit = msg.Values && msg.Values['DontTerminateEdit'];
@@ -356,6 +347,23 @@ L.Map.WOPI = L.Handler.extend({
 			};
 			window.parent.postMessage(JSON.stringify(msg), this.PostMessageOrigin);
 		}
+	},
+
+	_postViewsMessage: function(messageId) {
+		var getMembersRespVal = [];
+		for (var viewInfoIdx in this._map._viewInfo) {
+			getMembersRespVal.push({
+				ViewId: viewInfoIdx,
+				UserName: this._map._viewInfo[viewInfoIdx].username,
+				UserId: this._map._viewInfo[viewInfoIdx].userid,
+				UserExtraInfo: this._map._viewInfo[viewInfoIdx].userextrainfo,
+				Color: this._map._viewInfo[viewInfoIdx].color,
+				ReadOnly: this._map._viewInfo[viewInfoIdx].readonly,
+				IsCurrentView: this._map._docLayer._viewId === parseInt(viewInfoIdx, 10)
+			});
+		}
+
+		this._postMessage({msgId: messageId, args: getMembersRespVal});
 	}
 });
 


More information about the Libreoffice-commits mailing list