UpdateTrimmer.js 2.1 KB

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