UpdateTrimmer.js 2.4 KB

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