activity.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { HasObjectId } from './has-object-id';
  2. import { IUser } from './user';
  3. // Model
  4. const MODEL_PAGE = 'Page';
  5. // Action
  6. const ACTION_UNSETTLED = 'UNSETTLED';
  7. const ACTION_PAGE_LIKE = 'PAGE_LIKE';
  8. const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
  9. const ACTION_PAGE_CREATE = 'PAGE_CREATE';
  10. const ACTION_PAGE_UPDATE = 'PAGE_UPDATE';
  11. const ACTION_PAGE_RENAME = 'PAGE_RENAME';
  12. const ACTION_PAGE_DUPLICATE = 'PAGE_DUPLICATE';
  13. const ACTION_PAGE_DELETE = 'PAGE_DELETE';
  14. const ACTION_PAGE_DELETE_COMPLETELY = 'PAGE_DELETE_COMPLETELY';
  15. const ACTION_PAGE_REVERT = 'PAGE_REVERT';
  16. const ACTION_COMMENT_CREATE = 'COMMENT_CREATE';
  17. const ACTION_COMMENT_UPDATE = 'COMMENT_UPDATE';
  18. export const SUPPORTED_TARGET_MODEL_TYPE = {
  19. MODEL_PAGE,
  20. } as const;
  21. export const SUPPORTED_ACTION_TYPE = {
  22. ACTION_UNSETTLED,
  23. ACTION_PAGE_LIKE,
  24. ACTION_PAGE_BOOKMARK,
  25. ACTION_PAGE_CREATE,
  26. ACTION_PAGE_UPDATE,
  27. ACTION_PAGE_RENAME,
  28. ACTION_PAGE_DUPLICATE,
  29. ACTION_PAGE_DELETE,
  30. ACTION_PAGE_DELETE_COMPLETELY,
  31. ACTION_PAGE_REVERT,
  32. ACTION_COMMENT_CREATE,
  33. ACTION_COMMENT_UPDATE,
  34. } as const;
  35. export const SUPPORTED_ACTION_TO_NOTIFIED_TYPE = {
  36. ACTION_PAGE_LIKE,
  37. ACTION_PAGE_BOOKMARK,
  38. ACTION_PAGE_UPDATE,
  39. ACTION_PAGE_RENAME,
  40. ACTION_PAGE_DUPLICATE,
  41. ACTION_PAGE_DELETE,
  42. ACTION_PAGE_DELETE_COMPLETELY,
  43. ACTION_PAGE_REVERT,
  44. ACTION_COMMENT_CREATE,
  45. ACTION_COMMENT_UPDATE,
  46. } as const;
  47. export const AllSupportedTargetModelType = Object.values(SUPPORTED_TARGET_MODEL_TYPE);
  48. export const AllSupportedActionType = Object.values(SUPPORTED_ACTION_TYPE);
  49. export const AllSupportedActionToNotifiedType = Object.values(SUPPORTED_ACTION_TO_NOTIFIED_TYPE);
  50. /*
  51. * For AuditLogManagement.tsx
  52. */
  53. export const PageActions = Object.values({
  54. ACTION_PAGE_LIKE,
  55. ACTION_PAGE_BOOKMARK,
  56. ACTION_PAGE_CREATE,
  57. ACTION_PAGE_UPDATE,
  58. ACTION_PAGE_RENAME,
  59. ACTION_PAGE_DUPLICATE,
  60. ACTION_PAGE_DELETE,
  61. ACTION_PAGE_DELETE_COMPLETELY,
  62. ACTION_PAGE_REVERT,
  63. } as const);
  64. export const CommentActions = Object.values({
  65. ACTION_COMMENT_CREATE,
  66. ACTION_COMMENT_UPDATE,
  67. } as const);
  68. export type SupportedTargetModelType = typeof SUPPORTED_TARGET_MODEL_TYPE[keyof typeof SUPPORTED_TARGET_MODEL_TYPE];
  69. export type SupportedActionType = typeof SUPPORTED_ACTION_TYPE[keyof typeof SUPPORTED_ACTION_TYPE];
  70. export type ISnapshot = Partial<Pick<IUser, 'username'>>
  71. export type IActivity = {
  72. user?: IUser
  73. ip?: string
  74. endpoint?: string
  75. targetModel?: SupportedTargetModelType
  76. target?: string
  77. action: SupportedActionType
  78. createdAt: Date
  79. snapshot?: ISnapshot
  80. }
  81. export type IActivityHasId = IActivity & HasObjectId;