CollaberationManager.coffee 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #this file is being slowly refactored out
  2. logger = require('logger-sharelatex')
  3. sanitize = require('validator').sanitize
  4. projectHandler = require('../handlers/ProjectHandler')
  5. projectHandler = new projectHandler()
  6. SecurityManager = require('./SecurityManager')
  7. _ = require('underscore')
  8. projectEditorHandler = require('../Features/Project/ProjectEditorHandler')
  9. projectEntityHandler = require('../Features/Project/ProjectEntityHandler')
  10. versioningApiHandler = require('../Features/Versioning/VersioningApiHandler')
  11. metrics = require('../infrastructure/Metrics')
  12. EditorRealTimeController = require('../Features/Editor/EditorRealTimeController')
  13. module.exports = class CollaberationManager
  14. constructor: (@io)->
  15. deleteProject: (project_id, callback)->
  16. metrics.inc "editor.delete-project"
  17. logger.log project_id:project_id, "recived message to delete project"
  18. projectHandler.deleteProject project_id, callback
  19. renameEntity: (project_id, entity_id, entityType, newName, callback)->
  20. newName = sanitize(newName).xss()
  21. metrics.inc "editor.rename-entity"
  22. logger.log entity_id:entity_id, entity_id:entity_id, entity_id:entity_id, "reciving new name for entity for project"
  23. projectHandler.renameEntity project_id, entity_id, entityType, newName, =>
  24. if newName.length > 0
  25. EditorRealTimeController.emitToRoom project_id, 'reciveEntityRename', entity_id, newName
  26. callback?()
  27. moveEntity: (project_id, entity_id, folder_id, entityType, callback)->
  28. metrics.inc "editor.move-entity"
  29. projectEntityHandler.moveEntity project_id, entity_id, folder_id, entityType, =>
  30. EditorRealTimeController.emitToRoom project_id, 'reciveEntityMove', entity_id, folder_id
  31. callback?()
  32. renameProject: (project_id, window_id, newName, callback)->
  33. newName = sanitize(newName).xss()
  34. projectHandler.renameProject project_id, window_id, newName, =>
  35. newName = sanitize(newName).xss()
  36. EditorRealTimeController.emitToRoom project_id, 'projectNameUpdated', window_id, newName
  37. callback?()
  38. setPublicAccessLevel : (project_id, newAccessLevel, callback)->
  39. projectHandler.setPublicAccessLevel project_id, newAccessLevel, =>
  40. EditorRealTimeController.emitToRoom project_id, 'publicAccessLevelUpdated', newAccessLevel
  41. callback?()
  42. distributMessage: (project_id, client, message)->
  43. message = sanitize(message).xss()
  44. metrics.inc "editor.instant-message"
  45. client.get "first_name", (err, first_name)=>
  46. EditorRealTimeController.emitToRoom project_id, 'reciveNewMessage', first_name, message
  47. setRootDoc: (project_id, newRootDocID, callback)->
  48. projectEntityHandler.setRootDoc project_id, newRootDocID, () =>
  49. EditorRealTimeController.emitToRoom project_id, 'rootDocUpdated', newRootDocID
  50. callback?()
  51. takeVersionSnapShot : (project_id, message, callback)->
  52. versioningApiHandler.takeVersionSnapshot project_id, message, callback