mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
Protect against infinite loops with clients send remote changes back to server
This commit is contained in:
@@ -42,38 +42,58 @@ define [
|
||||
return attributes
|
||||
|
||||
bindToRootDocId: ->
|
||||
remoteChange = false
|
||||
@on "change:rootDoc_id", (project, docId) =>
|
||||
@get("ide").socket.emit "setRootDoc", docId
|
||||
if !remoteChange
|
||||
@get("ide").socket.emit "setRootDoc", docId
|
||||
@get("ide").socket.on "rootDocUpdated", (docId) =>
|
||||
remoteChange = true
|
||||
@set("rootDoc_id", docId)
|
||||
remoteChange = false
|
||||
|
||||
bindToProjectName: ->
|
||||
remoteChange = false
|
||||
@on "change:name", (project, name) =>
|
||||
@get("ide").socket.emit "setProjectName", window.window_id, name
|
||||
if !remoteChange
|
||||
@get("ide").socket.emit "setProjectName", window.window_id, name
|
||||
@get("ide").socket.on "projectNameUpdated", (senderWindowId, name) =>
|
||||
remoteChange = true
|
||||
@set("name", name)
|
||||
remoteChange = false
|
||||
|
||||
bindToCompiler: ->
|
||||
remoteChange = false
|
||||
@on "change:compiler", (project, name) =>
|
||||
@get("ide").socket.emit "setCompiler", name
|
||||
if !remoteChange
|
||||
@get("ide").socket.emit "setCompiler", name
|
||||
@get("ide").socket.on "compilerUpdated", (compiler) =>
|
||||
@set("compiler", compiler)
|
||||
remoteChange = true
|
||||
@set("compiler", compiler)
|
||||
remoteChange = false
|
||||
|
||||
bindToSpellingPreference: ->
|
||||
@on "change:spellCheckLanguage", (project, languageCode) =>
|
||||
@get("ide").socket.emit "setSpellCheckLanguage", languageCode
|
||||
|
||||
bindToPublicAccessLevel: ->
|
||||
remoteChange = false
|
||||
@on "change:publicAccesLevel", (project, level) =>
|
||||
@get("ide").socket.emit "setPublicAccessLevel", level
|
||||
if !remoteChange
|
||||
@get("ide").socket.emit "setPublicAccessLevel", level
|
||||
@get("ide").socket.on 'publicAccessLevelUpdated', (level) =>
|
||||
remoteChange = true
|
||||
@set("publicAccesLevel", level)
|
||||
remoteChange = false
|
||||
|
||||
bindToProjectDescription: ->
|
||||
remoteChange = false
|
||||
@on "change:description", (project, description) =>
|
||||
@get("ide").socket.emit "updateProjectDescription", description
|
||||
if !remoteChange
|
||||
@get("ide").socket.emit "updateProjectDescription", description
|
||||
@get("ide").socket.on 'projectDescriptionUpdated', (description) =>
|
||||
remoteChange = true
|
||||
@set("description", description)
|
||||
remoteChange = false
|
||||
|
||||
getRootDocumentsList: (callback) ->
|
||||
@get("ide").socket.emit "getRootDocumentsList", (err, listOfDocs) ->
|
||||
|
||||
Reference in New Issue
Block a user