strapi-plugin-comments 2.1.0 → 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 (400) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/LICENSE.md +7 -0
  3. package/admin/src/components/ActionButton/styles.ts +11 -0
  4. package/admin/src/components/Avatar/index.tsx +31 -0
  5. package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
  6. package/admin/src/components/DiscussionStatus/index.tsx +36 -0
  7. package/admin/src/components/DiscussionThread/index.tsx +97 -0
  8. package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
  9. package/admin/src/components/DiscussionThreadItem/styles.ts +15 -0
  10. package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
  11. package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
  12. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
  13. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
  14. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
  15. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
  16. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
  17. package/admin/src/components/FormSwitch/index.tsx +35 -0
  18. package/admin/src/components/FormSwitch/styles.ts +10 -0
  19. package/admin/src/components/IconButton/styles.ts +19 -0
  20. package/admin/src/components/Initializer/index.tsx +28 -0
  21. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
  22. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
  23. package/admin/src/components/Nav/index.tsx +61 -0
  24. package/admin/src/components/PluginIcon/index.tsx +14 -0
  25. package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
  26. package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
  27. package/admin/src/components/StatusBadge/index.tsx +21 -0
  28. package/admin/src/components/StatusBadge/styles.ts +19 -0
  29. package/admin/src/components/TableFilters/index.tsx +58 -0
  30. package/admin/src/components/TablePagination/index.tsx +37 -0
  31. package/admin/src/components/icons/comments.tsx +15 -0
  32. package/admin/src/components/icons/index.ts +6 -0
  33. package/admin/src/components/icons/lock.tsx +27 -0
  34. package/admin/src/components/icons/review.tsx +25 -0
  35. package/admin/src/components/icons/unlock.tsx +25 -0
  36. package/admin/src/hooks/useConfig.ts +58 -0
  37. package/admin/src/index.ts +98 -0
  38. package/admin/src/pages/App/index.tsx +67 -0
  39. package/admin/src/pages/App/reducer/actions.ts +10 -0
  40. package/admin/src/pages/App/reducer/constants.ts +4 -0
  41. package/admin/src/pages/App/reducer/index.ts +28 -0
  42. package/admin/src/pages/App/reducer/init.ts +9 -0
  43. package/admin/src/pages/App/reducer/selectors.ts +32 -0
  44. package/admin/src/pages/App/utils/api.ts +14 -0
  45. package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
  46. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
  47. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
  48. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
  49. package/admin/src/pages/Details/index.tsx +169 -0
  50. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
  51. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
  52. package/admin/src/pages/Discover/index.tsx +230 -0
  53. package/admin/src/pages/Discover/utils/api.ts +22 -0
  54. package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
  55. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
  56. package/admin/src/pages/Settings/index.tsx +602 -0
  57. package/admin/src/pages/Settings/utils/api.ts +71 -0
  58. package/admin/src/pages/utils/api.ts +70 -0
  59. package/admin/src/permissions.ts +30 -0
  60. package/admin/src/pluginId.ts +3 -0
  61. package/admin/src/reducers.ts +8 -0
  62. package/admin/src/utils/axiosInstance.ts +38 -0
  63. package/admin/src/utils/constants.ts +25 -0
  64. package/admin/src/utils/getApiUrl.ts +5 -0
  65. package/admin/src/utils/getMessage.ts +29 -0
  66. package/admin/src/utils/getRelatedGroups.ts +6 -0
  67. package/admin/src/utils/getUrl.ts +5 -0
  68. package/admin/src/utils/handleAPIError.ts +21 -0
  69. package/admin/src/utils/index.ts +11 -0
  70. package/admin/src/utils/parseRegExp.ts +9 -0
  71. package/admin/src/utils/renderEntryTitle.ts +16 -0
  72. package/admin/src/utils/renderInitials.ts +10 -0
  73. package/admin/src/utils/resolveCommentStatus.ts +37 -0
  74. package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
  75. package/build/README.md +854 -0
  76. package/{admin → build/admin}/src/components/ActionButton/styles.d.ts +0 -0
  77. package/{admin → build/admin}/src/components/ActionButton/styles.js +0 -0
  78. package/{admin → build/admin}/src/components/Avatar/index.d.ts +0 -0
  79. package/{admin → build/admin}/src/components/Avatar/index.js +0 -0
  80. package/{admin → build/admin}/src/components/ConfirmationDialog/index.d.ts +0 -0
  81. package/{admin → build/admin}/src/components/ConfirmationDialog/index.js +0 -0
  82. package/{admin → build/admin}/src/components/DiscussionStatus/index.d.ts +0 -0
  83. package/{admin → build/admin}/src/components/DiscussionStatus/index.js +0 -0
  84. package/{admin → build/admin}/src/components/DiscussionThread/index.d.ts +0 -0
  85. package/{admin → build/admin}/src/components/DiscussionThread/index.js +0 -0
  86. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.d.ts +0 -0
  87. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.js +0 -0
  88. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.d.ts +0 -0
  89. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.js +0 -0
  90. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.d.ts +0 -0
  91. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.js +0 -0
  92. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.d.ts +0 -0
  93. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.js +0 -0
  94. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +0 -0
  95. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -0
  96. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +0 -0
  97. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -0
  98. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.d.ts +0 -0
  99. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.js +0 -0
  100. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.d.ts +0 -0
  101. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.js +0 -0
  102. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.d.ts +0 -0
  103. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.js +0 -0
  104. package/{admin → build/admin}/src/components/FormSwitch/index.d.ts +0 -0
  105. package/{admin → build/admin}/src/components/FormSwitch/index.js +0 -0
  106. package/{admin → build/admin}/src/components/FormSwitch/styles.d.ts +0 -0
  107. package/{admin → build/admin}/src/components/FormSwitch/styles.js +0 -0
  108. package/{admin → build/admin}/src/components/IconButton/styles.d.ts +0 -0
  109. package/{admin → build/admin}/src/components/IconButton/styles.js +0 -0
  110. package/{admin → build/admin}/src/components/Initializer/index.d.ts +0 -0
  111. package/{admin → build/admin}/src/components/Initializer/index.js +0 -0
  112. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.d.ts +0 -0
  113. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.js +0 -0
  114. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.d.ts +0 -0
  115. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.js +0 -0
  116. package/{admin → build/admin}/src/components/Nav/index.d.ts +0 -0
  117. package/{admin → build/admin}/src/components/Nav/index.js +0 -0
  118. package/{admin → build/admin}/src/components/PluginIcon/index.d.ts +0 -0
  119. package/{admin → build/admin}/src/components/PluginIcon/index.js +0 -0
  120. package/{admin → build/admin}/src/components/ReportsReviewModal/index.d.ts +0 -0
  121. package/{admin → build/admin}/src/components/ReportsReviewModal/index.js +0 -0
  122. package/{admin → build/admin}/src/components/ReportsReviewTable/index.d.ts +0 -0
  123. package/{admin → build/admin}/src/components/ReportsReviewTable/index.js +0 -0
  124. package/{admin → build/admin}/src/components/StatusBadge/index.d.ts +0 -0
  125. package/{admin → build/admin}/src/components/StatusBadge/index.js +0 -0
  126. package/{admin → build/admin}/src/components/StatusBadge/styles.d.ts +0 -0
  127. package/{admin → build/admin}/src/components/StatusBadge/styles.js +0 -0
  128. package/{admin → build/admin}/src/components/TableFilters/index.d.ts +0 -0
  129. package/{admin → build/admin}/src/components/TableFilters/index.js +0 -0
  130. package/{admin → build/admin}/src/components/TablePagination/index.d.ts +0 -0
  131. package/{admin → build/admin}/src/components/TablePagination/index.js +0 -0
  132. package/{admin → build/admin}/src/components/icons/comments.d.ts +0 -0
  133. package/{admin → build/admin}/src/components/icons/comments.js +0 -0
  134. package/{admin → build/admin}/src/components/icons/index.d.ts +0 -0
  135. package/{admin → build/admin}/src/components/icons/index.js +0 -0
  136. package/{admin → build/admin}/src/components/icons/lock.d.ts +0 -0
  137. package/{admin → build/admin}/src/components/icons/lock.js +0 -0
  138. package/{admin → build/admin}/src/components/icons/review.d.ts +0 -0
  139. package/{admin → build/admin}/src/components/icons/review.js +0 -0
  140. package/{admin → build/admin}/src/components/icons/unlock.d.ts +0 -0
  141. package/{admin → build/admin}/src/components/icons/unlock.js +0 -0
  142. package/{admin → build/admin}/src/hooks/useConfig.d.ts +0 -0
  143. package/{admin → build/admin}/src/hooks/useConfig.js +0 -0
  144. package/{admin → build/admin}/src/index.d.ts +0 -0
  145. package/{admin → build/admin}/src/index.js +0 -0
  146. package/{admin → build/admin}/src/pages/App/index.d.ts +0 -0
  147. package/{admin → build/admin}/src/pages/App/index.js +0 -0
  148. package/{admin → build/admin}/src/pages/App/reducer/actions.d.ts +0 -0
  149. package/{admin → build/admin}/src/pages/App/reducer/actions.js +0 -0
  150. package/{admin → build/admin}/src/pages/App/reducer/constants.d.ts +0 -0
  151. package/{admin → build/admin}/src/pages/App/reducer/constants.js +0 -0
  152. package/{admin → build/admin}/src/pages/App/reducer/index.d.ts +0 -0
  153. package/{admin → build/admin}/src/pages/App/reducer/index.js +0 -0
  154. package/{admin → build/admin}/src/pages/App/reducer/init.d.ts +0 -0
  155. package/{admin → build/admin}/src/pages/App/reducer/init.js +0 -0
  156. package/{admin → build/admin}/src/pages/App/reducer/selectors.d.ts +0 -0
  157. package/{admin → build/admin}/src/pages/App/reducer/selectors.js +0 -0
  158. package/{admin → build/admin}/src/pages/App/utils/api.d.ts +0 -0
  159. package/{admin → build/admin}/src/pages/App/utils/api.js +0 -0
  160. package/{admin → build/admin}/src/pages/ComingSoonPage/index.d.ts +0 -0
  161. package/{admin → build/admin}/src/pages/ComingSoonPage/index.js +0 -0
  162. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.d.ts +0 -0
  163. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.js +0 -0
  164. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.d.ts +0 -0
  165. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.js +0 -0
  166. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.d.ts +0 -0
  167. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.js +0 -0
  168. package/{admin → build/admin}/src/pages/Details/index.d.ts +0 -0
  169. package/{admin → build/admin}/src/pages/Details/index.js +0 -0
  170. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.d.ts +0 -0
  171. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.js +0 -0
  172. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +0 -0
  173. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -0
  174. package/{admin → build/admin}/src/pages/Discover/index.d.ts +0 -0
  175. package/{admin → build/admin}/src/pages/Discover/index.js +0 -0
  176. package/{admin → build/admin}/src/pages/Discover/utils/api.d.ts +0 -0
  177. package/{admin → build/admin}/src/pages/Discover/utils/api.js +0 -0
  178. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.d.ts +0 -0
  179. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.js +0 -0
  180. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.d.ts +0 -0
  181. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.js +0 -0
  182. package/{admin → build/admin}/src/pages/Settings/index.d.ts +0 -0
  183. package/{admin → build/admin}/src/pages/Settings/index.js +0 -0
  184. package/{admin → build/admin}/src/pages/Settings/utils/api.d.ts +0 -0
  185. package/{admin → build/admin}/src/pages/Settings/utils/api.js +0 -0
  186. package/{admin → build/admin}/src/pages/utils/api.d.ts +0 -0
  187. package/{admin → build/admin}/src/pages/utils/api.js +0 -0
  188. package/{admin → build/admin}/src/permissions.d.ts +0 -0
  189. package/{admin → build/admin}/src/permissions.js +0 -0
  190. package/{admin → build/admin}/src/pluginId.d.ts +0 -0
  191. package/{admin → build/admin}/src/pluginId.js +0 -0
  192. package/{admin → build/admin}/src/reducers.d.ts +0 -0
  193. package/{admin → build/admin}/src/reducers.js +0 -0
  194. package/build/admin/src/translations/en.json +132 -0
  195. package/build/admin/src/translations/fr.json +132 -0
  196. package/build/admin/src/translations/pt-BR.json +132 -0
  197. package/{admin → build/admin}/src/utils/axiosInstance.d.ts +0 -0
  198. package/{admin → build/admin}/src/utils/axiosInstance.js +0 -0
  199. package/{admin → build/admin}/src/utils/constants.d.ts +0 -0
  200. package/{admin → build/admin}/src/utils/constants.js +0 -0
  201. package/{admin → build/admin}/src/utils/getApiUrl.d.ts +0 -0
  202. package/{admin → build/admin}/src/utils/getApiUrl.js +0 -0
  203. package/{admin → build/admin}/src/utils/getMessage.d.ts +0 -0
  204. package/{admin → build/admin}/src/utils/getMessage.js +0 -0
  205. package/{admin → build/admin}/src/utils/getRelatedGroups.d.ts +0 -0
  206. package/{admin → build/admin}/src/utils/getRelatedGroups.js +0 -0
  207. package/{admin → build/admin}/src/utils/getUrl.d.ts +0 -0
  208. package/{admin → build/admin}/src/utils/getUrl.js +0 -0
  209. package/{admin → build/admin}/src/utils/handleAPIError.d.ts +0 -0
  210. package/{admin → build/admin}/src/utils/handleAPIError.js +0 -0
  211. package/{admin → build/admin}/src/utils/index.d.ts +0 -0
  212. package/{admin → build/admin}/src/utils/index.js +0 -0
  213. package/{admin → build/admin}/src/utils/parseRegExp.d.ts +0 -0
  214. package/{admin → build/admin}/src/utils/parseRegExp.js +0 -0
  215. package/{admin → build/admin}/src/utils/renderEntryTitle.d.ts +0 -0
  216. package/{admin → build/admin}/src/utils/renderEntryTitle.js +0 -0
  217. package/{admin → build/admin}/src/utils/renderInitials.d.ts +0 -0
  218. package/{admin → build/admin}/src/utils/renderInitials.js +0 -0
  219. package/{admin → build/admin}/src/utils/resolveCommentStatus.d.ts +0 -0
  220. package/{admin → build/admin}/src/utils/resolveCommentStatus.js +0 -0
  221. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.d.ts +0 -0
  222. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.js +0 -0
  223. package/{content-types → build/content-types}/comment.d.ts +0 -0
  224. package/{content-types → build/content-types}/comment.js +0 -0
  225. package/{content-types → build/content-types}/index.d.ts +0 -0
  226. package/{content-types → build/content-types}/index.js +0 -0
  227. package/{content-types → build/content-types}/report.d.ts +0 -0
  228. package/{content-types → build/content-types}/report.js +0 -0
  229. package/build/package.json +94 -0
  230. package/{permissions.d.ts → build/permissions.d.ts} +0 -0
  231. package/{permissions.js → build/permissions.js} +0 -0
  232. package/{server → build/server}/bootstrap.d.ts +0 -0
  233. package/{server → build/server}/bootstrap.js +0 -0
  234. package/{server → build/server}/config/index.d.ts +0 -0
  235. package/{server → build/server}/config/index.js +0 -0
  236. package/{server → build/server}/controllers/admin.d.ts +0 -0
  237. package/{server → build/server}/controllers/admin.js +0 -0
  238. package/{server → build/server}/controllers/client.d.ts +0 -0
  239. package/{server → build/server}/controllers/client.js +0 -0
  240. package/{server → build/server}/controllers/index.d.ts +0 -0
  241. package/{server → build/server}/controllers/index.js +0 -0
  242. package/{server → build/server}/controllers/utils/functions.d.ts +0 -0
  243. package/{server → build/server}/controllers/utils/functions.js +0 -0
  244. package/{server → build/server}/controllers/utils/parsers.d.ts +0 -0
  245. package/{server → build/server}/controllers/utils/parsers.js +0 -0
  246. package/{server → build/server}/destroy.d.ts +0 -0
  247. package/{server → build/server}/destroy.js +0 -0
  248. package/{server → build/server}/graphql/index.d.ts +0 -0
  249. package/{server → build/server}/graphql/index.js +0 -0
  250. package/{server → build/server}/graphql/mutations/createAbuseReport.d.ts +0 -0
  251. package/{server → build/server}/graphql/mutations/createAbuseReport.js +0 -0
  252. package/{server → build/server}/graphql/mutations/createComment.d.ts +0 -0
  253. package/{server → build/server}/graphql/mutations/createComment.js +0 -0
  254. package/{server → build/server}/graphql/mutations/index.d.ts +0 -0
  255. package/{server → build/server}/graphql/mutations/index.js +0 -0
  256. package/{server → build/server}/graphql/mutations/removeComment.d.ts +0 -0
  257. package/{server → build/server}/graphql/mutations/removeComment.js +0 -0
  258. package/{server → build/server}/graphql/mutations/updateComment.d.ts +0 -0
  259. package/{server → build/server}/graphql/mutations/updateComment.js +0 -0
  260. package/{server → build/server}/graphql/queries/findAllFlat.d.ts +0 -0
  261. package/{server → build/server}/graphql/queries/findAllFlat.js +0 -0
  262. package/{server → build/server}/graphql/queries/findAllInHierarchy.d.ts +0 -0
  263. package/{server → build/server}/graphql/queries/findAllInHierarchy.js +0 -0
  264. package/{server → build/server}/graphql/queries/index.d.ts +0 -0
  265. package/{server → build/server}/graphql/queries/index.js +0 -0
  266. package/{server → build/server}/graphql/resolvers-config.d.ts +0 -0
  267. package/{server → build/server}/graphql/resolvers-config.js +0 -0
  268. package/{server → build/server}/graphql/types/comment-author.d.ts +0 -0
  269. package/{server → build/server}/graphql/types/comment-author.js +0 -0
  270. package/{server → build/server}/graphql/types/comment-nested.d.ts +0 -0
  271. package/{server → build/server}/graphql/types/comment-nested.js +0 -0
  272. package/{server → build/server}/graphql/types/comment.d.ts +0 -0
  273. package/{server → build/server}/graphql/types/comment.js +0 -0
  274. package/{server → build/server}/graphql/types/create-comment-author.d.ts +0 -0
  275. package/{server → build/server}/graphql/types/create-comment-author.js +0 -0
  276. package/{server → build/server}/graphql/types/create-comment.d.ts +0 -0
  277. package/{server → build/server}/graphql/types/create-comment.js +0 -0
  278. package/{server → build/server}/graphql/types/create-report.d.ts +0 -0
  279. package/{server → build/server}/graphql/types/create-report.js +0 -0
  280. package/{server → build/server}/graphql/types/id.d.ts +0 -0
  281. package/{server → build/server}/graphql/types/id.js +0 -0
  282. package/{server → build/server}/graphql/types/identify-comment-author.d.ts +0 -0
  283. package/{server → build/server}/graphql/types/identify-comment-author.js +0 -0
  284. package/{server → build/server}/graphql/types/index.d.ts +0 -0
  285. package/{server → build/server}/graphql/types/index.js +0 -0
  286. package/{server → build/server}/graphql/types/remove-comment.d.ts +0 -0
  287. package/{server → build/server}/graphql/types/remove-comment.js +0 -0
  288. package/{server → build/server}/graphql/types/report-reason.d.ts +0 -0
  289. package/{server → build/server}/graphql/types/report-reason.js +0 -0
  290. package/{server → build/server}/graphql/types/report.d.ts +0 -0
  291. package/{server → build/server}/graphql/types/report.js +0 -0
  292. package/{server → build/server}/graphql/types/response-find-all.d.ts +0 -0
  293. package/{server → build/server}/graphql/types/response-find-all.js +0 -0
  294. package/{server → build/server}/graphql/types/response-meta.d.ts +0 -0
  295. package/{server → build/server}/graphql/types/response-meta.js +0 -0
  296. package/{server → build/server}/graphql/types/response-pagination.d.ts +0 -0
  297. package/{server → build/server}/graphql/types/response-pagination.js +0 -0
  298. package/{server → build/server}/graphql/types/update-comment.d.ts +0 -0
  299. package/{server → build/server}/graphql/types/update-comment.js +0 -0
  300. package/{server → build/server}/index.d.ts +0 -0
  301. package/{server → build/server}/index.js +0 -0
  302. package/{server → build/server}/register.d.ts +0 -0
  303. package/{server → build/server}/register.js +0 -0
  304. package/{server → build/server}/routes/admin.d.ts +0 -0
  305. package/{server → build/server}/routes/admin.js +0 -0
  306. package/{server → build/server}/routes/client.d.ts +0 -0
  307. package/{server → build/server}/routes/client.js +0 -0
  308. package/{server → build/server}/routes/index.d.ts +0 -0
  309. package/{server → build/server}/routes/index.js +0 -0
  310. package/{server → build/server}/services/admin.d.ts +0 -0
  311. package/{server → build/server}/services/admin.js +0 -0
  312. package/{server → build/server}/services/client.d.ts +0 -0
  313. package/{server → build/server}/services/client.js +0 -0
  314. package/{server → build/server}/services/common.d.ts +0 -0
  315. package/{server → build/server}/services/common.js +4 -1
  316. package/{server → build/server}/services/graphql.d.ts +0 -0
  317. package/{server → build/server}/services/graphql.js +0 -0
  318. package/{server → build/server}/services/index.d.ts +0 -0
  319. package/{server → build/server}/services/index.js +0 -0
  320. package/{server → build/server}/services/utils/functions.d.ts +0 -0
  321. package/{server → build/server}/services/utils/functions.js +0 -0
  322. package/{server → build/server}/utils/constants.d.ts +0 -0
  323. package/{server → build/server}/utils/constants.js +0 -0
  324. package/{server → build/server}/utils/error.d.ts +0 -0
  325. package/{server → build/server}/utils/error.js +0 -0
  326. package/{server → build/server}/utils/functions.d.ts +0 -0
  327. package/{server → build/server}/utils/functions.js +0 -0
  328. package/{strapi-admin.d.ts → build/strapi-admin.d.ts} +0 -0
  329. package/{strapi-admin.js → build/strapi-admin.js} +0 -0
  330. package/{strapi-server.d.ts → build/strapi-server.d.ts} +0 -0
  331. package/{strapi-server.js → build/strapi-server.js} +0 -0
  332. package/build/tsconfig.tsbuildinfo +1 -0
  333. package/{types → build/types}/contentTypes.d.ts +0 -0
  334. package/{types → build/types}/contentTypes.js +0 -0
  335. package/content-types/comment.ts +93 -0
  336. package/content-types/index.ts +11 -0
  337. package/content-types/report.ts +50 -0
  338. package/jest.config.ts +22 -0
  339. package/package.json +33 -4
  340. package/permissions.ts +17 -0
  341. package/server/bootstrap.ts +66 -0
  342. package/server/config/index.ts +19 -0
  343. package/server/controllers/admin.ts +194 -0
  344. package/server/controllers/client.ts +220 -0
  345. package/server/controllers/index.ts +13 -0
  346. package/server/controllers/utils/functions.ts +27 -0
  347. package/server/controllers/utils/parsers.ts +59 -0
  348. package/server/destroy.ts +3 -0
  349. package/server/graphql/index.ts +27 -0
  350. package/server/graphql/mutations/createAbuseReport.ts +38 -0
  351. package/server/graphql/mutations/createComment.ts +41 -0
  352. package/server/graphql/mutations/index.ts +26 -0
  353. package/server/graphql/mutations/removeComment.ts +41 -0
  354. package/server/graphql/mutations/updateComment.ts +40 -0
  355. package/server/graphql/queries/findAllFlat.ts +58 -0
  356. package/server/graphql/queries/findAllInHierarchy.ts +47 -0
  357. package/server/graphql/queries/index.ts +22 -0
  358. package/server/graphql/resolvers-config.ts +13 -0
  359. package/server/graphql/types/comment-author.ts +12 -0
  360. package/server/graphql/types/comment-nested.ts +19 -0
  361. package/server/graphql/types/comment.ts +18 -0
  362. package/server/graphql/types/create-comment-author.ts +12 -0
  363. package/server/graphql/types/create-comment.ts +12 -0
  364. package/server/graphql/types/create-report.ts +12 -0
  365. package/server/graphql/types/id.ts +28 -0
  366. package/server/graphql/types/identify-comment-author.ts +9 -0
  367. package/server/graphql/types/index.ts +38 -0
  368. package/server/graphql/types/remove-comment.ts +11 -0
  369. package/server/graphql/types/report-reason.ts +12 -0
  370. package/server/graphql/types/report.ts +14 -0
  371. package/server/graphql/types/response-find-all.ts +10 -0
  372. package/server/graphql/types/response-meta.ts +9 -0
  373. package/server/graphql/types/response-pagination.ts +14 -0
  374. package/server/graphql/types/update-comment.ts +12 -0
  375. package/server/index.ts +20 -0
  376. package/server/register.ts +3 -0
  377. package/server/routes/admin.ts +118 -0
  378. package/server/routes/client.ts +95 -0
  379. package/server/routes/index.ts +25 -0
  380. package/server/services/admin.ts +406 -0
  381. package/server/services/client.ts +394 -0
  382. package/server/services/common.ts +503 -0
  383. package/server/services/graphql.ts +219 -0
  384. package/server/services/index.ts +13 -0
  385. package/server/services/utils/functions.ts +150 -0
  386. package/server/utils/constants.ts +23 -0
  387. package/server/utils/error.ts +44 -0
  388. package/server/utils/functions.ts +55 -0
  389. package/strapi-admin.ts +5 -0
  390. package/strapi-server.ts +77 -0
  391. package/tsconfig.json +38 -0
  392. package/types/common.d.ts +1 -0
  393. package/types/config.d.ts +35 -0
  394. package/types/constants.d.ts +3 -0
  395. package/types/contentTypes.ts +56 -0
  396. package/types/controllers.d.ts +125 -0
  397. package/types/graphql.d.ts +24 -0
  398. package/types/index.d.ts +7 -0
  399. package/types/services.d.ts +166 -0
  400. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,394 @@
1
+ import { StrapiContext, Id, StrapiAdminUser, StrapiUser } from "strapi-typed";
2
+ import {
3
+ Comment,
4
+ CommentAuthorPartial,
5
+ CommentReport,
6
+ RelatedEntity,
7
+ IServiceClient,
8
+ IServiceCommon,
9
+ CreateCommentPayload,
10
+ UpdateCommentPayload,
11
+ CreateCommentReportPayload,
12
+ } from "../../types";
13
+
14
+ import { getPluginService } from "./../utils/functions";
15
+ import { isNil, isEmpty, isString } from "lodash";
16
+ import PluginError from "./../utils/error";
17
+ import {
18
+ isEqualEntity,
19
+ getModelUid,
20
+ resolveUserContextError,
21
+ } from "./utils/functions";
22
+ import { APPROVAL_STATUS, REGEX, CONFIG_PARAMS } from "./../utils/constants";
23
+
24
+ /**
25
+ * Comments Plugin - Client services
26
+ */
27
+
28
+ export = ({ strapi }: StrapiContext): IServiceClient => ({
29
+ getCommonService(): IServiceCommon {
30
+ return getPluginService("common");
31
+ },
32
+
33
+ // Create a comment
34
+ async create(
35
+ this: IServiceClient,
36
+ relation: string,
37
+ data: CreateCommentPayload,
38
+ user: StrapiUser
39
+ ): Promise<Comment> {
40
+ const { content, threadOf } = data;
41
+ const singleRelationFulfilled = relation && REGEX.relatedUid.test(relation);
42
+
43
+ if (!singleRelationFulfilled) {
44
+ throw new PluginError(
45
+ 400,
46
+ `Field "related" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`
47
+ );
48
+ }
49
+
50
+ const [uid, relatedId] = await this.getCommonService().parseRelationString(
51
+ relation
52
+ );
53
+
54
+ const isEnabledCollection =
55
+ await this.getCommonService().isEnabledCollection(uid);
56
+ if (!isEnabledCollection) {
57
+ throw new PluginError(
58
+ 400,
59
+ `Field "related" refer to not enabled collection. Please amend the plugin settings and try again`
60
+ );
61
+ }
62
+
63
+ const relatedEntity = await strapi.db
64
+ .query<RelatedEntity>(uid)
65
+ .findOne(relatedId);
66
+ if (!relatedEntity) {
67
+ throw new PluginError(
68
+ 400,
69
+ `Relation for field "related" does not exist. Check your payload please.`
70
+ );
71
+ }
72
+
73
+ const approvalFlow: Array<string> = await this.getCommonService().getConfig<
74
+ Array<string>
75
+ >(CONFIG_PARAMS.APPROVAL_FLOW, []);
76
+ const isApprovalFlowEnabled =
77
+ approvalFlow.includes(uid) || relatedEntity.requireCommentsApproval;
78
+
79
+ let linkToThread;
80
+ try {
81
+ linkToThread = !isNil(threadOf)
82
+ ? await this.getCommonService().findOne({
83
+ id: threadOf,
84
+ related: relation,
85
+ })
86
+ : null;
87
+ } catch (e: unknown) {
88
+ throw new PluginError(400, "Thread does not exist");
89
+ }
90
+
91
+ const validContext = this.getCommonService().isValidUserContext(user);
92
+
93
+ if (!validContext) {
94
+ throw resolveUserContextError(user);
95
+ }
96
+
97
+ if (
98
+ (await this.getCommonService().checkBadWords(content)) &&
99
+ singleRelationFulfilled
100
+ ) {
101
+ const { author, ...rest } = data;
102
+ let authorData: CommentAuthorPartial = {};
103
+ if (validContext && user) {
104
+ authorData = {
105
+ authorUser: user?.id,
106
+ };
107
+ } else if (author) {
108
+ if (author.email && !REGEX.email.test(author.email)) {
109
+ throw new PluginError(
110
+ 400,
111
+ 'Field: "author.email". Author e-mail is not valid value. Check your payload'
112
+ );
113
+ }
114
+
115
+ authorData = {
116
+ authorId: author.id,
117
+ authorName: author.name,
118
+ authorEmail: author.email,
119
+ authorAvatar: isString(author.avatar) ? author.avatar : undefined,
120
+ };
121
+ }
122
+
123
+ const authorNotProperlyProvided =
124
+ !isEmpty(authorData) && !(authorData.authorId || authorData.authorUser);
125
+ if (isEmpty(authorData) || authorNotProperlyProvided) {
126
+ throw new PluginError(
127
+ 400,
128
+ `Not able to recognise author of a comment. Make sure you've provided "author" property in a payload or authenticated your request properly.`
129
+ );
130
+ }
131
+
132
+ if (
133
+ isApprovalFlowEnabled &&
134
+ !isNil(data.approvalStatus) &&
135
+ data.approvalStatus !== APPROVAL_STATUS.PENDING
136
+ ) {
137
+ throw new PluginError(400, "Invalid approval status");
138
+ }
139
+
140
+ const entity = await strapi.db
141
+ .query<Comment>(getModelUid("comment"))
142
+ .create({
143
+ data: {
144
+ ...rest,
145
+ ...authorData,
146
+ related: relation,
147
+ approvalStatus: isApprovalFlowEnabled
148
+ ? APPROVAL_STATUS.PENDING
149
+ : null,
150
+ },
151
+ populate: {
152
+ authorUser: true,
153
+ },
154
+ });
155
+ return this.getCommonService().sanitizeCommentEntity({
156
+ ...entity,
157
+ threadOf: linkToThread,
158
+ });
159
+ }
160
+ throw new PluginError(400, "No content received");
161
+ },
162
+
163
+ // Update a comment
164
+ async update(
165
+ this: IServiceClient,
166
+ id: Id,
167
+ relation: string,
168
+ data: UpdateCommentPayload,
169
+ user: StrapiUser
170
+ ): Promise<Comment> {
171
+ const { content } = data;
172
+
173
+ const singleRelationFulfilled = relation && REGEX.relatedUid.test(relation);
174
+
175
+ if (!singleRelationFulfilled) {
176
+ throw new PluginError(
177
+ 400,
178
+ `Request property "relation" got incorrect format, use format like "api::<collection name>.<content type name>:<entity id>"`
179
+ );
180
+ }
181
+
182
+ await this.getCommonService().parseRelationString(relation);
183
+
184
+ const existingEntity = await this.getCommonService().findOne({
185
+ id,
186
+ related: relation,
187
+ });
188
+
189
+ const validContext = this.getCommonService().isValidUserContext(user);
190
+
191
+ if (!validContext) {
192
+ throw resolveUserContextError(user);
193
+ }
194
+
195
+ if (isEqualEntity(existingEntity, data, user) && content) {
196
+ if (await this.getCommonService().checkBadWords(content)) {
197
+ const entity = await strapi.db
198
+ .query<Comment>(getModelUid("comment"))
199
+ .update({
200
+ where: { id },
201
+ data: { content },
202
+ populate: { threadOf: true, authorUser: true },
203
+ });
204
+ return this.getCommonService().sanitizeCommentEntity(entity);
205
+ }
206
+ }
207
+ throw new PluginError(
208
+ 403,
209
+ `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.`
210
+ );
211
+ },
212
+
213
+ // Report abuse in comment
214
+ async reportAbuse(
215
+ this: IServiceClient,
216
+ id: Id,
217
+ relation: string,
218
+ payload: CreateCommentReportPayload,
219
+ user: StrapiUser
220
+ ): Promise<CommentReport> {
221
+ if (!this.getCommonService().isValidUserContext(user)) {
222
+ throw resolveUserContextError(user);
223
+ }
224
+
225
+ await this.getCommonService().parseRelationString(relation);
226
+
227
+ try {
228
+ const reportAgainstEntity = await this.getCommonService().findOne({
229
+ id,
230
+ related: relation,
231
+ });
232
+
233
+ if (reportAgainstEntity) {
234
+ const entity = await strapi.db
235
+ .query<CommentReport>(getModelUid("comment-report"))
236
+ .create({
237
+ data: {
238
+ ...payload,
239
+ resolved: false,
240
+ related: id,
241
+ },
242
+ });
243
+ if (entity) {
244
+ const response = {
245
+ ...entity,
246
+ related: reportAgainstEntity,
247
+ };
248
+ try {
249
+ await this.sendAbuseReportEmail(entity.reason, entity.content); // Could also add some info about relation
250
+ return response;
251
+ } catch (err) {
252
+ return response;
253
+ }
254
+ } else {
255
+ throw new PluginError(500, "Report cannot be created");
256
+ }
257
+ }
258
+ throw new PluginError(
259
+ 403,
260
+ `You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.`
261
+ );
262
+ } catch (e) {
263
+ throw new PluginError(
264
+ 403,
265
+ `You're not allowed to take an action on that entity. Make sure that comment exist or you've authenticated your request properly.`
266
+ );
267
+ }
268
+ },
269
+
270
+ async markAsRemoved(
271
+ this: IServiceClient,
272
+ id: Id,
273
+ relation: string,
274
+ authorId: Id,
275
+ user: StrapiUser
276
+ ): Promise<Comment> {
277
+ if (!this.getCommonService().isValidUserContext(user)) {
278
+ throw resolveUserContextError(user);
279
+ }
280
+
281
+ const author = user?.id || authorId;
282
+
283
+ if (!author) {
284
+ throw new PluginError(
285
+ 403,
286
+ `You're not allowed to take an action on that entity. Make sure that you've provided proper "authorId" or authenticated your request properly.`
287
+ );
288
+ }
289
+
290
+ await this.getCommonService().parseRelationString(relation);
291
+
292
+ try {
293
+ const byAuthor = user?.id
294
+ ? {
295
+ authorUser: author,
296
+ }
297
+ : {
298
+ authorId: author,
299
+ };
300
+ const entity = await this.getCommonService().findOne({
301
+ id,
302
+ related: relation,
303
+ ...byAuthor,
304
+ });
305
+ if (entity) {
306
+ const removedEntity = await strapi.db
307
+ .query<Comment>(getModelUid("comment"))
308
+ .update({
309
+ where: {
310
+ id,
311
+ related: relation,
312
+ },
313
+ data: { removed: true },
314
+ populate: { threadOf: true, authorUser: true },
315
+ });
316
+
317
+ await this.markAsRemovedNested(id, true);
318
+
319
+ return this.getCommonService().sanitizeCommentEntity(removedEntity);
320
+ } else {
321
+ throw new PluginError(
322
+ 404,
323
+ `Entity does not exist or you're not allowed to take an action on it`
324
+ );
325
+ }
326
+ } catch (e) {
327
+ throw new PluginError(
328
+ 404,
329
+ `Entity does not exist or you're not allowed to take an action on it`
330
+ );
331
+ }
332
+ },
333
+
334
+ async sendAbuseReportEmail(
335
+ this: IServiceClient,
336
+ reason: string,
337
+ content: string
338
+ ): Promise<void> {
339
+ const rolesToBeNotified: Array<string> =
340
+ (await this.getCommonService().getConfig<Array<string>>(
341
+ CONFIG_PARAMS.MODERATOR_ROLES
342
+ )) || ["strapi-super-admin"];
343
+
344
+ const adminUserModel = strapi.db.query<StrapiAdminUser>("admin::user");
345
+ const emails = await adminUserModel
346
+ .findMany({
347
+ where: {
348
+ roles: { code: rolesToBeNotified },
349
+ },
350
+ })
351
+ .then((items) => items.map((_) => _.email));
352
+
353
+ const superAdmin = await strapi.db
354
+ .query<StrapiAdminUser>("admin::user")
355
+ .findOne({
356
+ where: {
357
+ roles: { code: "strapi-super-admin" },
358
+ },
359
+ });
360
+
361
+ if (emails.length > 0) {
362
+ try {
363
+ await strapi
364
+ .plugin("email")
365
+ .service("email")
366
+ .send({
367
+ to: emails,
368
+ from: superAdmin.email,
369
+ subject: "New abuse report on comment",
370
+ text: `
371
+ There was a new abuse report on your app.
372
+ Reason: ${reason}
373
+ Message: ${content}
374
+ `,
375
+ });
376
+ } catch (err) {
377
+ strapi.log.error(err);
378
+ throw err;
379
+ }
380
+ }
381
+ },
382
+
383
+ async markAsRemovedNested(
384
+ this: IServiceClient,
385
+ id: Id,
386
+ status: boolean
387
+ ): Promise<boolean> {
388
+ return this.getCommonService().modifiedNestedNestedComments(
389
+ id,
390
+ "removed",
391
+ status
392
+ );
393
+ },
394
+ });