loleaflet/Makefile.am            |    8 ++----
 loleaflet/html/loleaflet.html.m4 |    1 
 loleaflet/js/global.js           |   52 +++++++++++++++++++++++++++++++++++++++
 loleaflet/js/main.js             |    9 ++++++
 loleaflet/src/core/Socket.js     |   12 +++++++++
 5 files changed, 76 insertions(+), 6 deletions(-)

New commits:
commit d529a407311c692ecc84de674ded70853490bc38
Author:     Henry Castro <[email protected]>
AuthorDate: Sun Jan 27 14:04:26 2019 -0400
Commit:     Henry Castro <[email protected]>
CommitDate: Tue Mar 5 13:55:25 2019 -0400

    loleaflet: add javascript websocket bootstrap that...
    
    is executed after parsing html
    
    Change-Id: Ib62de3db2449bbe9dc474469c299036259f8f2de

diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am
index a06a33c72..bc23ee763 100644
--- a/loleaflet/Makefile.am
+++ b/loleaflet/Makefile.am
@@ -121,9 +121,6 @@ endif
 NODE_MODULES_JS_SRC = $(patsubst %.js,$(builddir)/%.js,$(NODE_MODULES_JS))
 NODE_MODULES_JS_DST = $(patsubst %.js,$(builddir)/dist/%.js,$(NODE_MODULES_JS))
 
-GLOBAL_JS =\
-       global.js
-
 LOLEAFLET_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
-e "try {console.log(require('$(1)').getFiles().join(' '))} catch(e) {}"))
 LOPLUGIN_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) 
-e "try {console.log(require('$(1)').deps.join(' '))} catch(e) {}"))
 
@@ -231,7 +228,7 @@ $(builddir)/dist/bundle.css: $(LOLEAFLET_CSS)
 
 $(builddir)/dist/bundle.js: $(NODE_MODULES_JS_SRC) \
        $(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
-       $(srcdir)/js/global.js \
+       $(builddir)/dist/global.js \
        $(srcdir)/js/jquery.mCustomScrollbar.js \
        $(srcdir)/js/w2ui-1.5.rc1.js \
        $(srcdir)/js/toolbar.js \
@@ -259,7 +256,8 @@ $(builddir)/dist/loleaflet.html: 
$(srcdir)/html/loleaflet.html.m4 $(LOLEAFLET_HT
                -DMOBILEAPPNAME="$(MOBILE_APP_NAME)" \
                -DLOLEAFLET_CSS="$(subst 
$(SPACE),$(COMMA),$(LOLEAFLET_CSS_M4))" \
                -DBUNDLE_CSS="$(abs_builddir)/dist/bundle.css" \
-               -DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(GLOBAL_JS) 
$(NODE_MODULES_JS) \
+               -DGLOBAL_JS="$(abs_builddir)/dist/global.js" \
+               -DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(NODE_MODULES_JS) \
                $(call LOLEAFLET_JS,$(srcdir)/build/build.js) \
                $(patsubst %.js,plugins/draw-$(DRAW_VERSION)/%.js,$(call 
LOLEAFLET_JS,$(srcdir)/plugins/draw-$(DRAW_VERSION)/build/build.js)) \
                $(patsubst %.js,plugins/path-transform/%.js,$(call 
LOPLUGIN_JS,$(srcdir)/plugins/path-transform/build/deps.js)) \
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index ed5cfa40a..46e4d7d9c 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -172,6 +172,7 @@ ifelse(MOBILEAPP,[true],
       window.outOfFocusTimeoutSecs = %OUT_OF_FOCUS_TIMEOUT_SECS%;
       window.idleTimeoutSecs = %IDLE_TIMEOUT_SECS%;
       window.tileSize = 256;])
+syscmd([cat ]GLOBAL_JS)dnl
     </script>
   <script defer>
 
diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index a294ffae8..d384409f0 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -49,4 +49,56 @@
                }
        };
 
+       var docParams, wopiParams;
+       var filePath = global.getParameterByName('file_path');
+       var wopiSrc = global.getParameterByName('WOPISrc');
+       if (wopiSrc != '') {
+               wopiSrc = '?WOPISrc=' + wopiSrc + '&compat=/ws';
+               global.docURL = decodeURIComponent(wopiSrc);
+               if (global.accessToken !== '') {
+                       wopiParams = { 'access_token': global.accessToken, 
'access_token_ttl': global.accessTokenTTL };
+               }
+               else if (global.accessHeader !== '') {
+                       wopiParams = { 'access_header': global.accessHeader };
+               }
+               docParams = Object.keys(wopiParams).map(function(key) {
+                       return encodeURIComponent(key) + '=' + 
encodeURIComponent(wopiParams[key])
+               }).join('&');
+       } else {
+               global.docURL = filePath;
+       }
+
+       var websocketURI = global.host + global.serviceRoot + '/lool/' + 
encodeURIComponent(global.docURL + (docParams ? '?' + docParams : '')) + '/ws' 
+ wopiSrc;
+
+       try {
+               global.socket = new WebSocket(websocketURI);
+       } catch (err) {
+               console.log(err);
+       }
+
+       if (global.socket && global.socket.readyState !== 3) {
+               global.queueMsg = [];
+
+               global.socket.onopen = function () {
+                       if (global.socket.readyState === 1) {
+                               var ProtocolVersionNumber = '0.1';
+                               global.socket.send('loolclient ' + 
ProtocolVersionNumber);
+                               global.socket.send('load url=' + 
encodeURIComponent(global.docURL));
+                       }
+               }
+
+               global.socket.onerror = function (event) {
+                       console.log(event);
+               }
+
+               global.socket.onclose = function (event) {
+                       console.log(event);
+               }
+
+               global.socket.onmessage = function (event) {
+                       global.queueMsg.push(event.data);
+               }
+
+               global.socket.binaryType = 'arraybuffer';
+       }
 }(window));
diff --git a/loleaflet/js/main.js b/loleaflet/js/main.js
index 67d88d714..da0355451 100644
--- a/loleaflet/js/main.js
+++ b/loleaflet/js/main.js
@@ -75,7 +75,14 @@ map.addControl(L.control.alertDialog());
 map.addControl(L.control.lokDialog());
 map.addControl(L.control.contextMenu());
 map.addControl(L.control.infobar());
-map.loadDocument();
+if (global.socket && (global.socket.readyState === 1 || 
global.socket.readyState === 0)) {
+       map._socket.attach(global.socket, global.queueMsg);
+} else {
+       map.loadDocument();
+}
+
+delete global.socket;
+delete global.queueMsg;
 
 window.addEventListener('beforeunload', function () {
        if (map && map._socket) {
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 19c49ddef..2009418af 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -107,6 +107,18 @@ L.Socket = L.Class.extend({
                }
        },
 
+       attach: function (socket, msgQueue) {
+               this.socket = socket;
+               this.socket.onerror = L.bind(this._onSocketError, this);
+               this.socket.onclose = L.bind(this._onSocketClose, this);
+               this.socket.onopen = L.bind(this._onSocketOpen, this);
+               this.socket.onmessage = L.bind(this._onMessage, this);
+
+               for (var it = 0; it < msgQueue.length; it++) {
+                       this._onMessage({data: msgQueue[it]});
+               }
+       },
+
        _sessionExpiredWarning: function() {
                clearTimeout(this._accessTokenExpireTimeout);
                var expirymsg = errorMessages.sessionexpiry;
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to