sync-page-status.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const logger = require('@alias/logger')('growi:service:system-events:SyncPageStatusService');
  2. class SyncPageStatusService {
  3. constructor(crowi, configPubsubService, socketIoService) {
  4. this.crowi = crowi;
  5. this.configPubsubService = configPubsubService;
  6. this.socketIoService = socketIoService;
  7. this.emitter = crowi.events.page;
  8. this.init();
  9. }
  10. init() {
  11. const { socketIoService } = this;
  12. const { pageService } = this.crowi;
  13. // register events
  14. this.emitter.on('create', (page, user, socketClientId) => {
  15. logger.debug('\'create\' event emitted.');
  16. page = pageService.serializeToObj(page); // eslint-disable-line no-param-reassign
  17. socketIoService.getDefaultSocket().emit('page:create', { page, user, socketClientId });
  18. });
  19. this.emitter.on('update', (page, user, socketClientId) => {
  20. logger.debug('\'update\' event emitted.');
  21. page = pageService.serializeToObj(page); // eslint-disable-line no-param-reassign
  22. socketIoService.getDefaultSocket().emit('page:update', { page, user, socketClientId });
  23. });
  24. this.emitter.on('delete', (page, user, socketClientId) => {
  25. logger.debug('\'delete\' event emitted.');
  26. page = pageService.serializeToObj(page); // eslint-disable-line no-param-reassign
  27. socketIoService.getDefaultSocket().emit('page:delete', { page, user, socketClientId });
  28. });
  29. }
  30. }
  31. module.exports = SyncPageStatusService;