page.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { Ref } from './common';
  2. import { IUser } from './user';
  3. import { IRevision } from './revision';
  4. import { ITag } from './tag';
  5. import { HasObjectId } from './has-object-id';
  6. export interface IPage {
  7. path: string,
  8. status: string,
  9. revision: Ref<IRevision>,
  10. tags: Ref<ITag>[],
  11. creator: Ref<IUser>,
  12. createdAt: Date,
  13. updatedAt: Date,
  14. seenUsers: Ref<IUser>[],
  15. parent: Ref<IPage> | null,
  16. descendantCount: number,
  17. isEmpty: boolean,
  18. redirectTo: string,
  19. grant: number,
  20. grantedUsers: Ref<IUser>[],
  21. grantedGroup: Ref<any>,
  22. lastUpdateUser: Ref<IUser>,
  23. liker: Ref<IUser>[],
  24. commentCount: number
  25. slackChannels: string,
  26. pageIdOnHackmd: string,
  27. revisionHackmdSynced: Ref<IRevision>,
  28. hasDraftOnHackmd: boolean,
  29. deleteUser: Ref<IUser>,
  30. deletedAt: Date,
  31. }
  32. export type IPageHasId = IPage & HasObjectId;
  33. export type IPageForItem = Partial<IPageHasId & {isTarget?: boolean}>;
  34. export type IPageInfo = {
  35. bookmarkCount: number,
  36. sumOfLikers: number,
  37. likerIds: string[],
  38. sumOfSeenUsers: number,
  39. seenUserIds: string[],
  40. isSeen?: boolean,
  41. isLiked?: boolean,
  42. }
  43. export type IPageWithMeta<M = Record<string, unknown>> = {
  44. pageData: IPageHasId,
  45. pageMeta?: Partial<IPageInfo> & M,
  46. };