strapi-plugin-comments 2.0.11 → 2.1.1

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 (443) hide show
  1. package/README.md +165 -119
  2. package/admin/src/components/ActionButton/styles.ts +11 -0
  3. package/admin/src/components/Avatar/index.tsx +31 -0
  4. package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
  5. package/admin/src/components/DiscussionStatus/index.tsx +36 -0
  6. package/admin/src/components/DiscussionThread/index.tsx +97 -0
  7. package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
  8. package/admin/src/components/DiscussionThreadItem/{styles.js → styles.ts} +8 -6
  9. package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
  10. package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
  11. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
  12. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
  13. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
  14. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
  15. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
  16. package/admin/src/components/FormSwitch/index.tsx +35 -0
  17. package/admin/src/components/FormSwitch/styles.ts +10 -0
  18. package/admin/src/components/IconButton/styles.ts +19 -0
  19. package/admin/src/components/Initializer/{index.js → index.tsx} +8 -6
  20. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
  21. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
  22. package/admin/src/components/Nav/index.tsx +61 -0
  23. package/admin/src/components/PluginIcon/{index.js → index.tsx} +4 -2
  24. package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
  25. package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
  26. package/admin/src/components/StatusBadge/index.tsx +21 -0
  27. package/admin/src/components/StatusBadge/styles.ts +19 -0
  28. package/admin/src/components/TableFilters/{index.js → index.tsx} +14 -9
  29. package/admin/src/components/TablePagination/{index.js → index.tsx} +8 -6
  30. package/admin/src/components/icons/comments.tsx +15 -0
  31. package/admin/src/components/icons/index.ts +6 -0
  32. package/admin/src/components/icons/{lock.js → lock.tsx} +17 -12
  33. package/admin/src/components/icons/review.tsx +25 -0
  34. package/admin/src/components/icons/unlock.tsx +25 -0
  35. package/admin/src/hooks/useConfig.ts +58 -0
  36. package/admin/src/{index.js → index.ts} +26 -22
  37. package/admin/src/pages/App/index.tsx +67 -0
  38. package/admin/src/pages/App/reducer/actions.ts +10 -0
  39. package/admin/src/pages/App/reducer/constants.ts +4 -0
  40. package/admin/src/pages/App/reducer/{index.js → index.ts} +8 -6
  41. package/admin/src/pages/App/reducer/init.ts +9 -0
  42. package/admin/src/pages/App/reducer/selectors.ts +32 -0
  43. package/admin/src/pages/App/utils/{api.js → api.ts} +3 -1
  44. package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
  45. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
  46. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
  47. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
  48. package/admin/src/pages/Details/index.tsx +169 -0
  49. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
  50. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
  51. package/admin/src/pages/Discover/index.tsx +230 -0
  52. package/admin/src/pages/Discover/utils/api.ts +22 -0
  53. package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
  54. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
  55. package/admin/src/pages/Settings/index.tsx +602 -0
  56. package/admin/src/pages/Settings/utils/{api.js → api.ts} +16 -5
  57. package/admin/src/pages/utils/api.ts +70 -0
  58. package/admin/src/permissions.ts +30 -0
  59. package/admin/src/pluginId.ts +3 -0
  60. package/admin/src/reducers.ts +8 -0
  61. package/admin/src/translations/en.json +131 -131
  62. package/admin/src/translations/pt-BR.json +130 -130
  63. package/admin/src/utils/{axiosInstance.js → axiosInstance.ts} +12 -9
  64. package/admin/src/utils/constants.ts +25 -0
  65. package/admin/src/utils/getApiUrl.ts +5 -0
  66. package/admin/src/utils/getMessage.ts +29 -0
  67. package/admin/src/utils/getRelatedGroups.ts +6 -0
  68. package/admin/src/utils/getUrl.ts +5 -0
  69. package/admin/src/utils/handleAPIError.ts +21 -0
  70. package/admin/src/utils/index.ts +11 -0
  71. package/admin/src/utils/parseRegExp.ts +9 -0
  72. package/admin/src/utils/renderEntryTitle.ts +16 -0
  73. package/admin/src/utils/renderInitials.ts +10 -0
  74. package/admin/src/utils/resolveCommentStatus.ts +37 -0
  75. package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
  76. package/build/README.md +41 -5
  77. package/build/admin/src/components/ActionButton/styles.d.ts +1 -1
  78. package/build/admin/src/components/ActionButton/styles.js +5 -7
  79. package/build/admin/src/components/Avatar/index.d.ts +12 -0
  80. package/build/admin/src/components/Avatar/index.js +26 -0
  81. package/build/admin/src/components/ConfirmationDialog/index.js +23 -90
  82. package/build/admin/src/components/DiscussionStatus/index.js +13 -27
  83. package/build/admin/src/components/DiscussionThread/index.js +29 -83
  84. package/build/admin/src/components/DiscussionThreadItem/index.js +20 -59
  85. package/build/admin/src/components/DiscussionThreadItem/styles.d.ts +1 -1
  86. package/build/admin/src/components/DiscussionThreadItem/styles.js +8 -17
  87. package/build/admin/src/components/DiscussionThreadItemActions/index.js +163 -383
  88. package/build/admin/src/components/DiscussionThreadItemActions/styles.d.ts +1 -1
  89. package/build/admin/src/components/DiscussionThreadItemActions/styles.js +5 -9
  90. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +52 -85
  91. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +1 -1
  92. package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +5 -8
  93. package/build/admin/src/components/DiscussionThreadItemFooter/index.js +27 -61
  94. package/build/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +1 -1
  95. package/build/admin/src/components/DiscussionThreadItemFooter/styles.js +7 -14
  96. package/build/admin/src/components/DiscussionThreadItemReviewAction/index.js +91 -207
  97. package/build/admin/src/components/FormSwitch/index.d.ts +5 -9
  98. package/build/admin/src/components/FormSwitch/index.js +8 -32
  99. package/build/admin/src/components/FormSwitch/styles.d.ts +1 -1
  100. package/build/admin/src/components/FormSwitch/styles.js +5 -7
  101. package/build/admin/src/components/IconButton/styles.d.ts +1 -1
  102. package/build/admin/src/components/IconButton/styles.js +7 -13
  103. package/build/admin/src/components/Initializer/index.d.ts +4 -2
  104. package/build/admin/src/components/Initializer/index.js +7 -7
  105. package/build/admin/src/components/LoadingIndicatorOverlay/index.d.ts +1 -1
  106. package/build/admin/src/components/LoadingIndicatorOverlay/index.js +6 -12
  107. package/build/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +1 -1
  108. package/build/admin/src/components/LoadingIndicatorOverlay/styles.js +7 -14
  109. package/build/admin/src/components/Nav/index.js +16 -62
  110. package/build/admin/src/components/PluginIcon/index.d.ts +1 -1
  111. package/build/admin/src/components/PluginIcon/index.js +5 -8
  112. package/build/admin/src/components/ReportsReviewModal/index.js +23 -62
  113. package/build/admin/src/components/ReportsReviewTable/index.js +112 -293
  114. package/build/admin/src/components/StatusBadge/index.d.ts +5 -9
  115. package/build/admin/src/components/StatusBadge/index.js +6 -16
  116. package/build/admin/src/components/StatusBadge/styles.d.ts +1 -1
  117. package/build/admin/src/components/StatusBadge/styles.js +5 -7
  118. package/build/admin/src/components/TableFilters/index.js +38 -91
  119. package/build/admin/src/components/TablePagination/index.d.ts +13 -11
  120. package/build/admin/src/components/TablePagination/index.js +19 -31
  121. package/build/admin/src/components/icons/comments.d.ts +4 -7
  122. package/build/admin/src/components/icons/comments.js +7 -18
  123. package/build/admin/src/components/icons/index.d.ts +1 -1
  124. package/build/admin/src/components/icons/index.js +5 -11
  125. package/build/admin/src/components/icons/lock.d.ts +5 -9
  126. package/build/admin/src/components/icons/lock.js +7 -24
  127. package/build/admin/src/components/icons/review.d.ts +5 -9
  128. package/build/admin/src/components/icons/review.js +7 -26
  129. package/build/admin/src/components/icons/unlock.d.ts +5 -9
  130. package/build/admin/src/components/icons/unlock.js +7 -24
  131. package/build/admin/src/hooks/useConfig.js +34 -42
  132. package/build/admin/src/index.js +84 -121
  133. package/build/admin/src/pages/App/index.js +23 -66
  134. package/build/admin/src/pages/App/reducer/actions.d.ts +4 -4
  135. package/build/admin/src/pages/App/reducer/actions.js +3 -3
  136. package/build/admin/src/pages/App/reducer/constants.d.ts +1 -1
  137. package/build/admin/src/pages/App/reducer/constants.js +1 -1
  138. package/build/admin/src/pages/App/reducer/index.d.ts +5 -10
  139. package/build/admin/src/pages/App/reducer/index.js +16 -19
  140. package/build/admin/src/pages/App/reducer/init.d.ts +1 -1
  141. package/build/admin/src/pages/App/reducer/init.js +4 -4
  142. package/build/admin/src/pages/App/reducer/selectors.d.ts +1 -1
  143. package/build/admin/src/pages/App/reducer/selectors.js +6 -8
  144. package/build/admin/src/pages/App/utils/api.js +8 -9
  145. package/build/admin/src/pages/ComingSoonPage/index.js +27 -62
  146. package/build/admin/src/pages/Details/components/DetailsEntity/index.js +39 -115
  147. package/build/admin/src/pages/Details/components/DetailsFilters/index.js +13 -33
  148. package/build/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +1 -1
  149. package/build/admin/src/pages/Details/components/DetailsFilters/styles.js +5 -7
  150. package/build/admin/src/pages/Details/index.js +64 -183
  151. package/build/admin/src/pages/Discover/components/DiscoverTableRow/index.js +139 -314
  152. package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +1 -1
  153. package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +5 -7
  154. package/build/admin/src/pages/Discover/index.js +98 -298
  155. package/build/admin/src/pages/Discover/utils/api.js +8 -15
  156. package/build/admin/src/pages/Discover/utils/filtersSchema.d.ts +8 -8
  157. package/build/admin/src/pages/Discover/utils/filtersSchema.js +6 -6
  158. package/build/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +1 -1
  159. package/build/admin/src/pages/Settings/components/RestartAlert/styles.js +5 -7
  160. package/build/admin/src/pages/Settings/index.js +192 -678
  161. package/build/admin/src/pages/Settings/utils/api.js +44 -59
  162. package/build/admin/src/pages/utils/api.js +26 -51
  163. package/build/admin/src/permissions.d.ts +25 -25
  164. package/build/admin/src/permissions.js +28 -60
  165. package/build/admin/src/pluginId.d.ts +1 -1
  166. package/build/admin/src/pluginId.js +20 -41
  167. package/build/admin/src/reducers.d.ts +4 -9
  168. package/build/admin/src/reducers.js +5 -7
  169. package/build/admin/src/translations/fr.json +132 -1
  170. package/build/admin/src/utils/axiosInstance.js +15 -23
  171. package/build/admin/src/utils/constants.d.ts +17 -17
  172. package/build/admin/src/utils/constants.js +16 -20
  173. package/build/admin/src/utils/getApiUrl.d.ts +1 -1
  174. package/build/admin/src/utils/getApiUrl.js +1 -1
  175. package/build/admin/src/utils/getMessage.js +13 -17
  176. package/build/admin/src/utils/getRelatedGroups.js +2 -3
  177. package/build/admin/src/utils/getUrl.d.ts +1 -1
  178. package/build/admin/src/utils/getUrl.js +1 -1
  179. package/build/admin/src/utils/handleAPIError.js +12 -15
  180. package/build/admin/src/utils/index.js +16 -84
  181. package/build/admin/src/utils/parseRegExp.d.ts +3 -3
  182. package/build/admin/src/utils/parseRegExp.js +6 -6
  183. package/build/admin/src/utils/renderEntryTitle.js +7 -10
  184. package/build/admin/src/utils/renderInitials.d.ts +1 -1
  185. package/build/admin/src/utils/renderInitials.js +2 -3
  186. package/build/admin/src/utils/resolveCommentStatus.js +19 -25
  187. package/build/admin/src/utils/resolveCommentStatusColor.js +15 -15
  188. package/build/content-types/comment.d.ts +87 -87
  189. package/build/content-types/comment.js +87 -87
  190. package/build/content-types/index.d.ts +136 -136
  191. package/build/content-types/index.js +10 -12
  192. package/build/content-types/report.d.ts +41 -41
  193. package/build/content-types/report.js +41 -41
  194. package/build/package.json +5 -5
  195. package/build/permissions.d.ts +14 -14
  196. package/build/permissions.js +14 -14
  197. package/build/server/bootstrap.js +52 -58
  198. package/build/server/config/index.js +13 -13
  199. package/build/server/controllers/admin.js +128 -117
  200. package/build/server/controllers/client.js +15 -4
  201. package/build/server/controllers/index.js +6 -8
  202. package/build/server/controllers/utils/functions.d.ts +1 -1
  203. package/build/server/controllers/utils/parsers.d.ts +5 -10
  204. package/build/server/controllers/utils/parsers.js +46 -20
  205. package/build/server/destroy.d.ts +1 -1
  206. package/build/server/destroy.js +3 -2
  207. package/build/server/graphql/index.js +19 -29
  208. package/build/server/graphql/mutations/createAbuseReport.js +19 -23
  209. package/build/server/graphql/mutations/createComment.d.ts +1 -1
  210. package/build/server/graphql/mutations/createComment.js +19 -22
  211. package/build/server/graphql/mutations/index.js +19 -21
  212. package/build/server/graphql/mutations/removeComment.d.ts +1 -1
  213. package/build/server/graphql/mutations/removeComment.js +19 -23
  214. package/build/server/graphql/mutations/updateComment.d.ts +1 -1
  215. package/build/server/graphql/mutations/updateComment.js +19 -23
  216. package/build/server/graphql/queries/findAllFlat.d.ts +1 -1
  217. package/build/server/graphql/queries/findAllFlat.js +30 -40
  218. package/build/server/graphql/queries/findAllInHierarchy.d.ts +1 -2
  219. package/build/server/graphql/queries/findAllInHierarchy.js +25 -32
  220. package/build/server/graphql/queries/index.js +17 -19
  221. package/build/server/graphql/resolvers-config.js +10 -10
  222. package/build/server/graphql/types/comment-author.js +7 -8
  223. package/build/server/graphql/types/comment-nested.js +14 -15
  224. package/build/server/graphql/types/comment.js +13 -14
  225. package/build/server/graphql/types/create-comment-author.js +7 -8
  226. package/build/server/graphql/types/create-comment.js +7 -8
  227. package/build/server/graphql/types/create-report.js +7 -8
  228. package/build/server/graphql/types/id.js +13 -14
  229. package/build/server/graphql/types/identify-comment-author.js +4 -5
  230. package/build/server/graphql/types/index.js +21 -27
  231. package/build/server/graphql/types/remove-comment.js +6 -7
  232. package/build/server/graphql/types/report-reason.js +9 -9
  233. package/build/server/graphql/types/report.js +9 -10
  234. package/build/server/graphql/types/response-find-all.js +5 -6
  235. package/build/server/graphql/types/response-meta.js +4 -5
  236. package/build/server/graphql/types/response-pagination.js +9 -10
  237. package/build/server/graphql/types/update-comment.js +7 -8
  238. package/build/server/register.d.ts +1 -1
  239. package/build/server/register.js +3 -2
  240. package/build/server/routes/admin.d.ts +1 -1
  241. package/build/server/routes/admin.js +99 -99
  242. package/build/server/routes/client.d.ts +1 -1
  243. package/build/server/routes/client.js +79 -43
  244. package/build/server/routes/index.d.ts +4 -4
  245. package/build/server/routes/index.js +12 -14
  246. package/build/server/services/admin.js +257 -284
  247. package/build/server/services/client.js +54 -42
  248. package/build/server/services/common.js +33 -11
  249. package/build/server/services/graphql.js +113 -124
  250. package/build/server/services/utils/functions.d.ts +1 -1
  251. package/build/server/services/utils/functions.js +76 -109
  252. package/build/server/utils/constants.js +13 -14
  253. package/build/server/utils/error.d.ts +12 -16
  254. package/build/server/utils/error.js +23 -23
  255. package/build/server/utils/functions.d.ts +4 -12
  256. package/build/server/utils/functions.js +20 -34
  257. package/build/strapi-admin.js +4 -6
  258. package/build/tsconfig.tsbuildinfo +1 -1
  259. package/build/types/contentTypes.d.ts +7 -5
  260. package/content-types/comment.ts +93 -0
  261. package/content-types/index.ts +11 -0
  262. package/content-types/report.ts +50 -0
  263. package/jest.config.ts +22 -0
  264. package/package.json +45 -11
  265. package/permissions.ts +17 -0
  266. package/server/{bootstrap.js → bootstrap.ts} +12 -11
  267. package/server/config/index.ts +19 -0
  268. package/server/controllers/admin.ts +194 -0
  269. package/server/controllers/client.ts +220 -0
  270. package/server/controllers/index.ts +13 -0
  271. package/server/controllers/utils/functions.ts +27 -0
  272. package/server/controllers/utils/parsers.ts +59 -0
  273. package/server/destroy.ts +3 -0
  274. package/server/graphql/index.ts +27 -0
  275. package/server/graphql/mutations/createAbuseReport.ts +38 -0
  276. package/server/graphql/mutations/createComment.ts +41 -0
  277. package/server/graphql/mutations/index.ts +26 -0
  278. package/server/graphql/mutations/removeComment.ts +41 -0
  279. package/server/graphql/mutations/updateComment.ts +40 -0
  280. package/server/graphql/queries/findAllFlat.ts +58 -0
  281. package/server/graphql/queries/findAllInHierarchy.ts +47 -0
  282. package/server/graphql/queries/index.ts +22 -0
  283. package/server/graphql/resolvers-config.ts +13 -0
  284. package/server/graphql/types/comment-author.ts +12 -0
  285. package/server/graphql/types/comment-nested.ts +19 -0
  286. package/server/graphql/types/comment.ts +18 -0
  287. package/server/graphql/types/create-comment-author.ts +12 -0
  288. package/server/graphql/types/create-comment.ts +12 -0
  289. package/server/graphql/types/create-report.ts +12 -0
  290. package/server/graphql/types/id.ts +28 -0
  291. package/server/graphql/types/identify-comment-author.ts +9 -0
  292. package/server/graphql/types/index.ts +38 -0
  293. package/server/graphql/types/remove-comment.ts +11 -0
  294. package/server/graphql/types/report-reason.ts +12 -0
  295. package/server/graphql/types/report.ts +14 -0
  296. package/server/graphql/types/response-find-all.ts +10 -0
  297. package/server/graphql/types/response-meta.ts +9 -0
  298. package/server/graphql/types/response-pagination.ts +14 -0
  299. package/server/graphql/types/update-comment.ts +12 -0
  300. package/server/index.ts +20 -0
  301. package/server/register.ts +3 -0
  302. package/server/routes/admin.ts +118 -0
  303. package/server/routes/client.ts +95 -0
  304. package/server/routes/index.ts +25 -0
  305. package/server/services/admin.ts +406 -0
  306. package/server/services/client.ts +394 -0
  307. package/server/services/common.ts +503 -0
  308. package/server/services/{graphql.js → graphql.ts} +72 -43
  309. package/server/services/index.ts +13 -0
  310. package/server/services/utils/functions.ts +150 -0
  311. package/server/utils/constants.ts +23 -0
  312. package/server/utils/error.ts +44 -0
  313. package/server/utils/functions.ts +55 -0
  314. package/strapi-admin.ts +5 -0
  315. package/strapi-server.ts +77 -0
  316. package/tsconfig.json +38 -0
  317. package/types/common.d.ts +1 -0
  318. package/types/config.d.ts +35 -0
  319. package/types/constants.d.ts +3 -0
  320. package/types/contentTypes.ts +56 -0
  321. package/types/controllers.d.ts +125 -0
  322. package/types/graphql.d.ts +24 -0
  323. package/types/index.d.ts +7 -0
  324. package/types/services.d.ts +166 -0
  325. package/__mocks__/initSetup.js +0 -108
  326. package/admin/src/components/ActionButton/styles.js +0 -10
  327. package/admin/src/components/ConfirmationDialog/index.js +0 -56
  328. package/admin/src/components/DiscussionStatus/index.js +0 -33
  329. package/admin/src/components/DiscussionThread/index.js +0 -62
  330. package/admin/src/components/DiscussionThreadItem/index.js +0 -57
  331. package/admin/src/components/DiscussionThreadItemActions/index.js +0 -231
  332. package/admin/src/components/DiscussionThreadItemActions/styles.js +0 -7
  333. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -80
  334. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -6
  335. package/admin/src/components/DiscussionThreadItemFooter/index.js +0 -47
  336. package/admin/src/components/DiscussionThreadItemFooter/styles.js +0 -13
  337. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +0 -131
  338. package/admin/src/components/FormSwitch/index.js +0 -18
  339. package/admin/src/components/FormSwitch/styles.js +0 -8
  340. package/admin/src/components/IconButton/styles.js +0 -14
  341. package/admin/src/components/LoadingIndicatorOverlay/index.js +0 -15
  342. package/admin/src/components/LoadingIndicatorOverlay/styles.js +0 -20
  343. package/admin/src/components/Nav/index.js +0 -49
  344. package/admin/src/components/ReportsReviewModal/index.js +0 -48
  345. package/admin/src/components/ReportsReviewTable/index.js +0 -160
  346. package/admin/src/components/StatusBadge/index.js +0 -17
  347. package/admin/src/components/StatusBadge/styles.js +0 -17
  348. package/admin/src/components/icons/comments.js +0 -9
  349. package/admin/src/components/icons/index.js +0 -6
  350. package/admin/src/components/icons/review.js +0 -18
  351. package/admin/src/components/icons/unlock.js +0 -20
  352. package/admin/src/hooks/useConfig.js +0 -49
  353. package/admin/src/pages/App/index.js +0 -71
  354. package/admin/src/pages/App/reducer/actions.js +0 -8
  355. package/admin/src/pages/App/reducer/constants.js +0 -4
  356. package/admin/src/pages/App/reducer/init.js +0 -7
  357. package/admin/src/pages/App/reducer/selectors.js +0 -35
  358. package/admin/src/pages/ComingSoonPage/index.js +0 -25
  359. package/admin/src/pages/Details/components/DetailsEntity/index.js +0 -84
  360. package/admin/src/pages/Details/components/DetailsFilters/index.js +0 -35
  361. package/admin/src/pages/Details/components/DetailsFilters/styles.js +0 -8
  362. package/admin/src/pages/Details/index.js +0 -136
  363. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +0 -180
  364. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -8
  365. package/admin/src/pages/Discover/index.js +0 -173
  366. package/admin/src/pages/Discover/utils/api.js +0 -14
  367. package/admin/src/pages/Discover/utils/filtersSchema.js +0 -9
  368. package/admin/src/pages/Settings/components/RestartAlert/styles.js +0 -8
  369. package/admin/src/pages/Settings/index.js +0 -392
  370. package/admin/src/pages/utils/api.js +0 -53
  371. package/admin/src/permissions.js +0 -19
  372. package/admin/src/pluginId.js +0 -5
  373. package/admin/src/reducers.js +0 -8
  374. package/admin/src/utils/constants.js +0 -25
  375. package/admin/src/utils/getApiUrl.js +0 -5
  376. package/admin/src/utils/getMessage.js +0 -21
  377. package/admin/src/utils/getRelatedGroups.js +0 -3
  378. package/admin/src/utils/getUrl.js +0 -5
  379. package/admin/src/utils/handleAPIError.js +0 -16
  380. package/admin/src/utils/index.js +0 -11
  381. package/admin/src/utils/parseRegExp.js +0 -10
  382. package/admin/src/utils/renderEntryTitle.js +0 -14
  383. package/admin/src/utils/renderInitials.js +0 -5
  384. package/admin/src/utils/resolveCommentStatus.js +0 -30
  385. package/admin/src/utils/resolveCommentStatusColor.js +0 -22
  386. package/content-types/comment.js +0 -93
  387. package/content-types/index.js +0 -11
  388. package/content-types/report.js +0 -54
  389. package/jest.config.js +0 -7
  390. package/permissions.js +0 -19
  391. package/server/config/index.js +0 -17
  392. package/server/controllers/admin.js +0 -168
  393. package/server/controllers/client.js +0 -114
  394. package/server/controllers/index.js +0 -9
  395. package/server/controllers/utils/__tests__/functions.test.js +0 -43
  396. package/server/controllers/utils/__tests__/parsers.test.js +0 -94
  397. package/server/controllers/utils/functions.js +0 -19
  398. package/server/controllers/utils/parsers.js +0 -23
  399. package/server/destroy.js +0 -5
  400. package/server/graphql/index.js +0 -25
  401. package/server/graphql/mutations/createAbuseReport.js +0 -25
  402. package/server/graphql/mutations/createComment.js +0 -25
  403. package/server/graphql/mutations/index.js +0 -21
  404. package/server/graphql/mutations/removeComment.js +0 -25
  405. package/server/graphql/mutations/updateComment.js +0 -25
  406. package/server/graphql/queries/findAllFlat.js +0 -35
  407. package/server/graphql/queries/findAllInHierarchy.js +0 -31
  408. package/server/graphql/queries/index.js +0 -19
  409. package/server/graphql/resolvers-config.js +0 -13
  410. package/server/graphql/types/comment-author.js +0 -9
  411. package/server/graphql/types/comment-nested.js +0 -16
  412. package/server/graphql/types/comment.js +0 -15
  413. package/server/graphql/types/create-comment-author.js +0 -9
  414. package/server/graphql/types/create-comment.js +0 -9
  415. package/server/graphql/types/create-report.js +0 -9
  416. package/server/graphql/types/id.js +0 -24
  417. package/server/graphql/types/identify-comment-author.js +0 -6
  418. package/server/graphql/types/index.js +0 -19
  419. package/server/graphql/types/remove-comment.js +0 -8
  420. package/server/graphql/types/report-reason.js +0 -10
  421. package/server/graphql/types/report.js +0 -11
  422. package/server/graphql/types/response-find-all.js +0 -7
  423. package/server/graphql/types/response-meta.js +0 -6
  424. package/server/graphql/types/response-pagination.js +0 -11
  425. package/server/graphql/types/update-comment.js +0 -9
  426. package/server/index.js +0 -22
  427. package/server/register.js +0 -5
  428. package/server/routes/admin.js +0 -124
  429. package/server/routes/client.js +0 -52
  430. package/server/routes/index.js +0 -15
  431. package/server/services/__tests__/common.test.js +0 -399
  432. package/server/services/admin.js +0 -296
  433. package/server/services/client.js +0 -263
  434. package/server/services/common.js +0 -295
  435. package/server/services/index.js +0 -13
  436. package/server/services/utils/__tests__/functions.test.js +0 -53
  437. package/server/services/utils/functions.js +0 -112
  438. package/server/utils/__tests__/functions.test.js +0 -17
  439. package/server/utils/constants.js +0 -26
  440. package/server/utils/error.js +0 -24
  441. package/server/utils/functions.js +0 -19
  442. package/strapi-admin.js +0 -3
  443. package/strapi-server.js +0 -49
@@ -1,296 +0,0 @@
1
- 'use strict';
2
-
3
- const { getPluginService, parseParams } = require('./../utils/functions');
4
- const { isEmpty, isNil, isNumber, parseInt } = require('lodash');
5
- const PluginError = require('./../utils/error');
6
- const {
7
- getModelUid,
8
- getRelatedGroups,
9
- filterOurResolvedReports,
10
- } = require('./utils/functions');
11
- const { APPROVAL_STATUS, REGEX } = require('./../utils/constants')
12
-
13
- /**
14
- * Comments Plugin - Moderation services
15
- */
16
-
17
- module.exports = ({ strapi }) => ({
18
-
19
- getCommonService() {
20
- return getPluginService('common');
21
- },
22
-
23
- // Config
24
- async config(viaSettingsPage = false) {
25
- const pluginStore = await this.getCommonService().getPluginStore();
26
- const config = await pluginStore.get({ key: 'config' });
27
- const additionalConfiguration = {
28
- regex: Object.keys(REGEX).reduce((prev, curr) => ({
29
- ...prev,
30
- [curr]: REGEX[curr].toString(),
31
- }), {}),
32
- };
33
-
34
- const isGQLPluginEnabled = !isNil(strapi.plugin('graphql'));
35
-
36
- if (config) {
37
- return {
38
- ...config,
39
- ...additionalConfiguration,
40
- isGQLPluginEnabled: viaSettingsPage ? isGQLPluginEnabled : undefined,
41
- };
42
- }
43
-
44
- const entryLabel = this.getCommonService().getLocalConfig('entryLabel');
45
- const approvalFlow = this.getCommonService().getLocalConfig('approvalFlow');
46
- const reportReasons = this.getCommonService().getLocalConfig('reportReasons');
47
- const result = {
48
- entryLabel,
49
- approvalFlow,
50
- reportReasons,
51
- ...additionalConfiguration,
52
- };
53
-
54
- if (viaSettingsPage) {
55
- const enabledCollections = this.getCommonService().getLocalConfig('enabledCollections');
56
- const moderatorRoles = this.getCommonService().getLocalConfig('moderatorRoles');
57
- return {
58
- ...result,
59
- enabledCollections,
60
- moderatorRoles,
61
- isGQLPluginEnabled,
62
- };
63
- }
64
-
65
- return result;
66
- },
67
-
68
- async updateConfig(body) {
69
- const pluginStore = await this.getCommonService().getPluginStore();
70
-
71
- await pluginStore.set({ key: 'config', value: body });
72
-
73
- return this.config();
74
- },
75
-
76
- async restoreConfig() {
77
- const pluginStore = await this.getCommonService().getPluginStore();
78
-
79
- await pluginStore.delete({key: 'config'})
80
-
81
- return this.config();
82
- },
83
-
84
- async restart() {
85
- setImmediate(() => strapi.reload());
86
- },
87
-
88
- // Find all comments
89
- async findAll({ related, entity, ...query }) {
90
- const { _q, orderBy, pageSize = 10, page = 1, filters, ...rest } = parseParams(query);
91
-
92
- const defaultWhere = {
93
- $or: [
94
- { removed: false },
95
- { removed: null },
96
- ],
97
- };
98
-
99
- let params = {
100
- where: !isEmpty(filters) ? {
101
- ...defaultWhere,
102
- ...filters,
103
- } : { ...defaultWhere },
104
- offset: (page - 1)*pageSize,
105
- limit: pageSize,
106
- orderBy: orderBy || [{ createdAt: 'desc' }],
107
- };
108
- if (_q) {
109
- params = {
110
- ...params,
111
- where: {
112
- ...params.where,
113
- content: {
114
- $contains: _q
115
- },
116
- }
117
- };
118
- }
119
-
120
- const entities = await strapi.db.query(getModelUid('comment'))
121
- .findMany({
122
- ...params,
123
- populate: {
124
- authorUser: true,
125
- threadOf: true,
126
- reports: {
127
- where: {
128
- resolved: false
129
- },
130
- },
131
- },
132
- });
133
- const total = await strapi.db.query(getModelUid('comment'))
134
- .count({
135
- where: params.where,
136
- });
137
- const relatedEntities = await this.getCommonService().findRelatedEntitiesFor(entities);
138
- const result = entities
139
- .map(_ => filterOurResolvedReports(this.getCommonService().sanitizeCommentEntity(_)))
140
- .map(_ => this.getCommonService().mergeRelatedEntityTo(_, relatedEntities));
141
-
142
- const pageCount = Math.floor(total / pageSize);
143
- return {
144
- result,
145
- pagination: {
146
- page: page,
147
- pageSize: pageSize,
148
- pageCount: total % pageSize === 0 ? pageCount : pageCount + 1,
149
- total,
150
- },
151
- };
152
- },
153
-
154
- // Find single comment
155
- async findOneAndThread(id, { removed, ...query }) {
156
- const defaultWhere = !removed ? {
157
- $or: [
158
- { removed: false },
159
- { removed: null },
160
- ],
161
- } : {};
162
-
163
- const reportsPopulation = {
164
- reports: {
165
- where: {
166
- resolved: false,
167
- },
168
- }
169
- };
170
-
171
- const defaultPopulate = {
172
- populate: {
173
- authorUser: true,
174
- threadOf: {
175
- populate: {
176
- authorUser: true,
177
- ...reportsPopulation
178
- },
179
- },
180
- ...reportsPopulation,
181
- },
182
- }
183
-
184
- const entity = await strapi.db.query(getModelUid('comment')).findOne({
185
- where: {
186
- id,
187
- },
188
- ...defaultPopulate,
189
- });
190
-
191
- if (!entity){
192
- throw new PluginError(404, 'Not found');
193
- }
194
-
195
- const [relatedUid, relatedStringId] = getRelatedGroups(entity.related);
196
- const parsedRelatedId = parseInt(relatedStringId);
197
- const relatedId = isNumber(parsedRelatedId) ? parsedRelatedId : relatedStringId;
198
- const relatedEntity = await strapi.db.query(relatedUid).findOne({
199
- where: { id: relatedId }
200
- }).then(_ => ({
201
- ..._,
202
- uid: relatedUid,
203
- }));
204
-
205
- if (!relatedEntity) {
206
- throw new PluginError(404, 'Relation not found');
207
- }
208
-
209
- const levelThreadId = entity?.threadOf?.id || null;
210
- const entitiesOnSameLevel = await this.getCommonService()
211
- .findAllInHierarchy({
212
- query: {
213
- ...defaultWhere,
214
- ...query,
215
- threadOf: levelThreadId,
216
- related: entity.related,
217
- },
218
- ...defaultPopulate,
219
- startingFromId: levelThreadId,
220
- isAdmin: true
221
- }, false);
222
- const selectedEntity = this.getCommonService().sanitizeCommentEntity({
223
- ...entity,
224
- threadOf: entity.threadOf || null,
225
- });
226
-
227
- return {
228
- entity: relatedEntity,
229
- selected: selectedEntity,
230
- level: entitiesOnSameLevel,
231
- };
232
- },
233
-
234
- // Block / Unblock a comment
235
- async blockComment(id, forceStatus) {
236
- const existingEntity = await this.getCommonService().findOne({ id });
237
- const changedEntity = await strapi.db.query(getModelUid('comment')).update({
238
- where: { id },
239
- data: { blocked: !isNil(forceStatus) ? forceStatus : !existingEntity.blocked }
240
- });
241
- return this.getCommonService().sanitizeCommentEntity(changedEntity);
242
- },
243
-
244
- // Block / Unblock a comment thread
245
- async blockCommentThread(id, forceStatus) {
246
- const existingEntity = await this.getCommonService().findOne({ id });
247
- const status = !isNil(forceStatus) ? forceStatus : !existingEntity.blockedThread;
248
- const changedEntity = await strapi.db.query(getModelUid('comment')).update({
249
- where: { id },
250
- data: {
251
- blocked: status,
252
- blockedThread: status,
253
- },
254
- });
255
- await this.blockNestedThreads(id, changedEntity.blockedThread);
256
-
257
- return this.getCommonService().sanitizeCommentEntity(changedEntity);
258
- },
259
-
260
- // Approve comment
261
- async approveComment(id) {
262
- const changedEntity = await strapi.db.query(getModelUid('comment'))
263
- .update({
264
- where: { id },
265
- data: { approvalStatus: APPROVAL_STATUS.APPROVED }
266
- });
267
-
268
- return this.getCommonService().sanitizeCommentEntity(changedEntity);
269
- },
270
-
271
- async rejectComment(id) {
272
- const changedEntity = await strapi.db.query(getModelUid('comment'))
273
- .update({
274
- where: { id },
275
- data: { approvalStatus: APPROVAL_STATUS.REJECTED }
276
- });
277
-
278
- return this.getCommonService().sanitizeCommentEntity(changedEntity);
279
- },
280
-
281
- async blockNestedThreads(id, blockStatus) {
282
- return await this.getCommonService()
283
- .modifiedNestedNestedComments(id, 'blockedThread', blockStatus)
284
- },
285
-
286
- // Resolve reported abuse for comment
287
- async resolveAbuseReport(id, commentId) {
288
- return strapi.db.query(getModelUid('comment-report')).update({
289
- where: {
290
- id,
291
- related: commentId,
292
- },
293
- data: { resolved: true }
294
- });
295
- },
296
- });
@@ -1,263 +0,0 @@
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
-
19
- module.exports = ({ strapi }) => ({
20
-
21
- getCommonService() {
22
- return getPluginService('common');
23
- },
24
-
25
- // Create a comment
26
- async create(relation, data, user = undefined) {
27
- 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>"`);
32
- }
33
-
34
- const [ uid, relatedId ] = await this.getCommonService().parseRelationString(relation);
35
-
36
- const relatedEntity = await strapi.db.query(uid).findOne(relatedId);
37
- if (!relatedEntity) {
38
- throw new PluginError(400, `Relation for field "related" does not exist. Check your payload please.`);
39
- }
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');
53
- }
54
-
55
- if (!validContext) {
56
- throw resolveUserContextError(user);
57
- }
58
-
59
- if (await this.getCommonService().checkBadWords(content) && singleRelationFulfilled) {
60
- const { author = {}, ...rest } = data;
61
- let authorData = {};
62
- if (validContext && user) {
63
- authorData = {
64
- authorUser: user?.id,
65
- };
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');
69
- }
70
-
71
- authorData = {
72
- authorId: author.id,
73
- authorName: author.name,
74
- authorEmail: author.email,
75
- authorAvatar: author.avatar,
76
- };
77
- }
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.`);
81
- }
82
-
83
- if (isApprovalFlowEnabled &&
84
- (!isNil(data.approvalStatus) && (data.approvalStatus !== APPROVAL_STATUS.PENDING))) {
85
- throw new PluginError(400, 'Invalid approval status');
86
- }
87
-
88
- const entity = await strapi.db.query(getModelUid('comment')).create({
89
- data: {
90
- ...rest,
91
- ...authorData,
92
- related: relation,
93
- approvalStatus: isApprovalFlowEnabled ? APPROVAL_STATUS.PENDING : null,
94
- },
95
- populate: {
96
- authorUser: true,
97
- },
98
- });
99
- return this.getCommonService().sanitizeCommentEntity({
100
- ...entity,
101
- threadOf: !isNil(threadOf) ? linkToThread : null,
102
- });
103
- }
104
- throw new PluginError(400, 'No content received');
105
- },
106
-
107
- // Update a comment
108
- async update(id, relation, data, user = undefined) {
109
- 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>"`);
115
- }
116
-
117
- await this.getCommonService().parseRelationString(relation);
118
-
119
- const existingEntity = await this.getCommonService().findOne({
120
- id,
121
- related: relation,
122
- });
123
-
124
- const validContext = this.getCommonService().isValidUserContext(user);
125
-
126
- if (!validContext) {
127
- throw resolveUserContextError(user);
128
- }
129
-
130
- if (isEqualEntity(existingEntity, data, user) && content) {
131
- if (await this.getCommonService().checkBadWords(content)) {
132
- const entity = await strapi.db.query(getModelUid('comment')).update({
133
- where: { id },
134
- data: { content },
135
- populate: { threadOf: true, authorUser: true },
136
- });
137
- return this.getCommonService().sanitizeCommentEntity(entity);
138
- }
139
- }
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.`);
141
- },
142
-
143
- // Report abuse in comment
144
- async reportAbuse(id, relation, payload, user = undefined) {
145
- if (!this.getCommonService().isValidUserContext(user)) {
146
- throw resolveUserContextError(user);
147
- }
148
-
149
- 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
- }
162
- });
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;
173
- }
174
- } else {
175
- throw new PluginError(500, 'Report cannot be created');
176
- }
177
- }
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
- },
180
-
181
- async markAsRemoved(id, relation, authorId, user = undefined){
182
- if (!this.getCommonService().isValidUserContext(user)) {
183
- throw resolveUserContextError(user);
184
- }
185
-
186
- const author = user?.id || authorId;
187
-
188
- 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.`);
190
- }
191
-
192
- await this.getCommonService().parseRelationString(relation);
193
-
194
- let entity;
195
- try {
196
- const byAuthor = user?.id ? {
197
- authorUser: author
198
- } : {
199
- authorId: author
200
- }
201
- entity = await this.getCommonService().findOne({
202
- id,
203
- related: relation,
204
- ...byAuthor,
205
- });
206
- } catch(e) {
207
- throw new PluginError(404, `Entity does not exist or you're not allowed to take an action on it`);
208
- }
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
- },
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: {
230
- roles: { code: rolesToBeNotified },
231
- },
232
- }).then(items => items.map(_ => _.email));
233
-
234
- const superAdmin = await strapi.db.query('admin::user')
235
- .findOne({
236
- where: {
237
- roles: { code: 'strapi-super-admin' },
238
- },
239
- });
240
-
241
- if (emails.length > 0) {
242
- try {
243
- await strapi.plugin('email').service('email').send({
244
- to: emails,
245
- from: superAdmin.email,
246
- subject: 'New abuse report on comment',
247
- text: `
248
- There was a new abuse report on your app.
249
- Reason: ${reason}
250
- Message: ${content}
251
- `,
252
- });
253
- } catch(err) {
254
- strapi.log.error(err);
255
- throw err;
256
- }
257
- }
258
- },
259
-
260
- async markAsRemovedNested(id, status){
261
- return this.getCommonService().modifiedNestedNestedComments(id, 'removed', status);
262
- },
263
- });