cryptpad/www/worker/inner.js

116 lines
4.2 KiB
JavaScript
Raw Normal View History

2017-12-01 22:03:01 +08:00
define([
'jquery',
'/common/toolbar3.js',
'/common/cryptpad-common.js',
'/bower_components/nthen/index.js',
'/common/sframe-common.js',
2017-12-02 01:29:59 +08:00
'/common/common-interface.js',
'/customize/messages.js',
2017-12-01 22:03:01 +08:00
'css!/bower_components/bootstrap/dist/css/bootstrap.min.css',
2018-03-22 01:31:53 +08:00
'css!/bower_components/components-font-awesome/css/font-awesome.min.css',
2017-12-01 22:03:01 +08:00
'less!/customize/src/less2/main.less',
], function (
$,
Toolbar,
Cryptpad,
nThen,
SFCommon,
UI
/*Messages*/
2017-12-01 22:03:01 +08:00
)
{
var APP = window.APP = {};
var common;
var sFrameChan;
nThen(function (waitFor) {
2017-12-02 01:29:59 +08:00
$(waitFor(UI.addLoadingScreen));
2017-12-01 22:03:01 +08:00
SFCommon.create(waitFor(function (c) { APP.common = common = c; }));
}).nThen(function (waitFor) {
sFrameChan = common.getSframeChannel();
sFrameChan.onReady(waitFor());
}).nThen(function (/*waitFor*/) {
var $container = $('#cp-app-worker-container');
2018-01-29 22:17:20 +08:00
$('<a>', {href:'http://localhost:3000/worker/', target:'_blank'}).text('other').appendTo($container);
2017-12-01 22:03:01 +08:00
var $bar = $('.cp-toolbar-container');
var displayed = ['useradmin', 'newpad', 'limit', 'pageTitle'];
var configTb = {
displayed: displayed,
common: Cryptpad,
sfCommon: common,
$container: $bar,
pageTitle: 'Test WebWorkers',
metadataMgr: common.getMetadataMgr(),
};
APP.toolbar = Toolbar.create(configTb);
APP.toolbar.$rightside.hide();
2017-12-02 01:29:59 +08:00
UI.removeLoadingScreen();
2017-12-01 22:03:01 +08:00
if (!window.Worker) {
return void $container.text("WebWorkers not supported by your browser");
}
2018-06-02 01:23:30 +08:00
/*
// Shared worker
2017-12-01 22:03:01 +08:00
console.log('ready');
var myWorker = new SharedWorker('/worker/worker.js');
console.log(myWorker);
console.log(myWorker.port);
myWorker.onerror = function (e) { console.error(e); };
myWorker.port.onmessage = function (e) {
var data = e.data;
if (data && data.state === "READY") {
$container.append('<hr>worker.js ready');
myWorker.port.postMessage(["Hello worker"]);
return;
}
$container.append('<br>');
$container.append(e.data);
2018-06-02 01:23:30 +08:00
};*/
// Service worker
if ('serviceWorker' in navigator) {
var postMessage = function (data) {
if (navigator.serviceWorker && navigator.serviceWorker.controller) {
navigator.serviceWorker.controller.postMessage(data);
}
};
console.log('here');
navigator.serviceWorker.register('/worker/sw.js', {scope: '/'})
.then(function(reg) {
console.log(reg);
console.log('Registration succeeded. Scope is ' + reg.scope);
$container.append('<br>');
$container.append('Registered! (scope: ' + reg.scope +')');
reg.onupdatefound = function () {
console.log('new SW version found!');
// KILL EVERYTHING
UI.confirm("New version detected, you have to reload", function (yes) {
if (yes) { common.gotoURL(); }
});
};
// Here we add the event listener for receiving messages
navigator.serviceWorker.addEventListener('message', function (e) {
var data = e.data;
if (data && data.state === "READY") {
$container.append('<hr>sw.js ready');
postMessage(["Hello worker"]);
return;
}
$container.append('<br>');
$container.append(e.data);
});
postMessage("INIT");
}).catch(function(error) {
console.log('Registration failed with ' + error);
$container.append('Registration error: ' + error);
});
} else {
console.log('NO SERVICE WORKER');
}
2017-12-01 22:03:01 +08:00
$container.append('<hr>inner.js ready');
});
});