activity.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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. export const SupportedTargetModel = {
  37. MODEL_PAGE,
  38. } as const;
  39. export const SupportedEventModel = {
  40. MODEL_COMMENT,
  41. } as const;
  42. export const SupportedAction = {
  43. ACTION_UNSETTLED,
  44. ACTION_REGISTRATION_SUCCESS,
  45. ACTION_LOGIN_SUCCESS,
  46. ACTION_LOGIN_FAILURE,
  47. ACTION_LOGOUT,
  48. ACTION_USER_PERSONAL_SETTINGS_UPDATE,
  49. ACTION_USER_IMAGE_TYPE_UPDATE,
  50. ACTION_USER_LDAP_ACCOUNT_ASSOCIATE,
  51. ACTION_USER_LDAP_ACCOUNT_DISCONNECT,
  52. ACTION_USER_PASSWORD_UPDATE,
  53. ACTION_USER_API_TOKEN_UPDATE,
  54. ACTION_USER_EDITOR_SETTINGS_UPDATE,
  55. ACTION_USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE,
  56. ACTION_PAGE_VIEW,
  57. ACTION_PAGE_LIKE,
  58. ACTION_PAGE_UNLIKE,
  59. ACTION_PAGE_BOOKMARK,
  60. ACTION_PAGE_UNBOOKMARK,
  61. ACTION_PAGE_CREATE,
  62. ACTION_PAGE_UPDATE,
  63. ACTION_PAGE_RENAME,
  64. ACTION_PAGE_DUPLICATE,
  65. ACTION_PAGE_DELETE,
  66. ACTION_PAGE_DELETE_COMPLETELY,
  67. ACTION_PAGE_REVERT,
  68. ACTION_COMMENT_CREATE,
  69. ACTION_COMMENT_UPDATE,
  70. ACTION_COMMENT_REMOVE,
  71. } as const;
  72. export const ActionGroupSize = {
  73. Small: 'SMALL',
  74. Medium: 'MEDIUM',
  75. Large: 'LARGE',
  76. } as const;
  77. export const SmallActionGroup = {
  78. ACTION_LOGIN_SUCCESS,
  79. ACTION_LOGIN_FAILURE,
  80. ACTION_LOGOUT,
  81. ACTION_PAGE_CREATE,
  82. ACTION_PAGE_DELETE,
  83. } as const;
  84. // SmallActionGroup + Action by all General Users - PAGE_VIEW
  85. export const MediumActionGroup = {
  86. ...SmallActionGroup,
  87. ACTION_USER_PERSONAL_SETTINGS_UPDATE,
  88. ACTION_USER_IMAGE_TYPE_UPDATE,
  89. ACTION_USER_LDAP_ACCOUNT_ASSOCIATE,
  90. ACTION_USER_LDAP_ACCOUNT_DISCONNECT,
  91. ACTION_USER_PASSWORD_UPDATE,
  92. ACTION_USER_API_TOKEN_UPDATE,
  93. ACTION_USER_EDITOR_SETTINGS_UPDATE,
  94. ACTION_USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE,
  95. ACTION_PAGE_LIKE,
  96. ACTION_PAGE_UNLIKE,
  97. ACTION_PAGE_BOOKMARK,
  98. ACTION_PAGE_UNBOOKMARK,
  99. ACTION_PAGE_CREATE,
  100. ACTION_PAGE_UPDATE,
  101. ACTION_PAGE_RENAME,
  102. ACTION_PAGE_DUPLICATE,
  103. ACTION_PAGE_DELETE,
  104. ACTION_PAGE_DELETE_COMPLETELY,
  105. ACTION_PAGE_REVERT,
  106. ACTION_COMMENT_CREATE,
  107. ACTION_COMMENT_UPDATE,
  108. ACTION_COMMENT_REMOVE,
  109. } as const;
  110. // MediumActionGroup + All Actions by Admin Users + PAGE_VIEW
  111. export const LargeActionGroup = {
  112. ...MediumActionGroup,
  113. ACTION_PAGE_VIEW,
  114. } as const;
  115. export const SupportedActionToNotified = {
  116. ACTION_PAGE_LIKE,
  117. ACTION_PAGE_BOOKMARK,
  118. ACTION_PAGE_UPDATE,
  119. ACTION_PAGE_RENAME,
  120. ACTION_PAGE_DUPLICATE,
  121. ACTION_PAGE_DELETE,
  122. ACTION_PAGE_DELETE_COMPLETELY,
  123. ACTION_PAGE_REVERT,
  124. ACTION_COMMENT_CREATE,
  125. } as const;
  126. /*
  127. * For AuditLogManagement.tsx
  128. */
  129. export const PageActions = Object.values({
  130. ACTION_PAGE_LIKE,
  131. ACTION_PAGE_BOOKMARK,
  132. ACTION_PAGE_CREATE,
  133. ACTION_PAGE_UPDATE,
  134. ACTION_PAGE_RENAME,
  135. ACTION_PAGE_DUPLICATE,
  136. ACTION_PAGE_DELETE,
  137. ACTION_PAGE_DELETE_COMPLETELY,
  138. ACTION_PAGE_REVERT,
  139. } as const);
  140. export const CommentActions = Object.values({
  141. ACTION_COMMENT_CREATE,
  142. ACTION_COMMENT_UPDATE,
  143. } as const);
  144. /*
  145. * Array
  146. */
  147. export const AllSupportedTargetModel = Object.values(SupportedTargetModel);
  148. export const AllSupportedEventModel = Object.values(SupportedEventModel);
  149. export const AllSupportedAction = Object.values(SupportedAction);
  150. export const AllSupportedActionToNotified = Object.values(SupportedActionToNotified);
  151. export const AllSmallAction = Object.values(SmallActionGroup);
  152. export const AllMediumAction = Object.values(MediumActionGroup);
  153. export const AllLargeAction = Object.values(LargeActionGroup);
  154. /*
  155. * Type
  156. */
  157. export type SupportedTargetModelType = typeof SupportedTargetModel[keyof typeof SupportedTargetModel];
  158. export type SupportedEventModelType = typeof SupportedEventModel[keyof typeof SupportedEventModel];
  159. export type SupportedActionType = typeof SupportedAction[keyof typeof SupportedAction];
  160. export type ISnapshot = Partial<Pick<IUser, 'username'>>
  161. export type IActivity = {
  162. user?: Ref<IUser>
  163. ip?: string
  164. endpoint?: string
  165. targetModel?: SupportedTargetModelType
  166. target?: string
  167. eventModel?: SupportedEventModelType
  168. event?: string
  169. action: SupportedActionType
  170. createdAt: Date
  171. snapshot?: ISnapshot
  172. }
  173. export type IActivityHasId = IActivity & HasObjectId;