activity.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { Types } from 'mongoose';
  2. import Crowi from '../crowi';
  3. import loggerFactory from '../../utils/logger';
  4. import { ActivityDocument } from '../models/activity';
  5. import ActivityDefine from '../util/activityDefine';
  6. import { getModelSafely } from '../util/mongoose-utils';
  7. const logger = loggerFactory('growi:service:ActivityService');
  8. class ActivityService {
  9. crowi!: Crowi;
  10. inAppNotificationService!: any;
  11. activityEvent!: any;
  12. // commentEvent!: any;
  13. constructor(crowi: Crowi) {
  14. this.crowi = crowi;
  15. this.inAppNotificationService = crowi.inAppNotificationService;
  16. this.activityEvent = crowi.event('activity');
  17. this.setUpEventListeners();
  18. }
  19. setUpEventListeners() {
  20. this.initActivityEventListeners();
  21. }
  22. initActivityEventListeners() {
  23. this.activityEvent.on('create', async(targetUsers: Types.ObjectId[], activity: ActivityDocument) => {
  24. try {
  25. await this.inAppNotificationService.upsertByActivity(targetUsers, activity);
  26. }
  27. catch (err) {
  28. logger.error('Error occurred while saving InAppNotification');
  29. throw err;
  30. }
  31. });
  32. }
  33. /**
  34. * @param {Page} page
  35. * @param {User} user
  36. * @return {Promise}
  37. */
  38. createByPageUpdate = async function(page, user) {
  39. const parameters = {
  40. user: user._id,
  41. targetModel: ActivityDefine.MODEL_PAGE,
  42. target: page,
  43. action: ActivityDefine.ACTION_UPDATE,
  44. };
  45. const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
  46. await Activity.createByParameters(parameters);
  47. return;
  48. };
  49. }
  50. module.exports = ActivityService;