From e164edec03acbc3090f9f1b311b53fd00204f45b Mon Sep 17 00:00:00 2001 From: yflory Date: Fri, 1 Dec 2017 18:29:59 +0100 Subject: [PATCH] Fix the webworker app --- customize.dist/src/less2/main.less | 1 + www/common/cryptpad-common.js | 3 +++ www/common/outer/async-store.js | 5 +++-- www/common/outer/store-worker.js | 31 ++++++++++++++++++++++++++++++ www/worker/inner.js | 9 ++++++--- www/worker/main.js | 8 ++++---- www/worker/worker.js | 28 +++++++++++++++++++++++---- 7 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 www/common/outer/store-worker.js diff --git a/customize.dist/src/less2/main.less b/customize.dist/src/less2/main.less index ca1c3503e..88f6f1f60 100644 --- a/customize.dist/src/less2/main.less +++ b/customize.dist/src/less2/main.less @@ -37,4 +37,5 @@ body.cp-app-todo { @import "../../../todo/app-todo.less"; } body.cp-app-profile { @import "../../../profile/app-profile.less"; } body.cp-app-settings { @import "../../../settings/app-settings.less"; } body.cp-app-debug { @import "../../../debug/app-debug.less"; } +body.cp-app-worker { @import "../../../worker/app-worker.less"; } diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index aeadac105..c852b86f6 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -650,6 +650,9 @@ define([ } AStore.query("CONNECT", cfg, waitFor(function (data) { if (data.error) { throw new Error(data.error); } + if (data.state === 'ALREADY_INIT') { + data = data.returned; + } if (data.anonHash && !cfg.userHash) { LocalStore.setFSHash(data.anonHash); } diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index 7415843b1..7c2be3070 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -815,7 +815,6 @@ define([ store.proxy = rt.proxy; store.loggedIn = typeof(data.userHash) !== "undefined"; - var returned = {}; rt.proxy.on('create', function (info) { store.realtime = info.realtime; store.network = info.network; @@ -858,7 +857,8 @@ define([ Store.init = function (data, callback) { if (initialized) { return void callback({ - error: 'ALREADY_INIT' + state: 'ALREADY_INIT', + returned: store.returned }); } initialized = true; @@ -873,6 +873,7 @@ define([ if (Object.keys(store.proxy).length === 1) { Feedback.send("FIRST_APP_USE", true); } + store.returned = ret; callback(ret); diff --git a/www/common/outer/store-worker.js b/www/common/outer/store-worker.js new file mode 100644 index 000000000..c34a7b20c --- /dev/null +++ b/www/common/outer/store-worker.js @@ -0,0 +1,31 @@ +var window = self; +importScripts('/bower_components/requirejs/require.js'); + +require.config({ + // fix up locations so that relative urls work. + baseUrl: '/', + paths: { + // jquery declares itself as literally "jquery" so it cannot be pulled by path :( + "jquery": "/bower_components/jquery/dist/jquery.min", + // json.sortify same + "json.sortify": "/bower_components/json.sortify/dist/JSON.sortify", + //"pdfjs-dist/build/pdf": "/bower_components/pdfjs-dist/build/pdf", + //"pdfjs-dist/build/pdf.worker": "/bower_components/pdfjs-dist/build/pdf.worker" + cm: '/bower_components/codemirror' + }, + map: { + '*': { + 'css': '/bower_components/require-css/css.js', + 'less': '/common/RequireLess.js', + } + } +}); + +onconnect = function(e) { + var port = e.ports[0]; + port.postMessage({state: 'READY'}); + port.onmessage = function (e) { + }; +}; + + diff --git a/www/worker/inner.js b/www/worker/inner.js index fd9c9ef34..8dd1a7904 100644 --- a/www/worker/inner.js +++ b/www/worker/inner.js @@ -4,6 +4,8 @@ define([ '/common/cryptpad-common.js', '/bower_components/nthen/index.js', '/common/sframe-common.js', + '/common/common-interface.js', + '/customize/messages.js', 'css!/bower_components/bootstrap/dist/css/bootstrap.min.css', 'less!/bower_components/components-font-awesome/css/font-awesome.min.css', @@ -14,15 +16,16 @@ define([ Cryptpad, nThen, SFCommon, + UI, + Messages ) { - var Messages = Cryptpad.Messages; var APP = window.APP = {}; var common; var sFrameChan; nThen(function (waitFor) { - $(waitFor(Cryptpad.addLoadingScreen)); + $(waitFor(UI.addLoadingScreen)); SFCommon.create(waitFor(function (c) { APP.common = common = c; })); }).nThen(function (waitFor) { sFrameChan = common.getSframeChannel(); @@ -44,7 +47,7 @@ define([ APP.toolbar = Toolbar.create(configTb); APP.toolbar.$rightside.hide(); - Cryptpad.removeLoadingScreen(); + UI.removeLoadingScreen(); if (!window.Worker) { return void $container.text("WebWorkers not supported by your browser"); } diff --git a/www/worker/main.js b/www/worker/main.js index d635e438a..04dffa748 100644 --- a/www/worker/main.js +++ b/www/worker/main.js @@ -2,15 +2,15 @@ define([ '/bower_components/nthen/index.js', '/api/config', - 'jquery', + '/common/dom-ready.js', '/common/requireconfig.js', '/common/sframe-common-outer.js' -], function (nThen, ApiConfig, $, RequireConfig, SFCommonO) { +], function (nThen, ApiConfig, DomReady, RequireConfig, SFCommonO) { var requireConfig = RequireConfig(); // Loaded in load #2 nThen(function (waitFor) { - $(waitFor()); + DomReady.onReady(waitFor()); }).nThen(function (waitFor) { var req = { cfg: requireConfig, @@ -19,7 +19,7 @@ define([ }; window.rc = requireConfig; window.apiconf = ApiConfig; - $('#sbox-iframe').attr('src', + document.getElementById('sbox-iframe').setAttribute('src', ApiConfig.httpSafeOrigin + '/worker/inner.html?' + requireConfig.urlArgs + '#' + encodeURIComponent(JSON.stringify(req))); diff --git a/www/worker/worker.js b/www/worker/worker.js index 27922594e..6a5babd44 100644 --- a/www/worker/worker.js +++ b/www/worker/worker.js @@ -30,19 +30,39 @@ var i = 0; onconnect = function(e) { console.log(e); + console.log(i); var port = e.ports[0]; console.log('here'); require([ - '/customize/messages.js', - ], function (Messages) { - console.log(Messages); + '/common/outer/async-store.js' + ], function (Store) { + console.log(Store); + console.log(self.Proxy); var n = i; port.postMessage({state: 'READY'}); port.onmessage = function (e) { console.log('worker received'); console.log(e.data); - port.postMessage('hello CryptPad'+n+', ' + Messages.test); + port.postMessage('hello CryptPad'+n); }; + var data = { + query: function (cmd, data, cb) { + console.log(cmd, data); + }, + userHash: '/1/edit/RuTAa+HmbtSUqCWPAEXqPQ/WxOd8thjW3l7Bnkkfn9alSTB/', + anonHash: '/1/edit/GT+hupjbbJqo9JIld-G8Rw/onfiJqWbpB0sAb-1sB6VhE+v/', + localToken: 4915598039548860, + language: 'fr', + }; + Store.init(data, function (ret) { + console.log(ret); + console.log("Store is connected"); + Store.get(['cryptpad.username'], function (val) { + port.postMessage(val); + }); + port.postMessage('Store is connected!'); + port.postMessage('Your username is ' + ret.store.proxy['cryptpad.username']); + }); i++; }); };