mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-19 08:14:50 +00:00
d8ac00a108
Fixes #5663
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
/*\
|
|
title: $:/plugins/tiddlywiki/tiddlyweb/sse-client.js
|
|
type: application/javascript
|
|
module-type: startup
|
|
|
|
GET /recipes/default/tiddlers/:title
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
exports.name = "/events/plugins/tiddlywiki/tiddlyweb";
|
|
exports.after = ["startup"];
|
|
exports.synchronous = true;
|
|
exports.platforms = ["browser"];
|
|
exports.startup = function() {
|
|
// Make sure we're actually being used
|
|
if($tw.syncadaptor.name !== "tiddlyweb") {
|
|
return;
|
|
}
|
|
// Get the mount point in case a path prefix is used
|
|
var host = $tw.syncadaptor.getHost();
|
|
// Make sure it ends with a slash (it usually does)
|
|
if(host[host.length - 1] !== "/") {
|
|
host += "/";
|
|
}
|
|
// Setup the event listener
|
|
setupEvents(host);
|
|
};
|
|
|
|
function debounce(callback) {
|
|
var timeout = null;
|
|
return function() {
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(callback,$tw.syncer.throttleInterval);
|
|
};
|
|
}
|
|
|
|
function setupEvents(host) {
|
|
if(window.EventSource) {
|
|
var events = new EventSource(host + "events/plugins/tiddlywiki/tiddlyweb");
|
|
var debouncedSync = debounce($tw.syncer.syncFromServer.bind($tw.syncer));
|
|
events.addEventListener("change",debouncedSync);
|
|
events.onerror = function() {
|
|
events.close();
|
|
setTimeout(function() {
|
|
setupEvents(host);
|
|
},$tw.syncer.errorRetryInterval);
|
|
};
|
|
}
|
|
}
|
|
|
|
})();
|