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

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Nov 29 09:34:40 UTC 2018


 loleaflet/src/map/handler/Map.FileInserter.js |   23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

New commits:
commit af1bc0bfa5bc1af85d9c457e3b09537973d8a384
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Nov 29 11:26:53 2018 +0200
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Thu Nov 29 11:29:45 2018 +0200

    Implement JavaScript parts of inserting an image in a mobile app
    
    We must read the image file contents using a FileReader and then pass
    on the data to the Online code in a message. Re-use the same
    "insertfile" message used in web-based Online, but add a "data"
    parameter that contains the base64-encoded image file contents.
    
    Change-Id: I95c5668ac8da9d03dbcf19a921e5fba045d7a94f

diff --git a/loleaflet/src/map/handler/Map.FileInserter.js b/loleaflet/src/map/handler/Map.FileInserter.js
index c11c23350..63c94a63e 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -3,7 +3,7 @@
  * L.Map.FileInserter is handling the fileInserter action
  */
 
-/* global _ */
+/* global _ Uint8Array */
 
 L.Map.mergeOptions({
 	fileInserter: true
@@ -76,7 +76,26 @@ L.Map.FileInserter = L.Handler.extend({
 		var socket = this._map._socket;
 		var map = this._map;
 		if (window.ThisIsAMobileApp) {
-			console.log('FIXME: image insertion in mobile app');
+			// Pass the file contents as a base64-encoded parameter in an insertfile message
+			var reader = new FileReader();
+			reader.onload = (function(aFile) {
+				return function(e) {
+					var byteBuffer = new Uint8Array(e.target.result);
+					var strBytes = '';
+					for (var i = 0; i < byteBuffer.length; i++) {
+						strBytes += String.fromCharCode(byteBuffer[i]);
+					}
+					window.webkit.messageHandlers.lool.postMessage('insertfile name=' + aFile.name + ' type=graphic' +
+										       ' data=' + window.btoa(strBytes));
+				};
+			})(file);
+			reader.onerror = function(e) {
+				window.webkit.messageHandlers.error.postMessage('Error when reading file: ' + e);
+			};
+			reader.onprogress = function(e) {
+				window.webkit.messageHandlers.debug.postMessage('FileReader progress: ' + Math.round(e.loaded*100 / e.total) + '%');
+			};
+			reader.readAsArrayBuffer(file);
 		} else {
 			var xmlHttp = new XMLHttpRequest();
 			this._map.showBusy(_('Uploading...'), false);


More information about the Libreoffice-commits mailing list