UpdateTrimmer.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* eslint-disable
  2. camelcase,
  3. handle-callback-err,
  4. no-unused-vars,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * DS103: Rewrite code to no longer use __guard__
  12. * DS207: Consider shorter variations of null checks
  13. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  14. */
  15. let UpdateTrimmer
  16. const MongoManager = require('./MongoManager')
  17. const WebApiManager = require('./WebApiManager')
  18. const logger = require('logger-sharelatex')
  19. module.exports = UpdateTrimmer = {
  20. shouldTrimUpdates(project_id, callback) {
  21. if (callback == null) {
  22. callback = function (error, shouldTrim) {}
  23. }
  24. return MongoManager.getProjectMetaData(project_id, function (
  25. error,
  26. metadata
  27. ) {
  28. if (error != null) {
  29. return callback(error)
  30. }
  31. if (metadata != null ? metadata.preserveHistory : undefined) {
  32. return callback(null, false)
  33. } else {
  34. return WebApiManager.getProjectDetails(project_id, function (
  35. error,
  36. details
  37. ) {
  38. if (error != null) {
  39. return callback(error)
  40. }
  41. logger.log({ project_id, details }, 'got details')
  42. if (
  43. __guard__(
  44. details != null ? details.features : undefined,
  45. (x) => x.versioning
  46. )
  47. ) {
  48. return MongoManager.setProjectMetaData(
  49. project_id,
  50. { preserveHistory: true },
  51. function (error) {
  52. if (error != null) {
  53. return callback(error)
  54. }
  55. return MongoManager.upgradeHistory(project_id, function (
  56. error
  57. ) {
  58. if (error != null) {
  59. return callback(error)
  60. }
  61. return callback(null, false)
  62. })
  63. }
  64. )
  65. } else {
  66. return callback(null, true)
  67. }
  68. })
  69. }
  70. })
  71. }
  72. }
  73. function __guard__(value, transform) {
  74. return typeof value !== 'undefined' && value !== null
  75. ? transform(value)
  76. : undefined
  77. }