TutorialController.mjs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import SessionManager from '../Authentication/SessionManager.js'
  2. import TutorialHandler from './TutorialHandler.mjs'
  3. import { expressify } from '@overleaf/promise-utils'
  4. const VALID_KEYS = [
  5. 'react-history-buttons-tutorial',
  6. 'writefull-integration',
  7. 'writefull-oauth-promotion',
  8. 'bib-file-tpr-prompt',
  9. 'ai-error-assistant-consent',
  10. 'history-restore-promo',
  11. 'us-gov-banner',
  12. 'us-gov-banner-fedramp',
  13. 'full-project-search-promo',
  14. 'editor-popup-ux-survey',
  15. 'wf-features-moved',
  16. 'review-mode',
  17. 'new-error-logs-promo',
  18. 'try-redesign-again-nudge-promo',
  19. 'write-and-cite-nudge-in-linked-file',
  20. 'ide-redesign-new-survey-promo',
  21. 'ide-redesign-beta-intro',
  22. 'ide-redesign-labs-user-beta-promo',
  23. 'rolling-compile-image-changed',
  24. 'groups-enterprise-banner',
  25. 'groups-enterprise-banner-repeat',
  26. ]
  27. async function completeTutorial(req, res, next) {
  28. const userId = SessionManager.getLoggedInUserId(req.session)
  29. const tutorialKey = req.params.tutorialKey
  30. if (!VALID_KEYS.includes(tutorialKey)) {
  31. return res.sendStatus(404)
  32. }
  33. await TutorialHandler.setTutorialState(userId, tutorialKey, 'completed')
  34. res.sendStatus(204)
  35. }
  36. async function postponeTutorial(req, res, next) {
  37. const userId = SessionManager.getLoggedInUserId(req.session)
  38. const tutorialKey = req.params.tutorialKey
  39. let postponedUntil
  40. if (req.body.postponedUntil) {
  41. postponedUntil = new Date(req.body.postponedUntil)
  42. }
  43. if (!VALID_KEYS.includes(tutorialKey)) {
  44. return res.sendStatus(404)
  45. }
  46. await TutorialHandler.setTutorialState(
  47. userId,
  48. tutorialKey,
  49. 'postponed',
  50. postponedUntil
  51. )
  52. res.sendStatus(204)
  53. }
  54. export default {
  55. completeTutorial: expressify(completeTutorial),
  56. postponeTutorial: expressify(postponeTutorial),
  57. }