strapi-plugin-comments 2.0.10 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/README.md +204 -124
  2. package/admin/src/components/ActionButton/styles.d.ts +2 -0
  3. package/admin/src/components/ActionButton/styles.js +13 -8
  4. package/admin/src/components/Avatar/index.d.ts +12 -0
  5. package/admin/src/components/Avatar/index.js +26 -0
  6. package/admin/src/components/ConfirmationDialog/index.d.ts +26 -0
  7. package/admin/src/components/ConfirmationDialog/index.js +36 -55
  8. package/admin/src/components/DiscussionStatus/index.d.ts +9 -0
  9. package/admin/src/components/DiscussionStatus/index.js +22 -31
  10. package/admin/src/components/DiscussionThread/index.d.ts +16 -0
  11. package/admin/src/components/DiscussionThread/index.js +39 -56
  12. package/admin/src/components/DiscussionThreadItem/index.d.ts +9 -0
  13. package/admin/src/components/DiscussionThreadItem/index.js +28 -52
  14. package/admin/src/components/DiscussionThreadItem/styles.d.ts +4 -0
  15. package/admin/src/components/DiscussionThreadItem/styles.js +16 -11
  16. package/admin/src/components/DiscussionThreadItemActions/index.d.ts +19 -0
  17. package/admin/src/components/DiscussionThreadItemActions/index.js +121 -158
  18. package/admin/src/components/DiscussionThreadItemActions/styles.d.ts +2 -0
  19. package/admin/src/components/DiscussionThreadItemActions/styles.js +13 -7
  20. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +17 -0
  21. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +38 -48
  22. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +2 -0
  23. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +12 -6
  24. package/admin/src/components/DiscussionThreadItemFooter/index.d.ts +16 -0
  25. package/admin/src/components/DiscussionThreadItemFooter/index.js +34 -42
  26. package/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +3 -0
  27. package/admin/src/components/DiscussionThreadItemFooter/styles.js +17 -12
  28. package/admin/src/components/DiscussionThreadItemReviewAction/index.d.ts +30 -0
  29. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +77 -91
  30. package/admin/src/components/FormSwitch/index.d.ts +7 -0
  31. package/admin/src/components/FormSwitch/index.js +15 -18
  32. package/admin/src/components/FormSwitch/styles.d.ts +2 -0
  33. package/admin/src/components/FormSwitch/styles.js +14 -8
  34. package/admin/src/components/IconButton/styles.d.ts +2 -0
  35. package/admin/src/components/IconButton/styles.js +16 -9
  36. package/admin/src/components/Initializer/index.d.ts +5 -0
  37. package/admin/src/components/Initializer/index.js +12 -24
  38. package/admin/src/components/LoadingIndicatorOverlay/index.d.ts +3 -0
  39. package/admin/src/components/LoadingIndicatorOverlay/index.js +12 -15
  40. package/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +3 -0
  41. package/admin/src/components/LoadingIndicatorOverlay/styles.js +22 -17
  42. package/admin/src/components/Nav/index.d.ts +7 -0
  43. package/admin/src/components/Nav/index.js +25 -48
  44. package/admin/src/components/PluginIcon/index.d.ts +3 -0
  45. package/admin/src/components/PluginIcon/index.js +10 -12
  46. package/admin/src/components/ReportsReviewModal/index.d.ts +21 -0
  47. package/admin/src/components/ReportsReviewModal/index.js +31 -46
  48. package/admin/src/components/ReportsReviewTable/index.d.ts +21 -0
  49. package/admin/src/components/ReportsReviewTable/index.js +120 -140
  50. package/admin/src/components/StatusBadge/index.d.ts +7 -0
  51. package/admin/src/components/StatusBadge/index.js +12 -17
  52. package/admin/src/components/StatusBadge/styles.d.ts +2 -0
  53. package/admin/src/components/StatusBadge/styles.js +19 -13
  54. package/admin/src/components/TableFilters/index.d.ts +10 -0
  55. package/admin/src/components/TableFilters/index.js +52 -49
  56. package/admin/src/components/TablePagination/index.d.ts +17 -0
  57. package/admin/src/components/TablePagination/index.js +27 -29
  58. package/admin/src/components/icons/comments.d.ts +6 -0
  59. package/admin/src/components/icons/comments.js +11 -8
  60. package/admin/src/components/icons/index.d.ts +6 -0
  61. package/admin/src/components/icons/index.js +15 -6
  62. package/admin/src/components/icons/lock.d.ts +7 -0
  63. package/admin/src/components/icons/lock.js +11 -21
  64. package/admin/src/components/icons/review.d.ts +7 -0
  65. package/admin/src/components/icons/review.js +11 -17
  66. package/admin/src/components/icons/unlock.d.ts +7 -0
  67. package/admin/src/components/icons/unlock.js +11 -19
  68. package/admin/src/hooks/useConfig.d.ts +8 -0
  69. package/admin/src/hooks/useConfig.js +40 -45
  70. package/admin/src/index.d.ts +7 -0
  71. package/admin/src/index.js +98 -92
  72. package/admin/src/pages/App/index.d.ts +4 -0
  73. package/admin/src/pages/App/index.js +43 -67
  74. package/admin/src/pages/App/reducer/actions.d.ts +8 -0
  75. package/admin/src/pages/App/reducer/actions.js +11 -7
  76. package/admin/src/pages/App/reducer/constants.d.ts +4 -0
  77. package/admin/src/pages/App/reducer/constants.js +7 -4
  78. package/admin/src/pages/App/reducer/index.d.ts +9 -0
  79. package/admin/src/pages/App/reducer/index.js +24 -22
  80. package/admin/src/pages/App/reducer/init.d.ts +3 -0
  81. package/admin/src/pages/App/reducer/init.js +6 -4
  82. package/admin/src/pages/App/reducer/selectors.d.ts +6 -0
  83. package/admin/src/pages/App/reducer/selectors.js +17 -34
  84. package/admin/src/pages/App/utils/api.d.ts +2 -0
  85. package/admin/src/pages/App/utils/api.js +14 -11
  86. package/admin/src/pages/ComingSoonPage/index.d.ts +3 -0
  87. package/admin/src/pages/ComingSoonPage/index.js +42 -24
  88. package/admin/src/pages/Details/components/DetailsEntity/index.d.ts +18 -0
  89. package/admin/src/pages/Details/components/DetailsEntity/index.js +49 -77
  90. package/admin/src/pages/Details/components/DetailsFilters/index.d.ts +12 -0
  91. package/admin/src/pages/Details/components/DetailsFilters/index.js +19 -26
  92. package/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +2 -0
  93. package/admin/src/pages/Details/components/DetailsFilters/styles.js +14 -8
  94. package/admin/src/pages/Details/index.d.ts +4 -0
  95. package/admin/src/pages/Details/index.js +94 -133
  96. package/admin/src/pages/Discover/components/DiscoverTableRow/index.d.ts +20 -0
  97. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +128 -139
  98. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +2 -0
  99. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +14 -8
  100. package/admin/src/pages/Discover/index.d.ts +4 -0
  101. package/admin/src/pages/Discover/index.js +129 -170
  102. package/admin/src/pages/Discover/utils/api.d.ts +2 -0
  103. package/admin/src/pages/Discover/utils/api.js +15 -13
  104. package/admin/src/pages/Discover/utils/filtersSchema.d.ts +11 -0
  105. package/admin/src/pages/Discover/utils/filtersSchema.js +8 -6
  106. package/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +2 -0
  107. package/admin/src/pages/Settings/components/RestartAlert/styles.js +14 -8
  108. package/admin/src/pages/Settings/index.d.ts +3 -0
  109. package/admin/src/pages/Settings/index.js +225 -391
  110. package/admin/src/pages/Settings/utils/api.d.ts +7 -0
  111. package/admin/src/pages/Settings/utils/api.js +60 -55
  112. package/admin/src/pages/utils/api.d.ts +12 -0
  113. package/admin/src/pages/utils/api.js +58 -53
  114. package/admin/src/permissions.d.ts +28 -0
  115. package/admin/src/permissions.js +31 -17
  116. package/admin/src/pluginId.d.ts +2 -0
  117. package/admin/src/pluginId.js +29 -5
  118. package/admin/src/reducers.d.ts +7 -0
  119. package/admin/src/reducers.js +10 -6
  120. package/admin/src/translations/en.json +131 -131
  121. package/admin/src/translations/fr.json +132 -1
  122. package/admin/src/translations/pt-BR.json +130 -130
  123. package/admin/src/utils/axiosInstance.d.ts +3 -0
  124. package/admin/src/utils/axiosInstance.js +21 -27
  125. package/admin/src/utils/constants.d.ts +25 -0
  126. package/admin/src/utils/constants.js +23 -22
  127. package/admin/src/utils/getApiUrl.d.ts +3 -0
  128. package/admin/src/utils/getApiUrl.js +6 -5
  129. package/admin/src/utils/getMessage.d.ts +4 -0
  130. package/admin/src/utils/getMessage.js +15 -15
  131. package/admin/src/utils/getRelatedGroups.d.ts +4 -0
  132. package/admin/src/utils/getRelatedGroups.js +5 -3
  133. package/admin/src/utils/getUrl.d.ts +3 -0
  134. package/admin/src/utils/getUrl.js +6 -5
  135. package/admin/src/utils/handleAPIError.d.ts +4 -0
  136. package/admin/src/utils/handleAPIError.js +12 -11
  137. package/admin/src/utils/index.d.ts +12 -0
  138. package/admin/src/utils/index.js +29 -11
  139. package/admin/src/utils/parseRegExp.d.ts +6 -0
  140. package/admin/src/utils/parseRegExp.js +6 -5
  141. package/admin/src/utils/renderEntryTitle.d.ts +4 -0
  142. package/admin/src/utils/renderEntryTitle.js +11 -12
  143. package/admin/src/utils/renderInitials.d.ts +3 -0
  144. package/admin/src/utils/renderInitials.js +10 -5
  145. package/admin/src/utils/resolveCommentStatus.d.ts +4 -0
  146. package/admin/src/utils/resolveCommentStatus.js +17 -21
  147. package/admin/src/utils/resolveCommentStatusColor.d.ts +4 -0
  148. package/admin/src/utils/resolveCommentStatusColor.js +19 -19
  149. package/content-types/comment.d.ts +91 -0
  150. package/content-types/comment.js +87 -88
  151. package/content-types/index.d.ts +143 -0
  152. package/content-types/index.js +15 -10
  153. package/content-types/report.d.ts +48 -0
  154. package/content-types/report.js +44 -49
  155. package/package.json +24 -19
  156. package/permissions.d.ts +18 -0
  157. package/permissions.js +12 -13
  158. package/server/bootstrap.d.ts +4 -0
  159. package/server/bootstrap.js +56 -62
  160. package/server/config/index.d.ts +4 -0
  161. package/server/config/index.js +17 -15
  162. package/server/controllers/admin.d.ts +4 -0
  163. package/server/controllers/admin.js +134 -167
  164. package/server/controllers/client.d.ts +4 -0
  165. package/server/controllers/client.js +120 -112
  166. package/server/controllers/index.d.ts +6 -0
  167. package/server/controllers/index.js +12 -8
  168. package/server/controllers/utils/functions.d.ts +7 -0
  169. package/server/controllers/utils/functions.js +22 -17
  170. package/server/controllers/utils/parsers.d.ts +10 -0
  171. package/server/controllers/utils/parsers.js +47 -19
  172. package/server/destroy.d.ts +3 -0
  173. package/server/destroy.js +3 -4
  174. package/server/graphql/index.d.ts +4 -0
  175. package/server/graphql/index.js +27 -25
  176. package/server/graphql/mutations/createAbuseReport.d.ts +11 -0
  177. package/server/graphql/mutations/createAbuseReport.js +22 -24
  178. package/server/graphql/mutations/createComment.d.ts +14 -0
  179. package/server/graphql/mutations/createComment.js +22 -24
  180. package/server/graphql/mutations/index.d.ts +4 -0
  181. package/server/graphql/mutations/index.js +24 -19
  182. package/server/graphql/mutations/removeComment.d.ts +11 -0
  183. package/server/graphql/mutations/removeComment.js +22 -24
  184. package/server/graphql/mutations/updateComment.d.ts +11 -0
  185. package/server/graphql/mutations/updateComment.js +22 -24
  186. package/server/graphql/queries/findAllFlat.d.ts +19 -0
  187. package/server/graphql/queries/findAllFlat.js +36 -34
  188. package/server/graphql/queries/findAllInHierarchy.d.ts +17 -0
  189. package/server/graphql/queries/findAllInHierarchy.js +30 -30
  190. package/server/graphql/queries/index.d.ts +4 -0
  191. package/server/graphql/queries/index.js +20 -17
  192. package/server/graphql/resolvers-config.d.ts +23 -0
  193. package/server/graphql/resolvers-config.js +11 -11
  194. package/server/graphql/types/comment-author.d.ts +4 -0
  195. package/server/graphql/types/comment-author.js +10 -8
  196. package/server/graphql/types/comment-nested.d.ts +4 -0
  197. package/server/graphql/types/comment-nested.js +17 -15
  198. package/server/graphql/types/comment.d.ts +4 -0
  199. package/server/graphql/types/comment.js +16 -14
  200. package/server/graphql/types/create-comment-author.d.ts +4 -0
  201. package/server/graphql/types/create-comment-author.js +10 -8
  202. package/server/graphql/types/create-comment.d.ts +4 -0
  203. package/server/graphql/types/create-comment.js +10 -8
  204. package/server/graphql/types/create-report.d.ts +4 -0
  205. package/server/graphql/types/create-report.js +10 -8
  206. package/server/graphql/types/id.d.ts +4 -0
  207. package/server/graphql/types/id.js +24 -23
  208. package/server/graphql/types/identify-comment-author.d.ts +4 -0
  209. package/server/graphql/types/identify-comment-author.js +7 -5
  210. package/server/graphql/types/index.d.ts +4 -0
  211. package/server/graphql/types/index.js +36 -17
  212. package/server/graphql/types/remove-comment.d.ts +4 -0
  213. package/server/graphql/types/remove-comment.js +9 -7
  214. package/server/graphql/types/report-reason.d.ts +4 -0
  215. package/server/graphql/types/report-reason.js +10 -8
  216. package/server/graphql/types/report.d.ts +4 -0
  217. package/server/graphql/types/report.js +12 -10
  218. package/server/graphql/types/response-find-all.d.ts +4 -0
  219. package/server/graphql/types/response-find-all.js +8 -6
  220. package/server/graphql/types/response-meta.d.ts +4 -0
  221. package/server/graphql/types/response-meta.js +7 -5
  222. package/server/graphql/types/response-pagination.d.ts +4 -0
  223. package/server/graphql/types/response-pagination.js +12 -10
  224. package/server/graphql/types/update-comment.d.ts +4 -0
  225. package/server/graphql/types/update-comment.js +10 -8
  226. package/server/index.d.ts +26 -0
  227. package/server/index.js +24 -21
  228. package/server/register.d.ts +3 -0
  229. package/server/register.js +3 -4
  230. package/server/routes/admin.d.ts +4 -0
  231. package/server/routes/admin.js +103 -109
  232. package/server/routes/client.d.ts +4 -0
  233. package/server/routes/client.js +84 -46
  234. package/server/routes/index.d.ts +11 -0
  235. package/server/routes/index.js +18 -14
  236. package/server/services/admin.d.ts +5 -0
  237. package/server/services/admin.js +134 -161
  238. package/server/services/client.d.ts +5 -0
  239. package/server/services/client.js +164 -168
  240. package/server/services/common.d.ts +5 -0
  241. package/server/services/common.js +192 -202
  242. package/server/services/graphql.d.ts +5 -0
  243. package/server/services/graphql.js +117 -182
  244. package/server/services/index.d.ts +8 -0
  245. package/server/services/index.js +15 -12
  246. package/server/services/utils/functions.d.ts +13 -0
  247. package/server/services/utils/functions.js +105 -109
  248. package/server/utils/constants.d.ts +9 -0
  249. package/server/utils/constants.js +19 -23
  250. package/server/utils/error.d.ts +19 -0
  251. package/server/utils/error.js +23 -18
  252. package/server/utils/functions.d.ts +6 -0
  253. package/server/utils/functions.js +35 -18
  254. package/strapi-admin.d.ts +3 -0
  255. package/strapi-admin.js +8 -3
  256. package/strapi-server.d.ts +177 -0
  257. package/strapi-server.js +43 -46
  258. package/tsconfig.tsbuildinfo +1 -0
  259. package/types/contentTypes.d.ts +48 -0
  260. package/types/contentTypes.js +3 -0
  261. package/.husky/pre-commit +0 -4
  262. package/LICENSE.md +0 -7
  263. package/__mocks__/initSetup.js +0 -108
  264. package/jest.config.js +0 -7
  265. package/server/controllers/utils/__tests__/functions.test.js +0 -43
  266. package/server/controllers/utils/__tests__/parsers.test.js +0 -94
  267. package/server/services/__tests__/common.test.js +0 -399
  268. package/server/services/utils/__tests__/functions.test.js +0 -53
  269. package/server/utils/__tests__/functions.test.js +0 -17
@@ -1,96 +1,90 @@
1
- 'use strict';
2
-
3
- const config = require('../config');
4
- const { getPluginService } = require('./../utils/functions');
5
- const { isNil, isEmpty, isNumber, parseInt } = require('lodash');
6
- const PluginError = require('./../utils/error');
7
- const {
8
- isEqualEntity,
9
- getModelUid,
10
- getRelatedGroups,
11
- resolveUserContextError,
12
- } = require('./utils/functions');
13
- const { APPROVAL_STATUS, REGEX, CONFIG_PARAMS } = require('./../utils/constants')
14
-
15
- /**
16
- * Comments Plugin - Client services
17
- */
18
-
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ const functions_1 = require("./../utils/functions");
6
+ const lodash_1 = require("lodash");
7
+ const error_1 = __importDefault(require("./../utils/error"));
8
+ const functions_2 = require("./utils/functions");
9
+ const constants_1 = require("./../utils/constants");
19
10
  module.exports = ({ strapi }) => ({
20
-
21
11
  getCommonService() {
22
- return getPluginService('common');
12
+ return (0, functions_1.getPluginService)("common");
23
13
  },
24
-
25
- // Create a comment
26
- async create(relation, data, user = undefined) {
14
+ async create(relation, data, user) {
27
15
  const { content, threadOf } = data;
28
- const singleRelationFulfilled = relation && REGEX.relatedUid.test(relation);
29
-
30
- if(!singleRelationFulfilled) {
31
- throw new PluginError(400, `Field "related" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`);
16
+ const singleRelationFulfilled = relation && constants_1.REGEX.relatedUid.test(relation);
17
+ if (!singleRelationFulfilled) {
18
+ throw new error_1.default(400, `Field "related" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`);
32
19
  }
33
-
34
- const [ uid, relatedId ] = await this.getCommonService().parseRelationString(relation);
35
-
36
- const relatedEntity = await strapi.db.query(uid).findOne(relatedId);
20
+ const [uid, relatedId] = await this.getCommonService().parseRelationString(relation);
21
+ const isEnabledCollection = await this.getCommonService().isEnabledCollection(uid);
22
+ if (!isEnabledCollection) {
23
+ throw new error_1.default(400, `Field "related" refer to not enabled collection. Please amend the plugin settings and try again`);
24
+ }
25
+ const relatedEntity = await strapi.db
26
+ .query(uid)
27
+ .findOne(relatedId);
37
28
  if (!relatedEntity) {
38
- throw new PluginError(400, `Relation for field "related" does not exist. Check your payload please.`);
29
+ throw new error_1.default(400, `Relation for field "related" does not exist. Check your payload please.`);
39
30
  }
40
-
41
- const approvalFlow = await this.getCommonService().getConfig(CONFIG_PARAMS.APPROVAL_FLOW, []);
42
- const isApprovalFlowEnabled = approvalFlow.includes(uid) ||
43
- relatedEntity.requireCommentsApproval;
44
-
45
- const linkToThread = !isNil(threadOf) ? await this.getCommonService().findOne({
46
- id: threadOf,
47
- related: relation,
48
- }) : true;
49
- const validContext = this.getCommonService().isValidUserContext(user);
50
-
51
- if (!linkToThread) {
52
- throw new PluginError(400, 'Thread does not exist');
31
+ const approvalFlow = await this.getCommonService().getConfig(constants_1.CONFIG_PARAMS.APPROVAL_FLOW, []);
32
+ const isApprovalFlowEnabled = approvalFlow.includes(uid) || relatedEntity.requireCommentsApproval;
33
+ let linkToThread;
34
+ try {
35
+ linkToThread = !(0, lodash_1.isNil)(threadOf)
36
+ ? await this.getCommonService().findOne({
37
+ id: threadOf,
38
+ related: relation,
39
+ })
40
+ : null;
53
41
  }
54
-
42
+ catch (e) {
43
+ throw new error_1.default(400, "Thread does not exist");
44
+ }
45
+ const validContext = this.getCommonService().isValidUserContext(user);
55
46
  if (!validContext) {
56
- throw resolveUserContextError(user);
47
+ throw (0, functions_2.resolveUserContextError)(user);
57
48
  }
58
-
59
- if (await this.getCommonService().checkBadWords(content) && singleRelationFulfilled) {
60
- const { author = {}, ...rest } = data;
49
+ if ((await this.getCommonService().checkBadWords(content)) &&
50
+ singleRelationFulfilled) {
51
+ const { author, ...rest } = data;
61
52
  let authorData = {};
62
53
  if (validContext && user) {
63
54
  authorData = {
64
55
  authorUser: user?.id,
65
56
  };
66
- } else {
67
- if (author.email && !REGEX.email.test(author.email)) {
68
- throw new PluginError(400, 'Field: "author.email". Author e-mail is not valid value. Check your payload');
57
+ }
58
+ else if (author) {
59
+ if (author.email && !constants_1.REGEX.email.test(author.email)) {
60
+ throw new error_1.default(400, 'Field: "author.email". Author e-mail is not valid value. Check your payload');
69
61
  }
70
-
71
62
  authorData = {
72
63
  authorId: author.id,
73
64
  authorName: author.name,
74
65
  authorEmail: author.email,
75
- authorAvatar: author.avatar,
66
+ authorAvatar: (0, lodash_1.isString)(author.avatar) ? author.avatar : undefined,
76
67
  };
77
68
  }
78
-
79
- if (!isEmpty(authorData) && !(authorData.authorId || authorData.authorUser)) {
80
- throw new PluginError(400, `Not able to recognise author of a comment. Make sure you've provided "author" property in a payload or authenticated your request properly.`);
69
+ const authorNotProperlyProvided = !(0, lodash_1.isEmpty)(authorData) && !(authorData.authorId || authorData.authorUser);
70
+ if ((0, lodash_1.isEmpty)(authorData) || authorNotProperlyProvided) {
71
+ throw new error_1.default(400, `Not able to recognise author of a comment. Make sure you've provided "author" property in a payload or authenticated your request properly.`);
81
72
  }
82
-
83
- if (isApprovalFlowEnabled &&
84
- (!isNil(data.approvalStatus) && (data.approvalStatus !== APPROVAL_STATUS.PENDING))) {
85
- throw new PluginError(400, 'Invalid approval status');
73
+ if (isApprovalFlowEnabled &&
74
+ !(0, lodash_1.isNil)(data.approvalStatus) &&
75
+ data.approvalStatus !== constants_1.APPROVAL_STATUS.PENDING) {
76
+ throw new error_1.default(400, "Invalid approval status");
86
77
  }
87
-
88
- const entity = await strapi.db.query(getModelUid('comment')).create({
78
+ const entity = await strapi.db
79
+ .query((0, functions_2.getModelUid)("comment"))
80
+ .create({
89
81
  data: {
90
82
  ...rest,
91
83
  ...authorData,
92
84
  related: relation,
93
- approvalStatus: isApprovalFlowEnabled ? APPROVAL_STATUS.PENDING : null,
85
+ approvalStatus: isApprovalFlowEnabled
86
+ ? constants_1.APPROVAL_STATUS.PENDING
87
+ : null,
94
88
  },
95
89
  populate: {
96
90
  authorUser: true,
@@ -98,38 +92,31 @@ module.exports = ({ strapi }) => ({
98
92
  });
99
93
  return this.getCommonService().sanitizeCommentEntity({
100
94
  ...entity,
101
- threadOf: !isNil(threadOf) ? linkToThread : null,
95
+ threadOf: linkToThread,
102
96
  });
103
97
  }
104
- throw new PluginError(400, 'No content received');
98
+ throw new error_1.default(400, "No content received");
105
99
  },
106
-
107
- // Update a comment
108
- async update(id, relation, data, user = undefined) {
100
+ async update(id, relation, data, user) {
109
101
  const { content } = data;
110
-
111
- const singleRelationFulfilled = relation && REGEX.relatedUid.test(relation)
112
-
113
- if(!singleRelationFulfilled) {
114
- throw new PluginError(400, `Request property "relation" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`);
102
+ const singleRelationFulfilled = relation && constants_1.REGEX.relatedUid.test(relation);
103
+ if (!singleRelationFulfilled) {
104
+ throw new error_1.default(400, `Request property "relation" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`);
115
105
  }
116
-
117
106
  await this.getCommonService().parseRelationString(relation);
118
-
119
107
  const existingEntity = await this.getCommonService().findOne({
120
108
  id,
121
109
  related: relation,
122
110
  });
123
-
124
111
  const validContext = this.getCommonService().isValidUserContext(user);
125
-
126
112
  if (!validContext) {
127
- throw resolveUserContextError(user);
113
+ throw (0, functions_2.resolveUserContextError)(user);
128
114
  }
129
-
130
- if (isEqualEntity(existingEntity, data, user) && content) {
115
+ if ((0, functions_2.isEqualEntity)(existingEntity, data, user) && content) {
131
116
  if (await this.getCommonService().checkBadWords(content)) {
132
- const entity = await strapi.db.query(getModelUid('comment')).update({
117
+ const entity = await strapi.db
118
+ .query((0, functions_2.getModelUid)("comment"))
119
+ .update({
133
120
  where: { id },
134
121
  data: { content },
135
122
  populate: { threadOf: true, authorUser: true },
@@ -137,127 +124,136 @@ module.exports = ({ strapi }) => ({
137
124
  return this.getCommonService().sanitizeCommentEntity(entity);
138
125
  }
139
126
  }
140
- throw new PluginError(403, `You're not allowed to take an action on that entity. Make sure you've provided "author" property in a payload or authenticated your request properly.`);
127
+ throw new error_1.default(403, `You're not allowed to take an action on that entity. Make sure you've provided "author" property in a payload or authenticated your request properly.`);
141
128
  },
142
-
143
- // Report abuse in comment
144
- async reportAbuse(id, relation, payload, user = undefined) {
129
+ async reportAbuse(id, relation, payload, user) {
145
130
  if (!this.getCommonService().isValidUserContext(user)) {
146
- throw resolveUserContextError(user);
131
+ throw (0, functions_2.resolveUserContextError)(user);
147
132
  }
148
-
149
133
  await this.getCommonService().parseRelationString(relation);
150
-
151
- const reportAgainstEntity = await this.getCommonService().findOne({
152
- id,
153
- related: relation,
154
- });
155
- if (reportAgainstEntity) {
156
- const entity = await strapi.db.query(getModelUid('comment-report')).create({
157
- data: {
158
- ...payload,
159
- resolved: false,
160
- related: id,
161
- }
134
+ try {
135
+ const reportAgainstEntity = await this.getCommonService().findOne({
136
+ id,
137
+ related: relation,
162
138
  });
163
- if (entity) {
164
- const response = {
165
- ...entity,
166
- related: reportAgainstEntity,
167
- };
168
- try {
169
- await this.sendAbuseReportEmail(entity.reason, entity.content); // Could also add some info about relation
170
- return response
171
- } catch (err) {
172
- return response;
139
+ if (reportAgainstEntity) {
140
+ const entity = await strapi.db
141
+ .query((0, functions_2.getModelUid)("comment-report"))
142
+ .create({
143
+ data: {
144
+ ...payload,
145
+ resolved: false,
146
+ related: id,
147
+ },
148
+ });
149
+ if (entity) {
150
+ const response = {
151
+ ...entity,
152
+ related: reportAgainstEntity,
153
+ };
154
+ try {
155
+ await this.sendAbuseReportEmail(entity.reason, entity.content);
156
+ return response;
157
+ }
158
+ catch (err) {
159
+ return response;
160
+ }
161
+ }
162
+ else {
163
+ throw new error_1.default(500, "Report cannot be created");
173
164
  }
174
- } else {
175
- throw new PluginError(500, 'Report cannot be created');
176
165
  }
166
+ throw new error_1.default(403, `You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.`);
167
+ }
168
+ catch (e) {
169
+ throw new error_1.default(403, `You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.`);
177
170
  }
178
- throw new PluginError(403, `You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.`);
179
171
  },
180
-
181
- async markAsRemoved(id, relation, authorId, user = undefined){
172
+ async markAsRemoved(id, relation, authorId, user) {
182
173
  if (!this.getCommonService().isValidUserContext(user)) {
183
- throw resolveUserContextError(user);
174
+ throw (0, functions_2.resolveUserContextError)(user);
184
175
  }
185
-
186
176
  const author = user?.id || authorId;
187
-
188
177
  if (!author) {
189
- throw new PluginError(403, `You're not allowed to take an action on that entity. Make sure that you've provided proper "authorId" or authenticated your request properly.`);
178
+ throw new error_1.default(403, `You're not allowed to take an action on that entity. Make sure that you've provided proper "authorId" or authenticated your request properly.`);
190
179
  }
191
-
192
180
  await this.getCommonService().parseRelationString(relation);
193
-
194
- let entity;
195
181
  try {
196
- const byAuthor = user?.id ? {
197
- authorUser: author
198
- } : {
199
- authorId: author
200
- }
201
- entity = await this.getCommonService().findOne({
182
+ const byAuthor = user?.id
183
+ ? {
184
+ authorUser: author,
185
+ }
186
+ : {
187
+ authorId: author,
188
+ };
189
+ const entity = await this.getCommonService().findOne({
202
190
  id,
203
191
  related: relation,
204
192
  ...byAuthor,
205
193
  });
206
- } catch(e) {
207
- throw new PluginError(404, `Entity does not exist or you're not allowed to take an action on it`);
194
+ if (entity) {
195
+ const removedEntity = await strapi.db
196
+ .query((0, functions_2.getModelUid)("comment"))
197
+ .update({
198
+ where: {
199
+ id,
200
+ related: relation,
201
+ },
202
+ data: { removed: true },
203
+ populate: { threadOf: true, authorUser: true },
204
+ });
205
+ await this.markAsRemovedNested(id, true);
206
+ return this.getCommonService().sanitizeCommentEntity(removedEntity);
207
+ }
208
+ else {
209
+ throw new error_1.default(404, `Entity does not exist or you're not allowed to take an action on it`);
210
+ }
211
+ }
212
+ catch (e) {
213
+ throw new error_1.default(404, `Entity does not exist or you're not allowed to take an action on it`);
208
214
  }
209
-
210
- const removedEntity = await strapi.db.query(getModelUid('comment'))
211
- .update({
212
- where: {
213
- id,
214
- related: relation
215
- },
216
- data: { removed: true },
217
- populate: { threadOf: true, authorUser: true },
218
- })
219
- await this.markAsRemovedNested(id, true);
220
-
221
- return this.getCommonService().sanitizeCommentEntity(removedEntity);
222
215
  },
223
-
224
- async sendAbuseReportEmail(reason, content) {
225
- const rolesToBeNotified = await this.getCommonService().getConfig(CONFIG_PARAMS.MODERATOR_ROLES) || ['strapi-super-admin'];
226
-
227
- const adminUserModel = strapi.db.query('admin::user');
228
- const emails = await adminUserModel.findMany({
229
- where: {
216
+ async sendAbuseReportEmail(reason, content) {
217
+ const rolesToBeNotified = (await this.getCommonService().getConfig(constants_1.CONFIG_PARAMS.MODERATOR_ROLES)) || ["strapi-super-admin"];
218
+ const adminUserModel = strapi.db.query("admin::user");
219
+ const emails = await adminUserModel
220
+ .findMany({
221
+ where: {
230
222
  roles: { code: rolesToBeNotified },
231
223
  },
232
- }).then(items => items.map(_ => _.email));
233
-
234
- const superAdmin = await strapi.db.query('admin::user')
224
+ })
225
+ .then((items) => items.map((_) => _.email));
226
+ const superAdmin = await strapi.db
227
+ .query("admin::user")
235
228
  .findOne({
236
- where: {
237
- roles: { code: 'strapi-super-admin' },
238
- },
239
- });
240
-
241
- if (emails.length > 0) {
229
+ where: {
230
+ roles: { code: "strapi-super-admin" },
231
+ },
232
+ });
233
+ if (emails.length > 0) {
242
234
  try {
243
- await strapi.plugin('email').service('email').send({
235
+ await strapi
236
+ .plugin("email")
237
+ .service("email")
238
+ .send({
244
239
  to: emails,
245
240
  from: superAdmin.email,
246
- subject: 'New abuse report on comment',
241
+ subject: "New abuse report on comment",
247
242
  text: `
248
243
  There was a new abuse report on your app.
249
244
  Reason: ${reason}
250
245
  Message: ${content}
251
246
  `,
252
247
  });
253
- } catch(err) {
248
+ }
249
+ catch (err) {
254
250
  strapi.log.error(err);
255
251
  throw err;
256
252
  }
257
- }
258
- },
259
-
260
- async markAsRemovedNested(id, status){
261
- return this.getCommonService().modifiedNestedNestedComments(id, 'removed', status);
253
+ }
254
+ },
255
+ async markAsRemovedNested(id, status) {
256
+ return this.getCommonService().modifiedNestedNestedComments(id, "removed", status);
262
257
  },
263
258
  });
259
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,5 @@
1
+ import { StrapiContext } from "strapi-typed";
2
+ import { IServiceCommon } from "../../types";
3
+ declare const _default: ({ strapi }: StrapiContext) => IServiceCommon;
4
+ export = _default;
5
+ //# sourceMappingURL=common.d.ts.map