2016-03-14 15:07:15 +03:00
|
|
|
var selfDestruct = false;
|
2016-03-29 04:15:23 +03:00
|
|
|
|
2016-02-07 16:45:42 +03:00
|
|
|
$(document).ready(function() {
|
|
|
|
var isTyping = false;
|
|
|
|
var typingTimer; //timer identifier
|
|
|
|
var updateInterval;
|
2016-02-11 17:05:49 +03:00
|
|
|
var uhohTimer;
|
2016-02-08 18:10:48 +03:00
|
|
|
var doneTypingInterval = 500; //time in ms, 5 second for example
|
2016-02-07 22:09:48 +03:00
|
|
|
var pollToGetNewestCopyInterval = 10000;
|
2016-02-07 16:45:42 +03:00
|
|
|
//on keyup, start the countdown
|
|
|
|
$('#emit').keyup(function() {
|
|
|
|
clearTimeout(typingTimer);
|
|
|
|
clearInterval(updateInterval);
|
2016-02-11 02:37:30 +03:00
|
|
|
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-remove");
|
2016-02-07 16:45:42 +03:00
|
|
|
typingTimer = setTimeout(doneTyping, doneTypingInterval);
|
|
|
|
});
|
|
|
|
|
|
|
|
//on keydown, clear the countdown
|
|
|
|
$('#emit').keydown(function() {
|
|
|
|
clearTimeout(typingTimer);
|
|
|
|
clearInterval(updateInterval);
|
2016-02-11 02:37:30 +03:00
|
|
|
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-remove");
|
2016-02-07 16:45:42 +03:00
|
|
|
document.title = "[UNSAVED] " + title_name;
|
|
|
|
});
|
|
|
|
|
|
|
|
//user is "finished typing," do something
|
|
|
|
function doneTyping() {
|
2016-03-29 04:15:23 +03:00
|
|
|
payload = JSON.stringify({ TextData: currentText(), Title: title_name, UpdateServer: true, UpdateClient: false })
|
2016-02-07 16:45:42 +03:00
|
|
|
send(payload)
|
2016-02-11 17:05:49 +03:00
|
|
|
uhohTimer = setTimeout(uhoh, 3000);
|
|
|
|
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-open");
|
2016-02-07 16:45:42 +03:00
|
|
|
console.log("Done typing")
|
2016-02-07 22:09:48 +03:00
|
|
|
updateInterval = setInterval(updateText, pollToGetNewestCopyInterval);
|
2016-02-07 16:45:42 +03:00
|
|
|
document.title = "[SAVED] " + title_name;
|
2016-03-29 04:15:23 +03:00
|
|
|
if (currentText().indexOf("self-destruct\n") > -1 || currentText().indexOf("\nself-destruct") > -1) {
|
2016-03-14 15:07:15 +03:00
|
|
|
if (selfDestruct == false) {
|
|
|
|
selfDestruct = true;
|
|
|
|
swal({ title: "Info", text: "This page is primed to self-destruct.", timer: 1000, showConfirmButton: true });
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (selfDestruct == true) {
|
|
|
|
selfDestruct = false;
|
|
|
|
swal({ title: "Info", text: "This page is no longer primed to self-destruct.", timer: 1000, showConfirmButton: true });
|
|
|
|
}
|
|
|
|
}
|
2016-02-07 16:45:42 +03:00
|
|
|
}
|
|
|
|
|
2016-02-11 17:05:49 +03:00
|
|
|
function uhoh() {
|
|
|
|
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-remove");
|
|
|
|
setInterval(location.reload(), 1000);
|
|
|
|
}
|
|
|
|
|
2016-02-07 16:45:42 +03:00
|
|
|
function updateText() {
|
|
|
|
console.log("Getting server's latest copy")
|
2016-03-29 04:15:23 +03:00
|
|
|
payload = JSON.stringify({ TextData: currentText(), Title: title_name, UpdateServer: false, UpdateClient: true })
|
2016-02-07 16:45:42 +03:00
|
|
|
send(payload)
|
|
|
|
}
|
|
|
|
|
|
|
|
// websockets
|
2016-02-16 00:59:32 +03:00
|
|
|
url = socketType + '://'+external_ip+'/ws';
|
2016-02-07 16:45:42 +03:00
|
|
|
c = new WebSocket(url);
|
|
|
|
|
|
|
|
send = function(data){
|
2016-03-29 04:15:23 +03:00
|
|
|
|
2016-02-07 16:45:42 +03:00
|
|
|
console.log("Sending: " + data)
|
|
|
|
c.send(data)
|
|
|
|
}
|
|
|
|
|
|
|
|
c.onmessage = function(msg){
|
|
|
|
console.log(msg)
|
|
|
|
data = JSON.parse(msg.data);
|
|
|
|
if (data.UpdateClient == true) {
|
|
|
|
console.log("Updating...")
|
|
|
|
$('#emit_data').val(data.TextData)
|
|
|
|
document.title = "[LOADED] " + title_name;
|
|
|
|
}
|
2016-02-11 02:37:30 +03:00
|
|
|
console.log((data.TextData == "saved"))
|
|
|
|
console.log(data.TextData)
|
|
|
|
if (data.TextData == "saved") {
|
|
|
|
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-saved");
|
2016-02-11 17:05:49 +03:00
|
|
|
clearTimeout(uhohTimer);
|
2016-02-11 02:37:30 +03:00
|
|
|
}
|
2016-02-07 16:45:42 +03:00
|
|
|
console.log(data)
|
|
|
|
}
|
|
|
|
|
|
|
|
c.onopen = function(){
|
2016-02-08 16:37:22 +03:00
|
|
|
// updateText();
|
2016-02-07 22:09:48 +03:00
|
|
|
updateInterval = setInterval(updateText, pollToGetNewestCopyInterval);
|
2016-02-07 16:45:42 +03:00
|
|
|
}
|
|
|
|
});
|