s2c-message.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import assert from 'node:assert';
  2. import type { IPage, IUser } from '@growi/core/dist/interfaces';
  3. import { isPopulated } from '@growi/core/dist/interfaces';
  4. import { serializePageSecurely } from '../serializers/page-serializer';
  5. /**
  6. * Server-to-client message VO
  7. */
  8. export class S2cMessagePageUpdated {
  9. pageId: string;
  10. revisionId: string;
  11. revisionBody: string;
  12. revisionUpdateAt: Date;
  13. revisionOrigin: string | undefined;
  14. remoteLastUpdateUser?: IUser;
  15. lastUpdateUsername?: string;
  16. constructor(page: IPage, user?: IUser) {
  17. const serializedPage = serializePageSecurely(page);
  18. const { _id, revision, updatedAt } = serializedPage;
  19. assert(page.revision != null && isPopulated(page.revision));
  20. this.pageId = _id;
  21. this.revisionId = revision;
  22. this.revisionBody = page.revision.body;
  23. this.revisionUpdateAt = updatedAt;
  24. this.revisionOrigin = page.revision.origin;
  25. if (user != null) {
  26. this.remoteLastUpdateUser = user;
  27. // TODO remove lastUpdateUsername and refactor parts that lastUpdateUsername is used
  28. this.lastUpdateUsername = user.name;
  29. }
  30. }
  31. }