LinkedFilesHandler.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /* eslint-disable
  2. camelcase,
  3. n/handle-callback-err,
  4. max-len,
  5. no-unused-vars,
  6. */
  7. // TODO: This file was created by bulk-decaffeinate.
  8. // Fix any style issues and re-enable lint.
  9. /*
  10. * decaffeinate suggestions:
  11. * DS102: Remove unnecessary code created because of implicit returns
  12. * DS207: Consider shorter variations of null checks
  13. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  14. */
  15. let LinkedFilesHandler
  16. const FileWriter = require('../../infrastructure/FileWriter')
  17. const EditorController = require('../Editor/EditorController')
  18. const ProjectLocator = require('../Project/ProjectLocator')
  19. const { Project } = require('../../models/Project')
  20. const ProjectGetter = require('../Project/ProjectGetter')
  21. const _ = require('underscore')
  22. const {
  23. ProjectNotFoundError,
  24. V1ProjectNotFoundError,
  25. BadDataError,
  26. } = require('./LinkedFilesErrors')
  27. module.exports = LinkedFilesHandler = {
  28. getFileById(project_id, file_id, callback) {
  29. if (callback == null) {
  30. callback = function () {}
  31. }
  32. return ProjectLocator.findElement(
  33. {
  34. project_id,
  35. element_id: file_id,
  36. type: 'file',
  37. },
  38. function (err, file, path, parentFolder) {
  39. if (err != null) {
  40. return callback(err)
  41. }
  42. return callback(null, file, path, parentFolder)
  43. }
  44. )
  45. },
  46. getSourceProject(data, callback) {
  47. if (callback == null) {
  48. callback = function () {}
  49. }
  50. const projection = { _id: 1, name: 1 }
  51. if (data.v1_source_doc_id != null) {
  52. return Project.findOne(
  53. { 'overleaf.id': data.v1_source_doc_id },
  54. projection,
  55. function (err, project) {
  56. if (err != null) {
  57. return callback(err)
  58. }
  59. if (project == null) {
  60. return callback(new V1ProjectNotFoundError())
  61. }
  62. return callback(null, project)
  63. }
  64. )
  65. } else if (data.source_project_id != null) {
  66. return ProjectGetter.getProject(
  67. data.source_project_id,
  68. projection,
  69. function (err, project) {
  70. if (err != null) {
  71. return callback(err)
  72. }
  73. if (project == null) {
  74. return callback(new ProjectNotFoundError())
  75. }
  76. return callback(null, project)
  77. }
  78. )
  79. } else {
  80. return callback(new BadDataError('neither v1 nor v2 id present'))
  81. }
  82. },
  83. importFromStream(
  84. project_id,
  85. readStream,
  86. linkedFileData,
  87. name,
  88. parent_folder_id,
  89. user_id,
  90. callback
  91. ) {
  92. if (callback == null) {
  93. callback = function () {}
  94. }
  95. callback = _.once(callback)
  96. return FileWriter.writeStreamToDisk(
  97. project_id,
  98. readStream,
  99. function (err, fsPath) {
  100. if (err != null) {
  101. return callback(err)
  102. }
  103. return EditorController.upsertFile(
  104. project_id,
  105. parent_folder_id,
  106. name,
  107. fsPath,
  108. linkedFileData,
  109. 'upload',
  110. user_id,
  111. (err, file) => {
  112. if (err != null) {
  113. return callback(err)
  114. }
  115. return callback(null, file)
  116. }
  117. )
  118. }
  119. )
  120. },
  121. importContent(
  122. project_id,
  123. content,
  124. linkedFileData,
  125. name,
  126. parent_folder_id,
  127. user_id,
  128. callback
  129. ) {
  130. if (callback == null) {
  131. callback = function () {}
  132. }
  133. callback = _.once(callback)
  134. return FileWriter.writeContentToDisk(
  135. project_id,
  136. content,
  137. function (err, fsPath) {
  138. if (err != null) {
  139. return callback(err)
  140. }
  141. return EditorController.upsertFile(
  142. project_id,
  143. parent_folder_id,
  144. name,
  145. fsPath,
  146. linkedFileData,
  147. 'upload',
  148. user_id,
  149. (err, file) => {
  150. if (err != null) {
  151. return callback(err)
  152. }
  153. return callback(null, file)
  154. }
  155. )
  156. }
  157. )
  158. },
  159. }