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.
- package/README.md +165 -119
- package/admin/src/components/ActionButton/styles.ts +11 -0
- package/admin/src/components/Avatar/index.tsx +31 -0
- package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
- package/admin/src/components/DiscussionStatus/index.tsx +36 -0
- package/admin/src/components/DiscussionThread/index.tsx +97 -0
- package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
- package/admin/src/components/DiscussionThreadItem/{styles.js → styles.ts} +8 -6
- package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
- package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
- package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
- package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
- package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
- package/admin/src/components/FormSwitch/index.tsx +35 -0
- package/admin/src/components/FormSwitch/styles.ts +10 -0
- package/admin/src/components/IconButton/styles.ts +19 -0
- package/admin/src/components/Initializer/{index.js → index.tsx} +8 -6
- package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
- package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
- package/admin/src/components/Nav/index.tsx +61 -0
- package/admin/src/components/PluginIcon/{index.js → index.tsx} +4 -2
- package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
- package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
- package/admin/src/components/StatusBadge/index.tsx +21 -0
- package/admin/src/components/StatusBadge/styles.ts +19 -0
- package/admin/src/components/TableFilters/{index.js → index.tsx} +14 -9
- package/admin/src/components/TablePagination/{index.js → index.tsx} +8 -6
- package/admin/src/components/icons/comments.tsx +15 -0
- package/admin/src/components/icons/index.ts +6 -0
- package/admin/src/components/icons/{lock.js → lock.tsx} +17 -12
- package/admin/src/components/icons/review.tsx +25 -0
- package/admin/src/components/icons/unlock.tsx +25 -0
- package/admin/src/hooks/useConfig.ts +58 -0
- package/admin/src/{index.js → index.ts} +26 -22
- package/admin/src/pages/App/index.tsx +67 -0
- package/admin/src/pages/App/reducer/actions.ts +10 -0
- package/admin/src/pages/App/reducer/constants.ts +4 -0
- package/admin/src/pages/App/reducer/{index.js → index.ts} +8 -6
- package/admin/src/pages/App/reducer/init.ts +9 -0
- package/admin/src/pages/App/reducer/selectors.ts +32 -0
- package/admin/src/pages/App/utils/{api.js → api.ts} +3 -1
- package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
- package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
- package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
- package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
- package/admin/src/pages/Details/index.tsx +169 -0
- package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
- package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
- package/admin/src/pages/Discover/index.tsx +230 -0
- package/admin/src/pages/Discover/utils/api.ts +22 -0
- package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
- package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
- package/admin/src/pages/Settings/index.tsx +602 -0
- package/admin/src/pages/Settings/utils/{api.js → api.ts} +16 -5
- package/admin/src/pages/utils/api.ts +70 -0
- package/admin/src/permissions.ts +30 -0
- package/admin/src/pluginId.ts +3 -0
- package/admin/src/reducers.ts +8 -0
- package/admin/src/translations/en.json +131 -131
- package/admin/src/translations/pt-BR.json +130 -130
- package/admin/src/utils/{axiosInstance.js → axiosInstance.ts} +12 -9
- package/admin/src/utils/constants.ts +25 -0
- package/admin/src/utils/getApiUrl.ts +5 -0
- package/admin/src/utils/getMessage.ts +29 -0
- package/admin/src/utils/getRelatedGroups.ts +6 -0
- package/admin/src/utils/getUrl.ts +5 -0
- package/admin/src/utils/handleAPIError.ts +21 -0
- package/admin/src/utils/index.ts +11 -0
- package/admin/src/utils/parseRegExp.ts +9 -0
- package/admin/src/utils/renderEntryTitle.ts +16 -0
- package/admin/src/utils/renderInitials.ts +10 -0
- package/admin/src/utils/resolveCommentStatus.ts +37 -0
- package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
- package/build/README.md +41 -5
- package/build/admin/src/components/ActionButton/styles.d.ts +1 -1
- package/build/admin/src/components/ActionButton/styles.js +5 -7
- package/build/admin/src/components/Avatar/index.d.ts +12 -0
- package/build/admin/src/components/Avatar/index.js +26 -0
- package/build/admin/src/components/ConfirmationDialog/index.js +23 -90
- package/build/admin/src/components/DiscussionStatus/index.js +13 -27
- package/build/admin/src/components/DiscussionThread/index.js +29 -83
- package/build/admin/src/components/DiscussionThreadItem/index.js +20 -59
- package/build/admin/src/components/DiscussionThreadItem/styles.d.ts +1 -1
- package/build/admin/src/components/DiscussionThreadItem/styles.js +8 -17
- package/build/admin/src/components/DiscussionThreadItemActions/index.js +163 -383
- package/build/admin/src/components/DiscussionThreadItemActions/styles.d.ts +1 -1
- package/build/admin/src/components/DiscussionThreadItemActions/styles.js +5 -9
- package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +52 -85
- package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +1 -1
- package/build/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +5 -8
- package/build/admin/src/components/DiscussionThreadItemFooter/index.js +27 -61
- package/build/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +1 -1
- package/build/admin/src/components/DiscussionThreadItemFooter/styles.js +7 -14
- package/build/admin/src/components/DiscussionThreadItemReviewAction/index.js +91 -207
- package/build/admin/src/components/FormSwitch/index.d.ts +5 -9
- package/build/admin/src/components/FormSwitch/index.js +8 -32
- package/build/admin/src/components/FormSwitch/styles.d.ts +1 -1
- package/build/admin/src/components/FormSwitch/styles.js +5 -7
- package/build/admin/src/components/IconButton/styles.d.ts +1 -1
- package/build/admin/src/components/IconButton/styles.js +7 -13
- package/build/admin/src/components/Initializer/index.d.ts +4 -2
- package/build/admin/src/components/Initializer/index.js +7 -7
- package/build/admin/src/components/LoadingIndicatorOverlay/index.d.ts +1 -1
- package/build/admin/src/components/LoadingIndicatorOverlay/index.js +6 -12
- package/build/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +1 -1
- package/build/admin/src/components/LoadingIndicatorOverlay/styles.js +7 -14
- package/build/admin/src/components/Nav/index.js +16 -62
- package/build/admin/src/components/PluginIcon/index.d.ts +1 -1
- package/build/admin/src/components/PluginIcon/index.js +5 -8
- package/build/admin/src/components/ReportsReviewModal/index.js +23 -62
- package/build/admin/src/components/ReportsReviewTable/index.js +112 -293
- package/build/admin/src/components/StatusBadge/index.d.ts +5 -9
- package/build/admin/src/components/StatusBadge/index.js +6 -16
- package/build/admin/src/components/StatusBadge/styles.d.ts +1 -1
- package/build/admin/src/components/StatusBadge/styles.js +5 -7
- package/build/admin/src/components/TableFilters/index.js +38 -91
- package/build/admin/src/components/TablePagination/index.d.ts +13 -11
- package/build/admin/src/components/TablePagination/index.js +19 -31
- package/build/admin/src/components/icons/comments.d.ts +4 -7
- package/build/admin/src/components/icons/comments.js +7 -18
- package/build/admin/src/components/icons/index.d.ts +1 -1
- package/build/admin/src/components/icons/index.js +5 -11
- package/build/admin/src/components/icons/lock.d.ts +5 -9
- package/build/admin/src/components/icons/lock.js +7 -24
- package/build/admin/src/components/icons/review.d.ts +5 -9
- package/build/admin/src/components/icons/review.js +7 -26
- package/build/admin/src/components/icons/unlock.d.ts +5 -9
- package/build/admin/src/components/icons/unlock.js +7 -24
- package/build/admin/src/hooks/useConfig.js +34 -42
- package/build/admin/src/index.js +84 -121
- package/build/admin/src/pages/App/index.js +23 -66
- package/build/admin/src/pages/App/reducer/actions.d.ts +4 -4
- package/build/admin/src/pages/App/reducer/actions.js +3 -3
- package/build/admin/src/pages/App/reducer/constants.d.ts +1 -1
- package/build/admin/src/pages/App/reducer/constants.js +1 -1
- package/build/admin/src/pages/App/reducer/index.d.ts +5 -10
- package/build/admin/src/pages/App/reducer/index.js +16 -19
- package/build/admin/src/pages/App/reducer/init.d.ts +1 -1
- package/build/admin/src/pages/App/reducer/init.js +4 -4
- package/build/admin/src/pages/App/reducer/selectors.d.ts +1 -1
- package/build/admin/src/pages/App/reducer/selectors.js +6 -8
- package/build/admin/src/pages/App/utils/api.js +8 -9
- package/build/admin/src/pages/ComingSoonPage/index.js +27 -62
- package/build/admin/src/pages/Details/components/DetailsEntity/index.js +39 -115
- package/build/admin/src/pages/Details/components/DetailsFilters/index.js +13 -33
- package/build/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +1 -1
- package/build/admin/src/pages/Details/components/DetailsFilters/styles.js +5 -7
- package/build/admin/src/pages/Details/index.js +64 -183
- package/build/admin/src/pages/Discover/components/DiscoverTableRow/index.js +139 -314
- package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +1 -1
- package/build/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +5 -7
- package/build/admin/src/pages/Discover/index.js +98 -298
- package/build/admin/src/pages/Discover/utils/api.js +8 -15
- package/build/admin/src/pages/Discover/utils/filtersSchema.d.ts +8 -8
- package/build/admin/src/pages/Discover/utils/filtersSchema.js +6 -6
- package/build/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +1 -1
- package/build/admin/src/pages/Settings/components/RestartAlert/styles.js +5 -7
- package/build/admin/src/pages/Settings/index.js +192 -678
- package/build/admin/src/pages/Settings/utils/api.js +44 -59
- package/build/admin/src/pages/utils/api.js +26 -51
- package/build/admin/src/permissions.d.ts +25 -25
- package/build/admin/src/permissions.js +28 -60
- package/build/admin/src/pluginId.d.ts +1 -1
- package/build/admin/src/pluginId.js +20 -41
- package/build/admin/src/reducers.d.ts +4 -9
- package/build/admin/src/reducers.js +5 -7
- package/build/admin/src/translations/fr.json +132 -1
- package/build/admin/src/utils/axiosInstance.js +15 -23
- package/build/admin/src/utils/constants.d.ts +17 -17
- package/build/admin/src/utils/constants.js +16 -20
- package/build/admin/src/utils/getApiUrl.d.ts +1 -1
- package/build/admin/src/utils/getApiUrl.js +1 -1
- package/build/admin/src/utils/getMessage.js +13 -17
- package/build/admin/src/utils/getRelatedGroups.js +2 -3
- package/build/admin/src/utils/getUrl.d.ts +1 -1
- package/build/admin/src/utils/getUrl.js +1 -1
- package/build/admin/src/utils/handleAPIError.js +12 -15
- package/build/admin/src/utils/index.js +16 -84
- package/build/admin/src/utils/parseRegExp.d.ts +3 -3
- package/build/admin/src/utils/parseRegExp.js +6 -6
- package/build/admin/src/utils/renderEntryTitle.js +7 -10
- package/build/admin/src/utils/renderInitials.d.ts +1 -1
- package/build/admin/src/utils/renderInitials.js +2 -3
- package/build/admin/src/utils/resolveCommentStatus.js +19 -25
- package/build/admin/src/utils/resolveCommentStatusColor.js +15 -15
- package/build/content-types/comment.d.ts +87 -87
- package/build/content-types/comment.js +87 -87
- package/build/content-types/index.d.ts +136 -136
- package/build/content-types/index.js +10 -12
- package/build/content-types/report.d.ts +41 -41
- package/build/content-types/report.js +41 -41
- package/build/package.json +5 -5
- package/build/permissions.d.ts +14 -14
- package/build/permissions.js +14 -14
- package/build/server/bootstrap.js +52 -58
- package/build/server/config/index.js +13 -13
- package/build/server/controllers/admin.js +128 -117
- package/build/server/controllers/client.js +15 -4
- package/build/server/controllers/index.js +6 -8
- package/build/server/controllers/utils/functions.d.ts +1 -1
- package/build/server/controllers/utils/parsers.d.ts +5 -10
- package/build/server/controllers/utils/parsers.js +46 -20
- package/build/server/destroy.d.ts +1 -1
- package/build/server/destroy.js +3 -2
- package/build/server/graphql/index.js +19 -29
- package/build/server/graphql/mutations/createAbuseReport.js +19 -23
- package/build/server/graphql/mutations/createComment.d.ts +1 -1
- package/build/server/graphql/mutations/createComment.js +19 -22
- package/build/server/graphql/mutations/index.js +19 -21
- package/build/server/graphql/mutations/removeComment.d.ts +1 -1
- package/build/server/graphql/mutations/removeComment.js +19 -23
- package/build/server/graphql/mutations/updateComment.d.ts +1 -1
- package/build/server/graphql/mutations/updateComment.js +19 -23
- package/build/server/graphql/queries/findAllFlat.d.ts +1 -1
- package/build/server/graphql/queries/findAllFlat.js +30 -40
- package/build/server/graphql/queries/findAllInHierarchy.d.ts +1 -2
- package/build/server/graphql/queries/findAllInHierarchy.js +25 -32
- package/build/server/graphql/queries/index.js +17 -19
- package/build/server/graphql/resolvers-config.js +10 -10
- package/build/server/graphql/types/comment-author.js +7 -8
- package/build/server/graphql/types/comment-nested.js +14 -15
- package/build/server/graphql/types/comment.js +13 -14
- package/build/server/graphql/types/create-comment-author.js +7 -8
- package/build/server/graphql/types/create-comment.js +7 -8
- package/build/server/graphql/types/create-report.js +7 -8
- package/build/server/graphql/types/id.js +13 -14
- package/build/server/graphql/types/identify-comment-author.js +4 -5
- package/build/server/graphql/types/index.js +21 -27
- package/build/server/graphql/types/remove-comment.js +6 -7
- package/build/server/graphql/types/report-reason.js +9 -9
- package/build/server/graphql/types/report.js +9 -10
- package/build/server/graphql/types/response-find-all.js +5 -6
- package/build/server/graphql/types/response-meta.js +4 -5
- package/build/server/graphql/types/response-pagination.js +9 -10
- package/build/server/graphql/types/update-comment.js +7 -8
- package/build/server/register.d.ts +1 -1
- package/build/server/register.js +3 -2
- package/build/server/routes/admin.d.ts +1 -1
- package/build/server/routes/admin.js +99 -99
- package/build/server/routes/client.d.ts +1 -1
- package/build/server/routes/client.js +79 -43
- package/build/server/routes/index.d.ts +4 -4
- package/build/server/routes/index.js +12 -14
- package/build/server/services/admin.js +257 -284
- package/build/server/services/client.js +54 -42
- package/build/server/services/common.js +33 -11
- package/build/server/services/graphql.js +113 -124
- package/build/server/services/utils/functions.d.ts +1 -1
- package/build/server/services/utils/functions.js +76 -109
- package/build/server/utils/constants.js +13 -14
- package/build/server/utils/error.d.ts +12 -16
- package/build/server/utils/error.js +23 -23
- package/build/server/utils/functions.d.ts +4 -12
- package/build/server/utils/functions.js +20 -34
- package/build/strapi-admin.js +4 -6
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/contentTypes.d.ts +7 -5
- package/content-types/comment.ts +93 -0
- package/content-types/index.ts +11 -0
- package/content-types/report.ts +50 -0
- package/jest.config.ts +22 -0
- package/package.json +45 -11
- package/permissions.ts +17 -0
- package/server/{bootstrap.js → bootstrap.ts} +12 -11
- package/server/config/index.ts +19 -0
- package/server/controllers/admin.ts +194 -0
- package/server/controllers/client.ts +220 -0
- package/server/controllers/index.ts +13 -0
- package/server/controllers/utils/functions.ts +27 -0
- package/server/controllers/utils/parsers.ts +59 -0
- package/server/destroy.ts +3 -0
- package/server/graphql/index.ts +27 -0
- package/server/graphql/mutations/createAbuseReport.ts +38 -0
- package/server/graphql/mutations/createComment.ts +41 -0
- package/server/graphql/mutations/index.ts +26 -0
- package/server/graphql/mutations/removeComment.ts +41 -0
- package/server/graphql/mutations/updateComment.ts +40 -0
- package/server/graphql/queries/findAllFlat.ts +58 -0
- package/server/graphql/queries/findAllInHierarchy.ts +47 -0
- package/server/graphql/queries/index.ts +22 -0
- package/server/graphql/resolvers-config.ts +13 -0
- package/server/graphql/types/comment-author.ts +12 -0
- package/server/graphql/types/comment-nested.ts +19 -0
- package/server/graphql/types/comment.ts +18 -0
- package/server/graphql/types/create-comment-author.ts +12 -0
- package/server/graphql/types/create-comment.ts +12 -0
- package/server/graphql/types/create-report.ts +12 -0
- package/server/graphql/types/id.ts +28 -0
- package/server/graphql/types/identify-comment-author.ts +9 -0
- package/server/graphql/types/index.ts +38 -0
- package/server/graphql/types/remove-comment.ts +11 -0
- package/server/graphql/types/report-reason.ts +12 -0
- package/server/graphql/types/report.ts +14 -0
- package/server/graphql/types/response-find-all.ts +10 -0
- package/server/graphql/types/response-meta.ts +9 -0
- package/server/graphql/types/response-pagination.ts +14 -0
- package/server/graphql/types/update-comment.ts +12 -0
- package/server/index.ts +20 -0
- package/server/register.ts +3 -0
- package/server/routes/admin.ts +118 -0
- package/server/routes/client.ts +95 -0
- package/server/routes/index.ts +25 -0
- package/server/services/admin.ts +406 -0
- package/server/services/client.ts +394 -0
- package/server/services/common.ts +503 -0
- package/server/services/{graphql.js → graphql.ts} +72 -43
- package/server/services/index.ts +13 -0
- package/server/services/utils/functions.ts +150 -0
- package/server/utils/constants.ts +23 -0
- package/server/utils/error.ts +44 -0
- package/server/utils/functions.ts +55 -0
- package/strapi-admin.ts +5 -0
- package/strapi-server.ts +77 -0
- package/tsconfig.json +38 -0
- package/types/common.d.ts +1 -0
- package/types/config.d.ts +35 -0
- package/types/constants.d.ts +3 -0
- package/types/contentTypes.ts +56 -0
- package/types/controllers.d.ts +125 -0
- package/types/graphql.d.ts +24 -0
- package/types/index.d.ts +7 -0
- package/types/services.d.ts +166 -0
- package/__mocks__/initSetup.js +0 -108
- package/admin/src/components/ActionButton/styles.js +0 -10
- package/admin/src/components/ConfirmationDialog/index.js +0 -56
- package/admin/src/components/DiscussionStatus/index.js +0 -33
- package/admin/src/components/DiscussionThread/index.js +0 -62
- package/admin/src/components/DiscussionThreadItem/index.js +0 -57
- package/admin/src/components/DiscussionThreadItemActions/index.js +0 -231
- package/admin/src/components/DiscussionThreadItemActions/styles.js +0 -7
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -80
- package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -6
- package/admin/src/components/DiscussionThreadItemFooter/index.js +0 -47
- package/admin/src/components/DiscussionThreadItemFooter/styles.js +0 -13
- package/admin/src/components/DiscussionThreadItemReviewAction/index.js +0 -131
- package/admin/src/components/FormSwitch/index.js +0 -18
- package/admin/src/components/FormSwitch/styles.js +0 -8
- package/admin/src/components/IconButton/styles.js +0 -14
- package/admin/src/components/LoadingIndicatorOverlay/index.js +0 -15
- package/admin/src/components/LoadingIndicatorOverlay/styles.js +0 -20
- package/admin/src/components/Nav/index.js +0 -49
- package/admin/src/components/ReportsReviewModal/index.js +0 -48
- package/admin/src/components/ReportsReviewTable/index.js +0 -160
- package/admin/src/components/StatusBadge/index.js +0 -17
- package/admin/src/components/StatusBadge/styles.js +0 -17
- package/admin/src/components/icons/comments.js +0 -9
- package/admin/src/components/icons/index.js +0 -6
- package/admin/src/components/icons/review.js +0 -18
- package/admin/src/components/icons/unlock.js +0 -20
- package/admin/src/hooks/useConfig.js +0 -49
- package/admin/src/pages/App/index.js +0 -71
- package/admin/src/pages/App/reducer/actions.js +0 -8
- package/admin/src/pages/App/reducer/constants.js +0 -4
- package/admin/src/pages/App/reducer/init.js +0 -7
- package/admin/src/pages/App/reducer/selectors.js +0 -35
- package/admin/src/pages/ComingSoonPage/index.js +0 -25
- package/admin/src/pages/Details/components/DetailsEntity/index.js +0 -84
- package/admin/src/pages/Details/components/DetailsFilters/index.js +0 -35
- package/admin/src/pages/Details/components/DetailsFilters/styles.js +0 -8
- package/admin/src/pages/Details/index.js +0 -136
- package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +0 -180
- package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -8
- package/admin/src/pages/Discover/index.js +0 -173
- package/admin/src/pages/Discover/utils/api.js +0 -14
- package/admin/src/pages/Discover/utils/filtersSchema.js +0 -9
- package/admin/src/pages/Settings/components/RestartAlert/styles.js +0 -8
- package/admin/src/pages/Settings/index.js +0 -392
- package/admin/src/pages/utils/api.js +0 -53
- package/admin/src/permissions.js +0 -19
- package/admin/src/pluginId.js +0 -5
- package/admin/src/reducers.js +0 -8
- package/admin/src/utils/constants.js +0 -25
- package/admin/src/utils/getApiUrl.js +0 -5
- package/admin/src/utils/getMessage.js +0 -21
- package/admin/src/utils/getRelatedGroups.js +0 -3
- package/admin/src/utils/getUrl.js +0 -5
- package/admin/src/utils/handleAPIError.js +0 -16
- package/admin/src/utils/index.js +0 -11
- package/admin/src/utils/parseRegExp.js +0 -10
- package/admin/src/utils/renderEntryTitle.js +0 -14
- package/admin/src/utils/renderInitials.js +0 -5
- package/admin/src/utils/resolveCommentStatus.js +0 -30
- package/admin/src/utils/resolveCommentStatusColor.js +0 -22
- package/content-types/comment.js +0 -93
- package/content-types/index.js +0 -11
- package/content-types/report.js +0 -54
- package/jest.config.js +0 -7
- package/permissions.js +0 -19
- package/server/config/index.js +0 -17
- package/server/controllers/admin.js +0 -168
- package/server/controllers/client.js +0 -114
- package/server/controllers/index.js +0 -9
- package/server/controllers/utils/__tests__/functions.test.js +0 -43
- package/server/controllers/utils/__tests__/parsers.test.js +0 -94
- package/server/controllers/utils/functions.js +0 -19
- package/server/controllers/utils/parsers.js +0 -23
- package/server/destroy.js +0 -5
- package/server/graphql/index.js +0 -25
- package/server/graphql/mutations/createAbuseReport.js +0 -25
- package/server/graphql/mutations/createComment.js +0 -25
- package/server/graphql/mutations/index.js +0 -21
- package/server/graphql/mutations/removeComment.js +0 -25
- package/server/graphql/mutations/updateComment.js +0 -25
- package/server/graphql/queries/findAllFlat.js +0 -35
- package/server/graphql/queries/findAllInHierarchy.js +0 -31
- package/server/graphql/queries/index.js +0 -19
- package/server/graphql/resolvers-config.js +0 -13
- package/server/graphql/types/comment-author.js +0 -9
- package/server/graphql/types/comment-nested.js +0 -16
- package/server/graphql/types/comment.js +0 -15
- package/server/graphql/types/create-comment-author.js +0 -9
- package/server/graphql/types/create-comment.js +0 -9
- package/server/graphql/types/create-report.js +0 -9
- package/server/graphql/types/id.js +0 -24
- package/server/graphql/types/identify-comment-author.js +0 -6
- package/server/graphql/types/index.js +0 -19
- package/server/graphql/types/remove-comment.js +0 -8
- package/server/graphql/types/report-reason.js +0 -10
- package/server/graphql/types/report.js +0 -11
- package/server/graphql/types/response-find-all.js +0 -7
- package/server/graphql/types/response-meta.js +0 -6
- package/server/graphql/types/response-pagination.js +0 -11
- package/server/graphql/types/update-comment.js +0 -9
- package/server/index.js +0 -22
- package/server/register.js +0 -5
- package/server/routes/admin.js +0 -124
- package/server/routes/client.js +0 -52
- package/server/routes/index.js +0 -15
- package/server/services/__tests__/common.test.js +0 -399
- package/server/services/admin.js +0 -296
- package/server/services/client.js +0 -263
- package/server/services/common.js +0 -295
- package/server/services/index.js +0 -13
- package/server/services/utils/__tests__/functions.test.js +0 -53
- package/server/services/utils/functions.js +0 -112
- package/server/utils/__tests__/functions.test.js +0 -17
- package/server/utils/constants.js +0 -26
- package/server/utils/error.js +0 -24
- package/server/utils/functions.js +0 -19
- package/strapi-admin.js +0 -3
- 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
|
-
>
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
185
|
-
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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 & 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
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
332
|
+
// -- Comment Model fields ---
|
|
299
333
|
},
|
|
300
334
|
{
|
|
301
|
-
|
|
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
|
-
|
|
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
|
-
|
|
371
|
+
_Generic (non Strapi User)_
|
|
372
|
+
|
|
335
373
|
```json
|
|
336
374
|
{
|
|
337
375
|
"author": {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
376
|
+
"id": "<any ID like value>",
|
|
377
|
+
"name": "Joe Doe",
|
|
378
|
+
"email": "jdoe@sample.com",
|
|
379
|
+
"avatar": "<any image url>"
|
|
342
380
|
},
|
|
343
|
-
|
|
344
|
-
|
|
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
|
-
|
|
386
|
+
_Strapi user_
|
|
349
387
|
|
|
350
388
|
> Author is taken directly from the request context
|
|
351
389
|
|
|
352
390
|
```json
|
|
353
391
|
{
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
422
|
+
_Generic (non Strapi User)_
|
|
423
|
+
|
|
384
424
|
```json
|
|
385
425
|
{
|
|
386
426
|
"author": {
|
|
387
|
-
|
|
427
|
+
"id": "<any ID like value>"
|
|
388
428
|
},
|
|
389
|
-
|
|
429
|
+
"content": "My sample response"
|
|
390
430
|
}
|
|
391
431
|
```
|
|
392
432
|
|
|
393
|
-
|
|
433
|
+
_Strapi user_
|
|
394
434
|
|
|
395
435
|
> Author is taken directly from the request context
|
|
396
436
|
|
|
397
437
|
```json
|
|
398
438
|
{
|
|
399
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
454
|
-
|
|
494
|
+
"reason": "<reason enum>",
|
|
495
|
+
"content": "This comment is not relevant"
|
|
455
496
|
}
|
|
456
497
|
```
|
|
457
498
|
|
|
458
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|