activity.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { Ref } from './common';
  2. import { HasObjectId } from './has-object-id';
  3. import { IUser } from './user';
  4. // Model
  5. const MODEL_PAGE = 'Page';
  6. const MODEL_COMMENT = 'Comment';
  7. // Action
  8. const ACTION_UNSETTLED = 'UNSETTLED';
  9. const ACTION_REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS';
  10. const ACTION_LOGIN_SUCCESS = 'LOGIN_SUCCESS';
  11. const ACTION_LOGIN_FAILURE = 'LOGIN_FAILURE';
  12. const ACTION_LOGOUT = 'LOGOUT';
  13. const ACTION_USER_PERSONAL_SETTINGS_UPDATE = 'USER_PERSONAL_SETTINGS_UPDATE';
  14. const ACTION_USER_IMAGE_TYPE_UPDATE = 'USER_IMAGE_TYPE_UPDATE';
  15. const ACTION_USER_LDAP_ACCOUNT_ASSOCIATE = 'USER_LDAP_ACCOUNT_ASSOCIATE';
  16. const ACTION_USER_LDAP_ACCOUNT_DISCONNECT = 'USER_LDAP_ACCOUNT_DISCONNECT';
  17. const ACTION_USER_PASSWORD_UPDATE = 'USER_PASSWORD_UPDATE';
  18. const ACTION_USER_API_TOKEN_UPDATE = 'USER_API_TOKEN_UPDATE';
  19. const ACTION_USER_EDITOR_SETTINGS_UPDATE = 'USER_EDITOR_SETTINGS_UPDATE';
  20. const ACTION_USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE = 'USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE';
  21. const ACTION_PAGE_VIEW = 'PAGE_VIEW';
  22. const ACTION_PAGE_LIKE = 'PAGE_LIKE';
  23. const ACTION_PAGE_UNLIKE = 'PAGE_UNLIKE';
  24. const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
  25. const ACTION_PAGE_UNBOOKMARK = 'PAGE_UNBOOKMARK';
  26. const ACTION_PAGE_CREATE = 'PAGE_CREATE';
  27. const ACTION_PAGE_UPDATE = 'PAGE_UPDATE';
  28. const ACTION_PAGE_RENAME = 'PAGE_RENAME';
  29. const ACTION_PAGE_DUPLICATE = 'PAGE_DUPLICATE';
  30. const ACTION_PAGE_DELETE = 'PAGE_DELETE';
  31. const ACTION_PAGE_DELETE_COMPLETELY = 'PAGE_DELETE_COMPLETELY';
  32. const ACTION_PAGE_REVERT = 'PAGE_REVERT';
  33. const ACTION_COMMENT_CREATE = 'COMMENT_CREATE';
  34. const ACTION_COMMENT_UPDATE = 'COMMENT_UPDATE';
  35. const ACTION_COMMENT_REMOVE = 'COMMENT_REMOVE';
  36. const ACTION_ADMIN_APP_SETTING_UPDATE = 'ADMIN_APP_SETTING_UPDATE';
  37. export const SupportedTargetModel = {
  38. MODEL_PAGE,
  39. } as const;
  40. export const SupportedEventModel = {
  41. MODEL_COMMENT,
  42. } as const;
  43. export const SupportedAction = {
  44. ACTION_UNSETTLED,
  45. ACTION_REGISTRATION_SUCCESS,
  46. ACTION_LOGIN_SUCCESS,
  47. ACTION_LOGIN_FAILURE,
  48. ACTION_LOGOUT,
  49. ACTION_USER_PERSONAL_SETTINGS_UPDATE,
  50. ACTION_USER_IMAGE_TYPE_UPDATE,
  51. ACTION_USER_LDAP_ACCOUNT_ASSOCIATE,
  52. ACTION_USER_LDAP_ACCOUNT_DISCONNECT,
  53. ACTION_USER_PASSWORD_UPDATE,
  54. ACTION_USER_API_TOKEN_UPDATE,
  55. ACTION_USER_EDITOR_SETTINGS_UPDATE,
  56. ACTION_USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE,
  57. ACTION_PAGE_VIEW,
  58. ACTION_PAGE_LIKE,
  59. ACTION_PAGE_UNLIKE,
  60. ACTION_PAGE_BOOKMARK,
  61. ACTION_PAGE_UNBOOKMARK,
  62. ACTION_PAGE_CREATE,
  63. ACTION_PAGE_UPDATE,
  64. ACTION_PAGE_RENAME,
  65. ACTION_PAGE_DUPLICATE,
  66. ACTION_PAGE_DELETE,
  67. ACTION_PAGE_DELETE_COMPLETELY,
  68. ACTION_PAGE_REVERT,
  69. ACTION_COMMENT_CREATE,
  70. ACTION_COMMENT_UPDATE,
  71. ACTION_COMMENT_REMOVE,
  72. ACTION_ADMIN_APP_SETTING_UPDATE,
  73. } as const;
  74. export const SupportedActionToNotified = {
  75. ACTION_PAGE_LIKE,
  76. ACTION_PAGE_BOOKMARK,
  77. ACTION_PAGE_UPDATE,
  78. ACTION_PAGE_RENAME,
  79. ACTION_PAGE_DUPLICATE,
  80. ACTION_PAGE_DELETE,
  81. ACTION_PAGE_DELETE_COMPLETELY,
  82. ACTION_PAGE_REVERT,
  83. ACTION_COMMENT_CREATE,
  84. } as const;
  85. /*
  86. * For AuditLogManagement.tsx
  87. */
  88. export const PageActions = Object.values({
  89. ACTION_PAGE_LIKE,
  90. ACTION_PAGE_BOOKMARK,
  91. ACTION_PAGE_CREATE,
  92. ACTION_PAGE_UPDATE,
  93. ACTION_PAGE_RENAME,
  94. ACTION_PAGE_DUPLICATE,
  95. ACTION_PAGE_DELETE,
  96. ACTION_PAGE_DELETE_COMPLETELY,
  97. ACTION_PAGE_REVERT,
  98. } as const);
  99. export const CommentActions = Object.values({
  100. ACTION_COMMENT_CREATE,
  101. ACTION_COMMENT_UPDATE,
  102. } as const);
  103. /*
  104. * Array
  105. */
  106. export const AllSupportedTargetModel = Object.values(SupportedTargetModel);
  107. export const AllSupportedEventModel = Object.values(SupportedEventModel);
  108. export const AllSupportedAction = Object.values(SupportedAction);
  109. export const AllSupportedActionToNotified = Object.values(SupportedActionToNotified);
  110. /*
  111. * Type
  112. */
  113. export type SupportedTargetModelType = typeof SupportedTargetModel[keyof typeof SupportedTargetModel];
  114. export type SupportedEventModelType = typeof SupportedEventModel[keyof typeof SupportedEventModel];
  115. export type SupportedActionType = typeof SupportedAction[keyof typeof SupportedAction];
  116. export type ISnapshot = Partial<Pick<IUser, 'username'>>
  117. export type IActivity = {
  118. user?: Ref<IUser>
  119. ip?: string
  120. endpoint?: string
  121. targetModel?: SupportedTargetModelType
  122. target?: string
  123. eventModel?: SupportedEventModelType
  124. event?: string
  125. action: SupportedActionType
  126. createdAt: Date
  127. snapshot?: ISnapshot
  128. }
  129. export type IActivityHasId = IActivity & HasObjectId;