UpdateTrimmer.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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(
  25. project_id,
  26. function (error, metadata) {
  27. if (error != null) {
  28. return callback(error)
  29. }
  30. if (metadata != null ? metadata.preserveHistory : undefined) {
  31. return callback(null, false)
  32. } else {
  33. return WebApiManager.getProjectDetails(
  34. project_id,
  35. function (error, details) {
  36. if (error != null) {
  37. return callback(error)
  38. }
  39. logger.log({ project_id, details }, 'got details')
  40. if (
  41. __guard__(
  42. details != null ? details.features : undefined,
  43. x => x.versioning
  44. )
  45. ) {
  46. return MongoManager.setProjectMetaData(
  47. project_id,
  48. { preserveHistory: true },
  49. function (error) {
  50. if (error != null) {
  51. return callback(error)
  52. }
  53. return MongoManager.upgradeHistory(
  54. project_id,
  55. function (error) {
  56. if (error != null) {
  57. return callback(error)
  58. }
  59. return callback(null, false)
  60. }
  61. )
  62. }
  63. )
  64. } else {
  65. return callback(null, true)
  66. }
  67. }
  68. )
  69. }
  70. }
  71. )
  72. },
  73. }
  74. function __guard__(value, transform) {
  75. return typeof value !== 'undefined' && value !== null
  76. ? transform(value)
  77. : undefined
  78. }