mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-09 07:16:03 +00:00
Make inconsistency check more reliable and less likely to trigger a false positive
This commit is contained in:
parent
bc07525d71
commit
da0ed94488
2 changed files with 18 additions and 5 deletions
|
@ -20,6 +20,7 @@ define [
|
|||
@joined = false
|
||||
@wantToBeJoined = false
|
||||
@_checkConsistency = _.bind(@_checkConsistency, @)
|
||||
@inconsistentCount = 0
|
||||
@_bindToEditorEvents()
|
||||
@_bindToSocketEvents()
|
||||
|
||||
|
@ -34,10 +35,20 @@ define [
|
|||
editorDoc?.off "change", @_checkConsistency
|
||||
|
||||
_checkConsistency: () ->
|
||||
editorValue = @ace?.getValue()
|
||||
sharejsValue = @doc?.getSnapshot()
|
||||
if editorValue != sharejsValue
|
||||
@_onError "error", new Error("Editor text does not match server text")
|
||||
# We've been seeing a lot of errors when I think there shouldn't be
|
||||
# any, which may be related to this check happening before the change is
|
||||
# applied. If we use a timeout, hopefully we can reduce this.
|
||||
setTimeout () =>
|
||||
editorValue = @ace?.getValue()
|
||||
sharejsValue = @doc?.getSnapshot()
|
||||
if editorValue != sharejsValue
|
||||
@inconsistentCount++
|
||||
else
|
||||
@inconsistentCount = 0
|
||||
|
||||
if @inconsistentCount >= 3
|
||||
@_onError new Error("Editor text does not match server text")
|
||||
, 0
|
||||
|
||||
getSnapshot: () ->
|
||||
@doc?.getSnapshot()
|
||||
|
|
|
@ -13,7 +13,9 @@ define [
|
|||
@warnAboutUnsavedChanges()
|
||||
|
||||
pollSavedStatus: () ->
|
||||
saved = @ide.editor.document.pollSavedStatus()
|
||||
doc = @ide.editor.document
|
||||
return if !doc?
|
||||
saved = doc.pollSavedStatus()
|
||||
if saved
|
||||
@unsavedSeconds = 0
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue