collab_client: Convert state var to committing bool

This commit is contained in:
Richard Hansen 2021-03-26 20:02:22 -04:00
parent 3ee6b5eb2b
commit 5c445eac21

View file

@ -39,7 +39,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
pad = _pad; // Inject pad to avoid a circular dependency. pad = _pad; // Inject pad to avoid a circular dependency.
let rev = serverVars.rev; let rev = serverVars.rev;
let state = 'IDLE'; let committing = false;
let stateMessage; let stateMessage;
let channelState = 'CONNECTING'; let channelState = 'CONNECTING';
let lastCommitTime = 0; let lastCommitTime = 0;
@ -88,11 +88,11 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
const t = (+new Date()); const t = (+new Date());
if (state !== 'IDLE') { if (committing) {
if (state === 'COMMITTING' && msgQueue.length === 0 && (t - lastCommitTime) > 20000) { if (msgQueue.length === 0 && (t - lastCommitTime) > 20000) {
// a commit is taking too long // a commit is taking too long
setChannelState('DISCONNECTED', 'slowcommit'); setChannelState('DISCONNECTED', 'slowcommit');
} else if (state === 'COMMITTING' && msgQueue.length === 0 && (t - lastCommitTime) > 5000) { } else if (msgQueue.length === 0 && (t - lastCommitTime) > 5000) {
callbacks.onConnectionTrouble('SLOW'); callbacks.onConnectionTrouble('SLOW');
} else { } else {
// run again in a few seconds, to detect a disconnect // run again in a few seconds, to detect a disconnect
@ -135,7 +135,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
const userChangesData = editor.prepareUserChangeset(); const userChangesData = editor.prepareUserChangeset();
if (userChangesData.changeset) { if (userChangesData.changeset) {
lastCommitTime = t; lastCommitTime = t;
state = 'COMMITTING'; committing = true;
stateMessage = { stateMessage = {
type: 'USER_CHANGES', type: 'USER_CHANGES',
baseRev: rev, baseRev: rev,
@ -281,7 +281,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
setIsPendingRevision(false); setIsPendingRevision(false);
} }
} else if (msg.type === 'NO_COMMIT_PENDING') { } else if (msg.type === 'NO_COMMIT_PENDING') {
if (state === 'COMMITTING') { if (committing) {
// server missed our commit message; abort that commit // server missed our commit message; abort that commit
setStateIdle(); setStateIdle();
handleUserChanges(); handleUserChanges();
@ -458,7 +458,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
const obj = {}; const obj = {};
obj.userInfo = userSet[userId]; obj.userInfo = userSet[userId];
obj.baseRev = rev; obj.baseRev = rev;
if (state === 'COMMITTING' && stateMessage) { if (committing && stateMessage) {
obj.committedChangeset = stateMessage.changeset; obj.committedChangeset = stateMessage.changeset;
obj.committedChangesetAPool = stateMessage.apool; obj.committedChangesetAPool = stateMessage.apool;
editor.applyPreparedChangesetToBase(); editor.applyPreparedChangesetToBase();
@ -472,7 +472,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
}; };
const setStateIdle = () => { const setStateIdle = () => {
state = 'IDLE'; committing = false;
callbacks.onInternalAction('newlyIdle'); callbacks.onInternalAction('newlyIdle');
schedulePerhapsCallIdleFuncs(); schedulePerhapsCallIdleFuncs();
}; };
@ -490,7 +490,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
const schedulePerhapsCallIdleFuncs = () => { const schedulePerhapsCallIdleFuncs = () => {
setTimeout(() => { setTimeout(() => {
if (state === 'IDLE') { if (!committing) {
while (idleFuncs.length > 0) { while (idleFuncs.length > 0) {
const f = idleFuncs.shift(); const f = idleFuncs.shift();
f(); f();