2014-02-12 05:23:40 -05:00
updateMerger = require ( ' ./UpdateMerger ' )
logger = require ( ' logger-sharelatex ' )
projectLocator = require ( ' ../Project/ProjectLocator ' )
projectCreationHandler = require ( ' ../Project/ProjectCreationHandler ' )
projectDeleter = require ( ' ../Project/ProjectDeleter ' )
ProjectRootDocManager = require " ../Project/ProjectRootDocManager "
commitMessage = " Before update from Dropbox "
module.exports =
2014-10-16 06:43:54 -04:00
newUpdate: (user_id, projectName, path, updateRequest, source, callback)->
2014-02-12 05:23:40 -05:00
getOrCreateProject = (cb)=>
projectLocator . findUsersProjectByName user_id , projectName , (err, project)=>
logger . log user_id : user_id , filePath : path , projectName : projectName , " handling new update from tpds "
if ! project ?
projectCreationHandler . createBlankProject user_id , projectName , (err, project)=>
# have a crack at setting the root doc after a while, on creation we won't have it yet, but should have
# been sent it it within 30 seconds
2014-10-15 09:11:02 -04:00
setTimeout ( -> ProjectRootDocManager . setRootDocAutomatically project . _id ) , @ _rootDocTimeoutLength
2014-02-12 05:23:40 -05:00
cb err , project
else
cb err , project
getOrCreateProject (err, project)->
2014-10-16 06:43:54 -04:00
updateMerger . mergeUpdate project . _id , path , updateRequest , source , (err)->
2014-05-27 07:56:23 -04:00
callback ( err )
2014-02-12 05:23:40 -05:00
2014-10-16 06:43:54 -04:00
deleteUpdate: (user_id, projectName, path, source, callback)->
2014-02-12 05:23:40 -05:00
logger . log user_id : user_id , filePath : path , " handling delete update from tpds "
projectLocator . findUsersProjectByName user_id , projectName , (err, project)->
if ! project ?
2014-03-12 19:37:10 -04:00
logger . log user_id : user_id , filePath : path , projectName : projectName , " project not found from tpds update, ignoring folder or project "
2014-02-12 05:23:40 -05:00
return callback ( )
if path == " / "
logger . log user_id : user_id , filePath : path , projectName : projectName , project_id : project . _id , " project found for delete update, path is root so marking project as deleted "
return projectDeleter . markAsDeletedByExternalSource project . _id , callback
else
2014-10-16 06:43:54 -04:00
updateMerger . deleteUpdate project . _id , path , source , (err)->
2014-05-27 07:56:23 -04:00
callback ( err )
2014-02-12 05:23:40 -05:00
_rootDocTimeoutLength : 30 * 1000