activity.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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_SETTINGS_UPDATE = 'ADMIN_APP_SETTING_UPDATE';
  37. const ACTION_ADMIN_SECURITY_SETTINGS_UPDATE = 'ADMIN_SECURITY_SETTINGS_UPDATE';
  38. const ACTION_ADMIN_LINE_BREAK_UPDATE = 'ADMIN_LINE_BREAK_UPDATE';
  39. const ACTION_ADMIN_LAYOUT_UPDATE = 'ADMIN_LAYOUT_UPDATE';
  40. export const SupportedTargetModel = {
  41. MODEL_PAGE,
  42. } as const;
  43. export const SupportedEventModel = {
  44. MODEL_COMMENT,
  45. } as const;
  46. export const SupportedAction = {
  47. ACTION_UNSETTLED,
  48. ACTION_REGISTRATION_SUCCESS,
  49. ACTION_LOGIN_SUCCESS,
  50. ACTION_LOGIN_FAILURE,
  51. ACTION_LOGOUT,
  52. ACTION_USER_PERSONAL_SETTINGS_UPDATE,
  53. ACTION_USER_IMAGE_TYPE_UPDATE,
  54. ACTION_USER_LDAP_ACCOUNT_ASSOCIATE,
  55. ACTION_USER_LDAP_ACCOUNT_DISCONNECT,
  56. ACTION_USER_PASSWORD_UPDATE,
  57. ACTION_USER_API_TOKEN_UPDATE,
  58. ACTION_USER_EDITOR_SETTINGS_UPDATE,
  59. ACTION_USER_IN_APP_NOTIFICATION_SETTINGS_UPDATE,
  60. ACTION_PAGE_VIEW,
  61. ACTION_PAGE_LIKE,
  62. ACTION_PAGE_UNLIKE,
  63. ACTION_PAGE_BOOKMARK,
  64. ACTION_PAGE_UNBOOKMARK,
  65. ACTION_PAGE_CREATE,
  66. ACTION_PAGE_UPDATE,
  67. ACTION_PAGE_RENAME,
  68. ACTION_PAGE_DUPLICATE,
  69. ACTION_PAGE_DELETE,
  70. ACTION_PAGE_DELETE_COMPLETELY,
  71. ACTION_PAGE_REVERT,
  72. ACTION_COMMENT_CREATE,
  73. ACTION_COMMENT_UPDATE,
  74. ACTION_COMMENT_REMOVE,
  75. ACTION_ADMIN_APP_SETTINGS_UPDATE,
  76. ACTION_ADMIN_SECURITY_SETTINGS_UPDATE,
  77. ACTION_ADMIN_LINE_BREAK_UPDATE,
  78. ACTION_ADMIN_LAYOUT_UPDATE,
  79. } as const;
  80. export const SupportedActionToNotified = {
  81. ACTION_PAGE_LIKE,
  82. ACTION_PAGE_BOOKMARK,
  83. ACTION_PAGE_UPDATE,
  84. ACTION_PAGE_RENAME,
  85. ACTION_PAGE_DUPLICATE,
  86. ACTION_PAGE_DELETE,
  87. ACTION_PAGE_DELETE_COMPLETELY,
  88. ACTION_PAGE_REVERT,
  89. ACTION_COMMENT_CREATE,
  90. } as const;
  91. /*
  92. * For AuditLogManagement.tsx
  93. */
  94. export const PageActions = Object.values({
  95. ACTION_PAGE_LIKE,
  96. ACTION_PAGE_BOOKMARK,
  97. ACTION_PAGE_CREATE,
  98. ACTION_PAGE_UPDATE,
  99. ACTION_PAGE_RENAME,
  100. ACTION_PAGE_DUPLICATE,
  101. ACTION_PAGE_DELETE,
  102. ACTION_PAGE_DELETE_COMPLETELY,
  103. ACTION_PAGE_REVERT,
  104. } as const);
  105. export const CommentActions = Object.values({
  106. ACTION_COMMENT_CREATE,
  107. ACTION_COMMENT_UPDATE,
  108. } as const);
  109. /*
  110. * Array
  111. */
  112. export const AllSupportedTargetModel = Object.values(SupportedTargetModel);
  113. export const AllSupportedEventModel = Object.values(SupportedEventModel);
  114. export const AllSupportedAction = Object.values(SupportedAction);
  115. export const AllSupportedActionToNotified = Object.values(SupportedActionToNotified);
  116. /*
  117. * Type
  118. */
  119. export type SupportedTargetModelType = typeof SupportedTargetModel[keyof typeof SupportedTargetModel];
  120. export type SupportedEventModelType = typeof SupportedEventModel[keyof typeof SupportedEventModel];
  121. export type SupportedActionType = typeof SupportedAction[keyof typeof SupportedAction];
  122. export type ISnapshot = Partial<Pick<IUser, 'username'>>
  123. export type IActivity = {
  124. user?: Ref<IUser>
  125. ip?: string
  126. endpoint?: string
  127. targetModel?: SupportedTargetModelType
  128. target?: string
  129. eventModel?: SupportedEventModelType
  130. event?: string
  131. action: SupportedActionType
  132. createdAt: Date
  133. snapshot?: ISnapshot
  134. }
  135. export type IActivityHasId = IActivity & HasObjectId;