TutorialController.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const SessionManager = require('../Authentication/SessionManager')
  2. const TutorialHandler = require('./TutorialHandler')
  3. const { expressify } = require('@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. ]
  11. async function completeTutorial(req, res, next) {
  12. const userId = SessionManager.getLoggedInUserId(req.session)
  13. const tutorialKey = req.params.tutorialKey
  14. if (!VALID_KEYS.includes(tutorialKey)) {
  15. return res.sendStatus(404)
  16. }
  17. await TutorialHandler.setTutorialState(userId, tutorialKey, 'completed')
  18. res.sendStatus(204)
  19. }
  20. async function postponeTutorial(req, res, next) {
  21. const userId = SessionManager.getLoggedInUserId(req.session)
  22. const tutorialKey = req.params.tutorialKey
  23. if (!VALID_KEYS.includes(tutorialKey)) {
  24. return res.sendStatus(404)
  25. }
  26. await TutorialHandler.setTutorialState(userId, tutorialKey, 'postponed')
  27. res.sendStatus(204)
  28. }
  29. module.exports = {
  30. completeTutorial: expressify(completeTutorial),
  31. postponeTutorial: expressify(postponeTutorial),
  32. }