mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-02-01 03:12:42 +01:00
pad: Promisify handshake()
This commit is contained in:
parent
cd4f5ff281
commit
80e84636d7
1 changed files with 18 additions and 11 deletions
|
@ -214,7 +214,7 @@ const sendClientReady = (isReconnect) => {
|
||||||
socket.json.send(msg);
|
socket.json.send(msg);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handshake = () => {
|
const handshake = async () => {
|
||||||
let receivedClientVars = false;
|
let receivedClientVars = false;
|
||||||
let padId = document.location.pathname.substring(document.location.pathname.lastIndexOf('/') + 1);
|
let padId = document.location.pathname.substring(document.location.pathname.lastIndexOf('/') + 1);
|
||||||
// unescape neccesary due to Safari and Opera interpretation of spaces
|
// unescape neccesary due to Safari and Opera interpretation of spaces
|
||||||
|
@ -295,14 +295,8 @@ const handshake = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!receivedClientVars && obj.type === 'CLIENT_VARS') {
|
} else if (!receivedClientVars && obj.type === 'CLIENT_VARS') {
|
||||||
// if we haven't recieved the clientVars yet, then this message should it be
|
|
||||||
receivedClientVars = true;
|
receivedClientVars = true;
|
||||||
|
|
||||||
// set some client vars
|
|
||||||
window.clientVars = obj.data;
|
window.clientVars = obj.data;
|
||||||
|
|
||||||
// initialize the pad
|
|
||||||
pad._afterHandshake();
|
|
||||||
} else if (obj.disconnect) {
|
} else if (obj.disconnect) {
|
||||||
padconnectionstatus.disconnected(obj.disconnect);
|
padconnectionstatus.disconnected(obj.disconnect);
|
||||||
socket.disconnect();
|
socket.disconnect();
|
||||||
|
@ -317,6 +311,15 @@ const handshake = () => {
|
||||||
pad._messageQ.enqueue(obj);
|
pad._messageQ.enqueue(obj);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
const h = (obj) => {
|
||||||
|
if (obj.accessStatus || obj.type !== 'CLIENT_VARS') return;
|
||||||
|
socket.off('message', h);
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
socket.on('message', h);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Defers message handling until setCollabClient() is called with a non-null value. */
|
/** Defers message handling until setCollabClient() is called with a non-null value. */
|
||||||
|
@ -364,16 +367,20 @@ const pad = {
|
||||||
pad.collabClient.sendClientMessage(msg);
|
pad.collabClient.sendClientMessage(msg);
|
||||||
},
|
},
|
||||||
|
|
||||||
init: () => {
|
init() {
|
||||||
padutils.setupGlobalExceptionHandler();
|
padutils.setupGlobalExceptionHandler();
|
||||||
|
|
||||||
$(document).ready(() => {
|
// $(handler), $().ready(handler), $.wait($.ready).then(handler), etc. don't work if handler is
|
||||||
|
// an async function for some bizarre reason, so the async function is wrapped in a non-async
|
||||||
|
// function.
|
||||||
|
$(() => (async () => {
|
||||||
if (window.customStart != null) window.customStart();
|
if (window.customStart != null) window.customStart();
|
||||||
$('#colorpicker').farbtastic({callback: '#mycolorpickerpreview', width: 220});
|
$('#colorpicker').farbtastic({callback: '#mycolorpickerpreview', width: 220});
|
||||||
$('#readonlyinput').on('click', () => { padeditbar.setEmbedLinks(); });
|
$('#readonlyinput').on('click', () => { padeditbar.setEmbedLinks(); });
|
||||||
padcookie.init();
|
padcookie.init();
|
||||||
handshake();
|
await handshake();
|
||||||
});
|
this._afterHandshake();
|
||||||
|
})());
|
||||||
},
|
},
|
||||||
_afterHandshake() {
|
_afterHandshake() {
|
||||||
pad.clientTimeOffset = Date.now() - clientVars.serverTimestamp;
|
pad.clientTimeOffset = Date.now() - clientVars.serverTimestamp;
|
||||||
|
|
Loading…
Reference in a new issue