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
package/README.md CHANGED
@@ -30,7 +30,6 @@
30
30
  <img style="width: 100%; height: auto;" src="public/assets/preview.png" alt="UI preview" />
31
31
  </div>
32
32
 
33
-
34
33
  A plugin for [Strapi Headless CMS](https://github.com/strapi/strapi) that provides end to end comments feature with their moderation panel, bad words filtering, abuse reporting and much more.
35
34
 
36
35
  ### Table of Contents
@@ -97,11 +96,35 @@ As a next step you must configure your the plugin by the way you want to. See [*
97
96
 
98
97
  All done. Enjoy 🎉
99
98
 
99
+ ### Working in development mode
100
+
101
+ 1. Clone repository
102
+
103
+ ```
104
+ git clone git@github.com:VirtusLab-Open-Source/strapi-plugin-comments.git
105
+ ```
106
+
107
+ 2. Create a soft link in your strapi project to plugin build folder
108
+
109
+ ```sh
110
+ ln -s <your path>/strapi-plugin-comments/build <your path>/strapi-project/src/plugins/comments
111
+ ```
112
+
113
+ 3. Run develop or build command
114
+
115
+ ```ts
116
+ // Watch for file changes
117
+ yarn develop
118
+ // or run build without nodemon
119
+ yarn build:dev
120
+ ```
121
+
100
122
  ## 🖐 Requirements
101
123
 
102
124
  Complete installation requirements are exact same as for Strapi itself and can be found in the documentation under [Installation Requirements](https://docs.strapi.io/developer-docs/latest/getting-started/introduction.html).
103
125
 
104
126
  **Minimum environment requirements**
127
+
105
128
  - Node.js `>=14.x.x`
106
129
  - NPM `>=7.x.x`
107
130
 
@@ -130,89 +153,96 @@ On the dedicated page, you will be able to set up all crucial properties which d
130
153
  <img style="width: 100%; height: auto;" src="public/assets/configuration.png" alt="Plugin configuration" />
131
154
  </div>
132
155
 
133
- > *Note*
156
+ > _Note_
134
157
  > Default configuration for your plugin is fetched from `config/plugins.js` or directly from the plugin itself. If you would like to customize the default state to which you might revert, please follow the next section.
135
158
 
136
159
  ### In `v2.0.2` and older + default configuration state for `v2.0.3` and newer
137
160
 
138
161
  To setup amend default plugin configuration we recommend to put following snippet as part of `config/plugins.js` or `config/<env>/plugins.js` file. If the file does not exist yet, you have to create it manually. If you've got already configurations for other plugins stores by this way, use just the `comments` part within exising `plugins` item.
139
162
 
140
-
141
163
  ```js
142
- module.exports = ({ env }) => ({
143
- //...
144
- comments: {
145
- enabled: true,
146
- config: {
147
- badWords: false,
148
- moderatorRoles: ["Authenticated"],
149
- approvalFlow: ['api::page.page'],
150
- entryLabel: {
151
- '*': ['Title', 'title', 'Name', 'name', 'Subject', 'subject'],
152
- 'api::page.page': ['MyField'],
153
- },
154
- reportReasons: {
155
- 'MY_CUSTOM_REASON': 'MY_CUSTOM_REASON',
156
- },
157
- gql: {
158
- // ...
159
- },
160
- },
161
- },
162
- //...
163
- });
164
+ module.exports = ({ env }) => ({
165
+ //...
166
+ comments: {
167
+ enabled: true,
168
+ config: {
169
+ badWords: false,
170
+ moderatorRoles: ["Authenticated"],
171
+ approvalFlow: ["api::page.page"],
172
+ entryLabel: {
173
+ "*": ["Title", "title", "Name", "name", "Subject", "subject"],
174
+ "api::page.page": ["MyField"],
175
+ },
176
+ reportReasons: {
177
+ MY_CUSTOM_REASON: "MY_CUSTOM_REASON",
178
+ },
179
+ gql: {
180
+ // ...
181
+ },
182
+ },
183
+ },
184
+ //...
185
+ });
164
186
  ```
165
187
 
166
188
  ### Properties
189
+
167
190
  - `enabledCollections` - list of Collection and Single Types for which plugin should be enabled in format like `'api::<collection name>.<content type name>'`. By default it's empty and none comments are not enabled for any of type in Strapi.
168
- - `badWords` - Enabled support for [bad words filtering](https://www.npmjs.com/package/bad-words). Can be turned off or overwritten using [options reference](https://www.npmjs.com/package/bad-words#constructor). Default value: `true`.
191
+ - `badWords` - Enabled support for [bad words filtering](https://www.npmjs.com/package/bad-words). Can be turned off or overwritten using [options reference](https://www.npmjs.com/package/bad-words#constructor). Default value: `true`.
169
192
  - `moderatorRoles` - Optional list of names of roles. Users with those roles will be notified by email when a new abuse report is created. This feature requires a built-in [Strapi email plugin](https://docs.strapi.io/developer-docs/latest/plugins/email.html) configured.
170
- - `approvalFlow` - list of Content Types which are supporting approval flow. Values must be in format like `'api::<collection name>.<content type name>'`. For not included, posted comments are going to be immediately visible.
193
+ - `approvalFlow` - list of Content Types which are supporting approval flow. Values must be in format like `'api::<collection name>.<content type name>'`. For not included, posted comments are going to be immediately visible.
171
194
  - `entryLabel` - ordered list of property names per Content Type to generate related entity label. Keys must be in format like `'api::<collection name>.<content type name>'`. Default formatting set as `*`.
172
195
  - `reportReasons` - set of enums you would like to use for issuing abuse reports. Provided by default `'BAD_LANGUAGE'`, `'DISCRIMINATION'` and `'OTHER'`.
173
196
  - `gql` - specific configuration for GraphQL. See [Additional GQL Configuration](#additional-gql-configuration)
174
197
 
175
198
  ## Additional GQL Configuration
199
+
176
200
  All you need to do is to install and enable `@strapi/plugin-graphql` for you instance based on the **[official Strapi v4 docs](https://docs.strapi.io/developer-docs/latest/plugins/graphql.html#configurations)** and decide if you would like to call it by anyone (open for world) or only by authenticated users (Strapi users).
177
201
 
178
202
  > **Important!**
179
203
  > If you're using `config/plugins.js` to configure your plugins , please put `comments` property before `graphql`. Otherwise types are not going to be properly added to GraphQL Schema. That's because of dynamic types which base on plugin configuration which are added on `boostrap` stage, not `register`. This is not valid if you're using `graphql` plugin without any custom configuration, so most of cases in real.
180
204
 
181
205
  ```json
182
- {
183
- // ...
184
- "gql": {
185
- "auth": true, // Default: false
186
- },
187
- // ...
206
+ {
207
+ // ...
208
+ "gql": {
209
+ "auth": true // Default: false
188
210
  }
211
+ // ...
212
+ }
189
213
  ```
190
214
 
191
215
  ### Properties
216
+
192
217
  - `auth` - does GraphQL Queries should be authenticated or not? Default: `false`
193
218
 
194
219
  ### Queries
195
220
 
196
221
  See [available GQL specification section](#public-graphql-specification).
197
222
 
198
- > If `auth` is set to `true` you must provide relevant authentication headers to all requests like for example:
199
- >
223
+ > If `auth` is set to `true` you must provide relevant authentication headers to all requests like for example:
224
+ >
200
225
  > ```json
201
226
  > {
202
- > "Authorization": "Bearer <your token here>"
227
+ > "Authorization": "Bearer <your token here>"
203
228
  > }
204
229
  > ```
205
230
 
206
231
  ## 👤 RBAC
232
+
207
233
  Plugin provides granular permissions based on Strapi RBAC functionality.
208
234
 
209
235
  ### Mandatory permissions
236
+
210
237
  For any role different than **Super Admin**, to access the **Comments panel** you must set following permissions:
238
+
211
239
  - _Plugins_ -> _Content-type-builder_ -> _Read_ - gives you ability to fetch Content Type schema
212
240
  - _Plugins_ -> _Comments_ -> _Comments: Read_ - gives you the basic read access to **Comments Panel**
213
241
 
214
242
  ### Optional permissions
243
+
215
244
  Feature / Capability focused permissions:
245
+
216
246
  - _Plugins_ -> _Comments_ -> _Comments: Moderate_ - allows you to block, unblock, approve &amp; reject comments
217
247
  - _Plugins_ -> _Comments_ -> _Reports: Read_ - allows you to see the list of issued abuse reports against comments
218
248
  - _Plugins_ -> _Comments_ -> _Reports: Moderate_ - allows you to review (resolve) issued abuse reports against comments
@@ -221,35 +251,36 @@ Feature / Capability focused permissions:
221
251
 
222
252
  ```json
223
253
  {
224
- "id": 1,
225
- "content": "My comment content",
226
- "blocked": null,
227
- "blockedThread": true,
228
- "blockReason": null,
229
- "authorUser": null,
230
- "removed": null,
231
- "approvalStatus": "APPROVED", // Only in case of enabled approval flow. Default: null
232
- "author": {
233
- "id": "207ccfdc-94ba-45eb-979c-790f6f49c392", // For Strapi users id reflects to the format used by your Strapi
234
- "name": "Joe Doe", // For Strapi users it is equal to 'username' field
235
- "email": "jdoe@sample.com",
236
- "avatar": null,
237
- },
238
- "createdAt": "2020-07-14T20:13:01.649Z",
239
- "updatedAt": "2020-07-14T20:13:01.670Z",
240
- "related": {}, // Related content type entity
241
- "reports": [] // Reports issued against this comment
254
+ "id": 1,
255
+ "content": "My comment content",
256
+ "blocked": null,
257
+ "blockedThread": true,
258
+ "blockReason": null,
259
+ "authorUser": null,
260
+ "removed": null,
261
+ "approvalStatus": "APPROVED", // Only in case of enabled approval flow. Default: null
262
+ "author": {
263
+ "id": "207ccfdc-94ba-45eb-979c-790f6f49c392", // For Strapi users id reflects to the format used by your Strapi
264
+ "name": "Joe Doe", // For Strapi users it is equal to 'username' field
265
+ "email": "jdoe@sample.com",
266
+ "avatar": null
267
+ },
268
+ "createdAt": "2020-07-14T20:13:01.649Z",
269
+ "updatedAt": "2020-07-14T20:13:01.670Z",
270
+ "related": {}, // Related content type entity
271
+ "reports": [] // Reports issued against this comment
242
272
  }
243
273
  ```
244
274
 
245
275
  ## 🕸️ Public REST API specification
246
276
 
247
277
  **Strapi Users vs. Generic authors**
278
+
248
279
  > Keep in mind that if you're using auth / authz your requests to setup proper user contexts it has got higher priority in order to take author data comparing to `author` property provided as part of your payload.
249
280
 
250
281
  ### Get Comments
251
282
 
252
- *GraphQL equivalent: [Public GraphQL API -> Get Comments](#get-comments-1)*
283
+ _GraphQL equivalent: [Public GraphQL API -> Get Comments](#get-comments-1)_
253
284
 
254
285
  `GET <host>/api/comments/api::<collection name>.<content type name>:<entity id>`
255
286
 
@@ -261,27 +292,30 @@ Return a hierarchical tree structure of comments for specified instance of Conte
261
292
 
262
293
  ```json
263
294
  [
264
- {
295
+ {
296
+ // -- Comment Model fields ---,
297
+ "children": [
298
+ {
265
299
  // -- Comment Model fields ---,
266
300
  "children": [
267
- {
268
- // -- Comment Model fields ---,
269
- "children": [
270
- // ...
271
- ]
272
- },
273
- // ...
301
+ // ...
274
302
  ]
275
- },
276
- // ...
303
+ }
304
+ // ...
305
+ ]
306
+ }
307
+ // ...
277
308
  ]
278
309
  ```
310
+
279
311
  #### Strapi REST API properties support:
312
+
313
+ - [field selection](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#field-selection)
280
314
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
281
315
 
282
316
  ### Get Comments (flat structure)
283
317
 
284
- *GraphQL equivalent: [Public GraphQL API -> Get Comments (flat structure)](#get-comments-flat-structure-1)*
318
+ _GraphQL equivalent: [Public GraphQL API -> Get Comments (flat structure)](#get-comments-flat-structure-1)_
285
319
 
286
320
  `GET <host>/api/comments/api::<collection name>.<content type name>:<entity id>/flat`
287
321
 
@@ -295,11 +329,11 @@ Return a flat structure of comments for specified instance of Content Type like
295
329
  {
296
330
  "data": [
297
331
  {
298
- // -- Comment Model fields ---
332
+ // -- Comment Model fields ---
299
333
  },
300
334
  {
301
- // -- Comment Model fields ---
302
- },
335
+ // -- Comment Model fields ---
336
+ }
303
337
  // ...
304
338
  ],
305
339
  "meta": {
@@ -311,17 +345,20 @@ Return a flat structure of comments for specified instance of Content Type like
311
345
  ```
312
346
 
313
347
  **Possible response codes**
348
+
314
349
  - `200` - Successful. Response with list of comments (can be empty)
315
350
  - `400` - Bad Request. Requested list for not valid / not existing Content Type
316
351
 
317
352
  #### Strapi REST API properties support:
353
+
318
354
  - [filtering](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/filtering-locale-publication.html#filtering)
355
+ - [field selection](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#field-selection)
319
356
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
320
357
  - [pagination](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#pagination)
321
358
 
322
359
  ### Post a Comment
323
360
 
324
- *GraphQL equivalent: [Public GraphQL API -> Post a Comments](#post-a-comment-1)*
361
+ _GraphQL equivalent: [Public GraphQL API -> Post a Comments](#post-a-comment-1)_
325
362
 
326
363
  `POST <host>/api/comments/api::<collection name>.<content type name>:<entity id>`
327
364
 
@@ -331,28 +368,29 @@ Posts a Comment related to specified instance of Content Type like for example `
331
368
 
332
369
  **Example request body**
333
370
 
334
- *Generic (non Strapi User)*
371
+ _Generic (non Strapi User)_
372
+
335
373
  ```json
336
374
  {
337
375
  "author": {
338
- "id": "<any ID like value>",
339
- "name": "Joe Doe",
340
- "email": "jdoe@sample.com",
341
- "avatar": "<any image url>"
376
+ "id": "<any ID like value>",
377
+ "name": "Joe Doe",
378
+ "email": "jdoe@sample.com",
379
+ "avatar": "<any image url>"
342
380
  },
343
- "content": "My sample response",
344
- "threadOf": 2, // id of comment we would like to start / continue the thread (Optional)
381
+ "content": "My sample response",
382
+ "threadOf": 2 // id of comment we would like to start / continue the thread (Optional)
345
383
  }
346
384
  ```
347
385
 
348
- *Strapi user*
386
+ _Strapi user_
349
387
 
350
388
  > Author is taken directly from the request context
351
389
 
352
390
  ```json
353
391
  {
354
- "content": "My sample response",
355
- "threadOf": 2, // id of comment we would like to start / continue the thread (Optional)
392
+ "content": "My sample response",
393
+ "threadOf": 2 // id of comment we would like to start / continue the thread (Optional)
356
394
  }
357
395
  ```
358
396
 
@@ -360,17 +398,18 @@ Posts a Comment related to specified instance of Content Type like for example `
360
398
 
361
399
  ```json
362
400
  {
363
- // -- Comment Model fields ---
401
+ // -- Comment Model fields ---
364
402
  }
365
403
  ```
366
404
 
367
405
  **Possible response codes**
406
+
368
407
  - `200` - Successful. Response with created Comment Model
369
408
  - `400` - Bad Request. Missing field values or bad words check fails. Error message will provide relevant reason.
370
409
 
371
410
  ### Update Comment
372
411
 
373
- *GraphQL equivalent: [Public GraphQL API -> Update Comments](#update-comment-1)*
412
+ _GraphQL equivalent: [Public GraphQL API -> Update Comments](#update-comment-1)_
374
413
 
375
414
  `PUT <host>/api/comments/api::<collection name>.<content type name>:<entity id>/comment/<commentId>`
376
415
 
@@ -380,23 +419,24 @@ Updates a specified Comment content based on it `commentId` and related to speci
380
419
 
381
420
  **Example request body**
382
421
 
383
- *Generic (non Strapi User)*
422
+ _Generic (non Strapi User)_
423
+
384
424
  ```json
385
425
  {
386
426
  "author": {
387
- "id": "<any ID like value>"
427
+ "id": "<any ID like value>"
388
428
  },
389
- "content": "My sample response"
429
+ "content": "My sample response"
390
430
  }
391
431
  ```
392
432
 
393
- *Strapi user*
433
+ _Strapi user_
394
434
 
395
435
  > Author is taken directly from the request context
396
436
 
397
437
  ```json
398
438
  {
399
- "content": "My sample response"
439
+ "content": "My sample response"
400
440
  }
401
441
  ```
402
442
 
@@ -404,18 +444,19 @@ Updates a specified Comment content based on it `commentId` and related to speci
404
444
 
405
445
  ```json
406
446
  {
407
- // -- Comment Model fields ---
447
+ // -- Comment Model fields ---
408
448
  }
409
449
  ```
410
450
 
411
451
  **Possible response codes**
452
+
412
453
  - `200` - Successful. Response with updated Comment Model
413
454
  - `400` - Bad Request. Missing field values or bad words check fails. Error message will provide relevant reason.
414
455
  - `409` - Conflict. Occurs when trying to update a non existing or not own comment. Possible cause might be that `authorId` or `authorUser` mismatch with existing comment.
415
456
 
416
457
  ### Delete Comment
417
458
 
418
- *GraphQL equivalent: [Public GraphQL API -> Delete Comment](#delete-comment-1)*
459
+ _GraphQL equivalent: [Public GraphQL API -> Delete Comment](#delete-comment-1)_
419
460
 
420
461
  `DELETE <host>/api/comments/api::<collection name>.<content type name>:<entity id>/comment/<commentId>?authorId=<authorId>`
421
462
 
@@ -427,18 +468,18 @@ Deletes a specified Comment based on it `commentId` and related to specified ins
427
468
 
428
469
  ```json
429
470
  {
430
- // -- Empty Response ---
471
+ // -- Empty Response ---
431
472
  }
432
473
  ```
433
474
 
434
475
  **Possible response codes**
476
+
435
477
  - `200` - Successful with blank Response.
436
478
  - `409` - Conflict. Occurs when trying to delete a non existing comment.
437
479
 
438
-
439
480
  ### Issue Abuse Report against specified Comment
440
481
 
441
- *GraphQL equivalent: [Public GraphQL API -> Issue Abuse Report against specified Comment](#issue-abuse-report-against-specified-comment-1)*
482
+ _GraphQL equivalent: [Public GraphQL API -> Issue Abuse Report against specified Comment](#issue-abuse-report-against-specified-comment-1)_
442
483
 
443
484
  `POST <host>/api/comments/api::<collection name>.<content type name>:<entity id>/comment/<commentId>/report-abuse`
444
485
 
@@ -450,36 +491,39 @@ Reports abuse in specified Comment content based on it `commentId` and related t
450
491
 
451
492
  ```json
452
493
  {
453
- "reason": "<reason enum>",
454
- "content": "This comment is not relevant"
494
+ "reason": "<reason enum>",
495
+ "content": "This comment is not relevant"
455
496
  }
456
497
  ```
457
498
 
458
- *Available reason enums:* `BAD_WORDS`, `OTHER`, `DISCRIMINATION` (want more? See [configuration section](#configuration).)
499
+ _Available reason enums:_ `BAD_WORDS`, `OTHER`, `DISCRIMINATION` (want more? See [configuration section](#configuration).)
459
500
 
460
501
  **Example response body**
461
502
 
462
503
  ```json
463
504
  {
464
- // -- Comment Abuse Report fields ---
505
+ // -- Comment Abuse Report fields ---
465
506
  }
466
507
  ```
467
508
 
468
509
  **Possible response codes**
510
+
469
511
  - `200` - Successful. Response with reported abuse.
470
512
  - `409` - Conflict. Occurs when trying to report an abuse to a non existing comment.
471
513
 
472
514
  ## 🕸️ Public GraphQL specification
473
515
 
474
516
  **Strapi Users vs. Generic authors**
517
+
475
518
  > Keep in mind that if you're using auth / authz your requests to setup proper user contexts it has got higher priority in order to take author data comparing to `author` property provided as part of your payload.
476
519
 
477
520
  **Testing**
521
+
478
522
  > To test all queries and understand the schemas use GraphQL Playground exposed by `@strapi/plugin-graphql` on `http://localhost:1337/graphql`
479
523
 
480
524
  ### Get Comments
481
525
 
482
- *REST API equivalent: [Public REST API -> Get Comments](#get-comments)*
526
+ _REST API equivalent: [Public REST API -> Get Comments](#get-comments)_
483
527
 
484
528
  **Example request**
485
529
 
@@ -489,17 +533,17 @@ query {
489
533
  relation: "api::page.page:1"
490
534
  filters: { content: { contains: "Test" } }
491
535
  ) {
492
- id
493
- content
494
- blocked
495
- threadOf {
496
- id
497
- }
498
- author {
499
- id
500
- name
501
- }
536
+ id
537
+ content
538
+ blocked
539
+ threadOf {
540
+ id
502
541
  }
542
+ author {
543
+ id
544
+ name
545
+ }
546
+ }
503
547
  }
504
548
  ```
505
549
 
@@ -510,7 +554,7 @@ query {
510
554
  "data": {
511
555
  "findAllFlat": [
512
556
  {
513
- "id": 3,
557
+ "id": 3,
514
558
  "content": "Test",
515
559
  "blocked": false,
516
560
  "threadOf": null,
@@ -525,11 +569,12 @@ query {
525
569
  ```
526
570
 
527
571
  #### Strapi GraphQL API properties support:
572
+
528
573
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/graphql-api.html#sorting)
529
574
 
530
575
  ### Get Comments (flat structure)
531
576
 
532
- *REST API equivalent: [Public REST API -> Get Comments (flat structure)](#get-comments-flat-structure)*
577
+ _REST API equivalent: [Public REST API -> Get Comments (flat structure)](#get-comments-flat-structure)_
533
578
 
534
579
  **Example request**
535
580
 
@@ -568,7 +613,7 @@ query {
568
613
  {
569
614
  "id": 6,
570
615
  "content": "Text to search for"
571
- },
616
+ }
572
617
  // ...
573
618
  ],
574
619
  "threadOf": null,
@@ -576,7 +621,7 @@ query {
576
621
  "id": "123456",
577
622
  "name": "Joe Doe"
578
623
  }
579
- },
624
+ }
580
625
  // ...
581
626
  ]
582
627
  }
@@ -584,13 +629,14 @@ query {
584
629
  ```
585
630
 
586
631
  #### Strapi GraphQL API properties support:
632
+
587
633
  - [filtering](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/graphql-api.html#filters)
588
634
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/graphql-api.html#sorting)
589
635
  - [pagination](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/graphql-api.html#pagination)
590
636
 
591
637
  ### Post a Comment
592
638
 
593
- *REST API equivalent: [Public REST API -> Post a Comment](#post-a-comment)*
639
+ _REST API equivalent: [Public REST API -> Post a Comment](#post-a-comment)_
594
640
 
595
641
  **Example request**
596
642
 
@@ -639,7 +685,7 @@ mutation createComment {
639
685
 
640
686
  ### Update Comment
641
687
 
642
- *REST API equivalent: [Public REST API -> Update Comment](#update-comment)*
688
+ _REST API equivalent: [Public REST API -> Update Comment](#update-comment)_
643
689
 
644
690
  **Example request**
645
691
 
@@ -692,16 +738,16 @@ mutation updateComment {
692
738
 
693
739
  ### Delete Comment
694
740
 
695
- *REST API equivalent: [Public REST API -> Delete Comment](#delete-comment)*
741
+ _REST API equivalent: [Public REST API -> Delete Comment](#delete-comment)_
696
742
 
697
743
  **Example request**
698
744
 
699
745
  ```graphql
700
746
  mutation removeComment {
701
747
  removeComment(
702
- input: {
703
- id: 33,
704
- relation: "api::page.page:1",
748
+ input: {
749
+ id: 33
750
+ relation: "api::page.page:1"
705
751
  author: { id: "12345678" } # Optional if using auth / authz requests
706
752
  }
707
753
  ) {
@@ -726,7 +772,7 @@ mutation removeComment {
726
772
 
727
773
  ### Issue Abuse Report against specified Comment
728
774
 
729
- *REST API equivalent: [Public REST API -> Issue Abuse Report against specified Comment](#issue-abuse-report-against-specified-comment)*
775
+ _REST API equivalent: [Public REST API -> Issue Abuse Report against specified Comment](#issue-abuse-report-against-specified-comment)_
730
776
 
731
777
  **Example request body**
732
778
 
@@ -754,7 +800,7 @@ mutation createAbuseReport {
754
800
  }
755
801
  ```
756
802
 
757
- *Available reason enums:* `BAD_WORDS`, `OTHER`, `DISCRIMINATION` (want more? See [configuration section](#configuration).)
803
+ _Available reason enums:_ `BAD_WORDS`, `OTHER`, `DISCRIMINATION` (want more? See [configuration section](#configuration).)
758
804
 
759
805
  **Example response**
760
806
 
@@ -0,0 +1,11 @@
1
+ // @ts-nocheck
2
+
3
+ import styled from "styled-components";
4
+ import { Button } from "@strapi/design-system/Button";
5
+
6
+ export const ActionButton = styled(Button)`
7
+ padding: 7px 16px;
8
+ margin-left: ${({ isSingle }) => (isSingle ? "0" : ".5rem")};
9
+
10
+ white-space: nowrap;
11
+ `;
@@ -0,0 +1,31 @@
1
+ /**
2
+ *
3
+ * Avatar
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { isObject } from "lodash";
12
+ import { Avatar, Initials } from "@strapi/design-system/Avatar";
13
+ import { renderInitials } from "../../utils";
14
+
15
+ const UserAvatar = ({ avatar, name }) => {
16
+ if (avatar) {
17
+ let image = avatar;
18
+ if (isObject(avatar)) {
19
+ image = avatar?.formats?.thumbnail.url || avatar.url;
20
+ }
21
+ return <Avatar src={image} alt={name} />;
22
+ }
23
+ return <Initials>{renderInitials(name)}</Initials>;
24
+ };
25
+
26
+ UserAvatar.propTypes = {
27
+ avatar: PropTypes.oneOfType(PropTypes.string, PropTypes.object).isRequired,
28
+ name: PropTypes.string,
29
+ };
30
+
31
+ export default UserAvatar;