strapi-plugin-comments 2.1.0-beta.1 → 2.1.2
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/.husky/pre-commit +4 -0
- package/LICENSE.md +7 -0
- package/README.md +41 -5
- 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.ts +15 -0
- 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.tsx +28 -0
- 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.tsx +14 -0
- 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.tsx +58 -0
- package/admin/src/components/TablePagination/index.tsx +37 -0
- package/admin/src/components/icons/comments.tsx +15 -0
- package/admin/src/components/icons/index.ts +6 -0
- package/admin/src/components/icons/lock.tsx +27 -0
- 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.ts +98 -0
- 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.ts +28 -0
- 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.ts +14 -0
- 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.ts +71 -0
- 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/fr.json +132 -1
- package/admin/src/translations/pt-BR.json +130 -130
- package/admin/src/utils/axiosInstance.ts +38 -0
- 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/{admin → build/admin}/src/components/ActionButton/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/ActionButton/styles.js +0 -0
- package/build/admin/src/components/Avatar/index.d.ts +12 -0
- package/build/admin/src/components/Avatar/index.js +26 -0
- package/{admin → build/admin}/src/components/ConfirmationDialog/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/ConfirmationDialog/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionStatus/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionStatus/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThread/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThread/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItem/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItem/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.js +3 -4
- package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.js +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.js +0 -0
- package/{admin → build/admin}/src/components/FormSwitch/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/FormSwitch/index.js +0 -0
- package/{admin → build/admin}/src/components/FormSwitch/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/FormSwitch/styles.js +0 -0
- package/{admin → build/admin}/src/components/IconButton/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/IconButton/styles.js +0 -0
- package/{admin → build/admin}/src/components/Initializer/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/Initializer/index.js +0 -0
- package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.js +0 -0
- package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.js +0 -0
- package/{admin → build/admin}/src/components/Nav/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/Nav/index.js +0 -0
- package/{admin → build/admin}/src/components/PluginIcon/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/PluginIcon/index.js +0 -0
- package/{admin → build/admin}/src/components/ReportsReviewModal/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/ReportsReviewModal/index.js +0 -0
- package/{admin → build/admin}/src/components/ReportsReviewTable/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/ReportsReviewTable/index.js +0 -0
- package/{admin → build/admin}/src/components/StatusBadge/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/StatusBadge/index.js +0 -0
- package/{admin → build/admin}/src/components/StatusBadge/styles.d.ts +0 -0
- package/{admin → build/admin}/src/components/StatusBadge/styles.js +0 -0
- package/{admin → build/admin}/src/components/TableFilters/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/TableFilters/index.js +0 -0
- package/{admin → build/admin}/src/components/TablePagination/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/TablePagination/index.js +0 -0
- package/{admin → build/admin}/src/components/icons/comments.d.ts +0 -0
- package/{admin → build/admin}/src/components/icons/comments.js +0 -0
- package/{admin → build/admin}/src/components/icons/index.d.ts +0 -0
- package/{admin → build/admin}/src/components/icons/index.js +0 -0
- package/{admin → build/admin}/src/components/icons/lock.d.ts +0 -0
- package/{admin → build/admin}/src/components/icons/lock.js +0 -0
- package/{admin → build/admin}/src/components/icons/review.d.ts +0 -0
- package/{admin → build/admin}/src/components/icons/review.js +0 -0
- package/{admin → build/admin}/src/components/icons/unlock.d.ts +0 -0
- package/{admin → build/admin}/src/components/icons/unlock.js +0 -0
- package/{admin → build/admin}/src/hooks/useConfig.d.ts +0 -0
- package/{admin → build/admin}/src/hooks/useConfig.js +0 -0
- package/{admin → build/admin}/src/index.d.ts +0 -0
- package/{admin → build/admin}/src/index.js +0 -0
- package/{admin → build/admin}/src/pages/App/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/index.js +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/actions.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/actions.js +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/constants.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/constants.js +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/index.js +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/init.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/init.js +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/selectors.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/reducer/selectors.js +0 -0
- package/{admin → build/admin}/src/pages/App/utils/api.d.ts +0 -0
- package/{admin → build/admin}/src/pages/App/utils/api.js +0 -0
- package/{admin → build/admin}/src/pages/ComingSoonPage/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/ComingSoonPage/index.js +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.js +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.js +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.js +0 -0
- package/{admin → build/admin}/src/pages/Details/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Details/index.js +0 -0
- package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.js +2 -2
- package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -0
- package/{admin → build/admin}/src/pages/Discover/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Discover/index.js +0 -0
- package/{admin → build/admin}/src/pages/Discover/utils/api.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Discover/utils/api.js +0 -0
- package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.js +0 -0
- package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.js +0 -0
- package/{admin → build/admin}/src/pages/Settings/index.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Settings/index.js +0 -0
- package/{admin → build/admin}/src/pages/Settings/utils/api.d.ts +0 -0
- package/{admin → build/admin}/src/pages/Settings/utils/api.js +0 -0
- package/{admin → build/admin}/src/pages/utils/api.d.ts +0 -0
- package/{admin → build/admin}/src/pages/utils/api.js +0 -0
- package/{admin → build/admin}/src/permissions.d.ts +0 -0
- package/{admin → build/admin}/src/permissions.js +0 -0
- package/{admin → build/admin}/src/pluginId.d.ts +0 -0
- package/{admin → build/admin}/src/pluginId.js +0 -0
- package/{admin → build/admin}/src/reducers.d.ts +0 -0
- package/{admin → build/admin}/src/reducers.js +0 -0
- package/build/admin/src/translations/en.json +132 -0
- package/build/admin/src/translations/fr.json +132 -0
- package/build/admin/src/translations/pt-BR.json +132 -0
- package/{admin → build/admin}/src/utils/axiosInstance.d.ts +0 -0
- package/{admin → build/admin}/src/utils/axiosInstance.js +0 -0
- package/{admin → build/admin}/src/utils/constants.d.ts +0 -0
- package/{admin → build/admin}/src/utils/constants.js +0 -0
- package/{admin → build/admin}/src/utils/getApiUrl.d.ts +0 -0
- package/{admin → build/admin}/src/utils/getApiUrl.js +0 -0
- package/{admin → build/admin}/src/utils/getMessage.d.ts +0 -0
- package/{admin → build/admin}/src/utils/getMessage.js +0 -0
- package/{admin → build/admin}/src/utils/getRelatedGroups.d.ts +0 -0
- package/{admin → build/admin}/src/utils/getRelatedGroups.js +0 -0
- package/{admin → build/admin}/src/utils/getUrl.d.ts +0 -0
- package/{admin → build/admin}/src/utils/getUrl.js +0 -0
- package/{admin → build/admin}/src/utils/handleAPIError.d.ts +0 -0
- package/{admin → build/admin}/src/utils/handleAPIError.js +0 -0
- package/{admin → build/admin}/src/utils/index.d.ts +0 -0
- package/{admin → build/admin}/src/utils/index.js +0 -0
- package/{admin → build/admin}/src/utils/parseRegExp.d.ts +0 -0
- package/{admin → build/admin}/src/utils/parseRegExp.js +0 -0
- package/{admin → build/admin}/src/utils/renderEntryTitle.d.ts +0 -0
- package/{admin → build/admin}/src/utils/renderEntryTitle.js +0 -0
- package/{admin → build/admin}/src/utils/renderInitials.d.ts +0 -0
- package/{admin → build/admin}/src/utils/renderInitials.js +0 -0
- package/{admin → build/admin}/src/utils/resolveCommentStatus.d.ts +0 -0
- package/{admin → build/admin}/src/utils/resolveCommentStatus.js +0 -0
- package/{admin → build/admin}/src/utils/resolveCommentStatusColor.d.ts +0 -0
- package/{admin → build/admin}/src/utils/resolveCommentStatusColor.js +0 -0
- package/{content-types → build/content-types}/comment.d.ts +0 -0
- package/{content-types → build/content-types}/comment.js +0 -0
- package/{content-types → build/content-types}/index.d.ts +0 -0
- package/{content-types → build/content-types}/index.js +0 -0
- package/{content-types → build/content-types}/report.d.ts +0 -0
- package/{content-types → build/content-types}/report.js +0 -0
- package/build/package.json +94 -0
- package/{permissions.d.ts → build/permissions.d.ts} +0 -0
- package/{permissions.js → build/permissions.js} +0 -0
- package/{server → build/server}/bootstrap.d.ts +0 -0
- package/{server → build/server}/bootstrap.js +0 -0
- package/{server → build/server}/config/index.d.ts +0 -0
- package/{server → build/server}/config/index.js +0 -0
- package/{server → build/server}/controllers/admin.d.ts +0 -0
- package/{server → build/server}/controllers/admin.js +0 -0
- package/build/server/controllers/client.d.ts +4 -0
- package/{server → build/server}/controllers/client.js +38 -22
- package/{server → build/server}/controllers/index.d.ts +0 -0
- package/{server → build/server}/controllers/index.js +0 -0
- package/build/server/controllers/utils/functions.d.ts +7 -0
- package/{server → build/server}/controllers/utils/functions.js +0 -0
- package/build/server/controllers/utils/parsers.d.ts +10 -0
- package/build/server/controllers/utils/parsers.js +51 -0
- package/{server → build/server}/destroy.d.ts +0 -0
- package/{server → build/server}/destroy.js +0 -0
- package/{server → build/server}/graphql/index.d.ts +0 -0
- package/{server → build/server}/graphql/index.js +0 -0
- package/{server → build/server}/graphql/mutations/createAbuseReport.d.ts +0 -0
- package/{server → build/server}/graphql/mutations/createAbuseReport.js +0 -0
- package/{server → build/server}/graphql/mutations/createComment.d.ts +1 -1
- package/{server → build/server}/graphql/mutations/createComment.js +0 -0
- package/{server → build/server}/graphql/mutations/index.d.ts +0 -0
- package/{server → build/server}/graphql/mutations/index.js +0 -0
- package/{server → build/server}/graphql/mutations/removeComment.d.ts +1 -1
- package/{server → build/server}/graphql/mutations/removeComment.js +0 -0
- package/{server → build/server}/graphql/mutations/updateComment.d.ts +1 -1
- package/{server → build/server}/graphql/mutations/updateComment.js +0 -0
- package/{server → build/server}/graphql/queries/findAllFlat.d.ts +1 -1
- package/{server → build/server}/graphql/queries/findAllFlat.js +11 -6
- package/{server → build/server}/graphql/queries/findAllInHierarchy.d.ts +1 -2
- package/{server → build/server}/graphql/queries/findAllInHierarchy.js +5 -1
- package/{server → build/server}/graphql/queries/index.d.ts +0 -0
- package/{server → build/server}/graphql/queries/index.js +0 -0
- package/{server → build/server}/graphql/resolvers-config.d.ts +0 -0
- package/{server → build/server}/graphql/resolvers-config.js +0 -0
- package/{server → build/server}/graphql/types/comment-author.d.ts +0 -0
- package/{server → build/server}/graphql/types/comment-author.js +0 -0
- package/{server → build/server}/graphql/types/comment-nested.d.ts +0 -0
- package/{server → build/server}/graphql/types/comment-nested.js +0 -0
- package/{server → build/server}/graphql/types/comment.d.ts +0 -0
- package/{server → build/server}/graphql/types/comment.js +0 -0
- package/{server → build/server}/graphql/types/create-comment-author.d.ts +0 -0
- package/{server → build/server}/graphql/types/create-comment-author.js +0 -0
- package/{server → build/server}/graphql/types/create-comment.d.ts +0 -0
- package/{server → build/server}/graphql/types/create-comment.js +0 -0
- package/{server → build/server}/graphql/types/create-report.d.ts +0 -0
- package/{server → build/server}/graphql/types/create-report.js +0 -0
- package/{server → build/server}/graphql/types/id.d.ts +0 -0
- package/{server → build/server}/graphql/types/id.js +0 -0
- package/{server → build/server}/graphql/types/identify-comment-author.d.ts +0 -0
- package/{server → build/server}/graphql/types/identify-comment-author.js +0 -0
- package/{server → build/server}/graphql/types/index.d.ts +0 -0
- package/{server → build/server}/graphql/types/index.js +0 -0
- package/{server → build/server}/graphql/types/remove-comment.d.ts +0 -0
- package/{server → build/server}/graphql/types/remove-comment.js +0 -0
- package/{server → build/server}/graphql/types/report-reason.d.ts +0 -0
- package/{server → build/server}/graphql/types/report-reason.js +0 -0
- package/{server → build/server}/graphql/types/report.d.ts +0 -0
- package/{server → build/server}/graphql/types/report.js +0 -0
- package/{server → build/server}/graphql/types/response-find-all.d.ts +0 -0
- package/{server → build/server}/graphql/types/response-find-all.js +0 -0
- package/{server → build/server}/graphql/types/response-meta.d.ts +0 -0
- package/{server → build/server}/graphql/types/response-meta.js +0 -0
- package/{server → build/server}/graphql/types/response-pagination.d.ts +0 -0
- package/{server → build/server}/graphql/types/response-pagination.js +0 -0
- package/{server → build/server}/graphql/types/update-comment.d.ts +0 -0
- package/{server → build/server}/graphql/types/update-comment.js +0 -0
- package/{server → build/server}/index.d.ts +0 -0
- package/{server → build/server}/index.js +0 -0
- package/{server → build/server}/register.d.ts +0 -0
- package/{server → build/server}/register.js +0 -0
- package/{server → build/server}/routes/admin.d.ts +0 -0
- package/{server → build/server}/routes/admin.js +0 -0
- package/{server → build/server}/routes/client.d.ts +0 -0
- package/build/server/routes/client.js +90 -0
- package/{server → build/server}/routes/index.d.ts +0 -0
- package/{server → build/server}/routes/index.js +0 -0
- package/{server → build/server}/services/admin.d.ts +0 -0
- package/{server → build/server}/services/admin.js +10 -5
- package/{server → build/server}/services/client.d.ts +0 -0
- package/{server → build/server}/services/client.js +57 -45
- package/{server → build/server}/services/common.d.ts +0 -0
- package/{server → build/server}/services/common.js +32 -11
- package/{server → build/server}/services/graphql.d.ts +0 -0
- package/{server → build/server}/services/graphql.js +0 -0
- package/{server → build/server}/services/index.d.ts +0 -0
- package/{server → build/server}/services/index.js +0 -0
- package/{server → build/server}/services/utils/functions.d.ts +1 -1
- package/{server → build/server}/services/utils/functions.js +9 -4
- package/{server → build/server}/utils/constants.d.ts +0 -0
- package/{server → build/server}/utils/constants.js +0 -0
- package/{server → build/server}/utils/error.d.ts +0 -0
- package/{server → build/server}/utils/error.js +0 -0
- package/{server → build/server}/utils/functions.d.ts +0 -0
- package/{server → build/server}/utils/functions.js +0 -0
- package/{strapi-admin.d.ts → build/strapi-admin.d.ts} +0 -0
- package/{strapi-admin.js → build/strapi-admin.js} +0 -0
- package/{strapi-server.d.ts → build/strapi-server.d.ts} +0 -0
- package/{strapi-server.js → build/strapi-server.js} +0 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/{types → build/types}/contentTypes.d.ts +13 -9
- package/{types → build/types}/contentTypes.js +0 -0
- 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 +36 -7
- package/permissions.ts +17 -0
- package/server/bootstrap.ts +66 -0
- 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 +501 -0
- package/server/services/graphql.ts +219 -0
- 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/server/controllers/client.d.ts +0 -4
- package/server/controllers/utils/functions.d.ts +0 -7
- package/server/controllers/utils/parsers.d.ts +0 -15
- package/server/controllers/utils/parsers.js +0 -23
- package/server/routes/client.js +0 -54
- package/tsconfig.tsbuildinfo +0 -1
package/LICENSE.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright (c) 2021 VirtusLab Sp. z o.o. & Strapi Solutions.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -32,6 +32,19 @@
|
|
|
32
32
|
|
|
33
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.
|
|
34
34
|
|
|
35
|
+
### Table of Contents
|
|
36
|
+
|
|
37
|
+
1. [✨ Features](#-features)
|
|
38
|
+
2. [⏳ Installation](#-installation)
|
|
39
|
+
3. [🖐 Requirements](#-requirements)
|
|
40
|
+
4. [🔧 Configuration](#-configuration)
|
|
41
|
+
- [Settings page](#in-v203-and-newer)
|
|
42
|
+
- [Plugin file](#in-v202-and-older--default-configuration-state-for-v203-and-newer)
|
|
43
|
+
5. [🕸️ Public API - REST](#%EF%B8%8F-public-rest-api-specification)
|
|
44
|
+
6. [🕸️ Public API - GraphQL](#%EF%B8%8F-public-graphql-specification)
|
|
45
|
+
7. [🤝 Contributing](#-contributing)
|
|
46
|
+
8. [👨💻 Community support](#-community-support)
|
|
47
|
+
|
|
35
48
|
## ✨ Features
|
|
36
49
|
|
|
37
50
|
- **Comments Public REST + GraphQL API:** Elegant, entirely customizable and a fully extensible admin panel.
|
|
@@ -48,13 +61,23 @@ A plugin for [Strapi Headless CMS](https://github.com/strapi/strapi) that provid
|
|
|
48
61
|
|
|
49
62
|
## ⏳ Installation
|
|
50
63
|
|
|
64
|
+
### Via Strapi Markerplace
|
|
65
|
+
|
|
66
|
+
As a ✅ **verified** plugin by Strapi team we're available on the [**Strapi Marketplace**](https://market.strapi.io/plugins/strapi-plugin-comments) as well as **In-App Marketplace** where you can follow the installation instructions.
|
|
67
|
+
|
|
68
|
+
<div style="margin: 20px 0" align="center">
|
|
69
|
+
<img style="width: 100%; height: auto;" src="public/assets/marketplace.png" alt="Strapi In-App Marketplace" />
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
### Via command line
|
|
73
|
+
|
|
51
74
|
(Use **yarn** to install this plugin within your Strapi project (recommended). [Install yarn with these docs](https://yarnpkg.com/lang/en/docs/install/).)
|
|
52
75
|
|
|
53
76
|
```bash
|
|
54
77
|
yarn add strapi-plugin-comments@latest
|
|
55
78
|
```
|
|
56
79
|
|
|
57
|
-
After successful installation you've to build
|
|
80
|
+
After successful installation you've to re-build your Strapi instance. To archive that simply use:
|
|
58
81
|
|
|
59
82
|
```bash
|
|
60
83
|
yarn build
|
|
@@ -69,7 +92,9 @@ yarn develop --watch-admin
|
|
|
69
92
|
|
|
70
93
|
The **Comments** plugin should appear in the **Plugins** section of Strapi sidebar after you run app again.
|
|
71
94
|
|
|
72
|
-
|
|
95
|
+
As a next step you must configure your the plugin by the way you want to. See [**Configuration**](#🔧-configuration) section.
|
|
96
|
+
|
|
97
|
+
All done. Enjoy 🎉
|
|
73
98
|
|
|
74
99
|
### Working in development mode
|
|
75
100
|
|
|
@@ -107,7 +132,7 @@ In our minimum support we're following [official Node.js releases timelines](htt
|
|
|
107
132
|
|
|
108
133
|
**Supported Strapi versions**:
|
|
109
134
|
|
|
110
|
-
- Strapi v4.1.
|
|
135
|
+
- Strapi v4.1.7 (recently tested)
|
|
111
136
|
- Strapi v4.x
|
|
112
137
|
|
|
113
138
|
> This plugin is designed for **Strapi v4** and is not working with v3.x. To get version for **Strapi v3** install version [v1.x](https://github.com/VirtusLab-Open-Source/strapi-plugin-comments/tree/strapi-v3).
|
|
@@ -116,14 +141,22 @@ In our minimum support we're following [official Node.js releases timelines](htt
|
|
|
116
141
|
|
|
117
142
|
## 🔧 Configuration
|
|
118
143
|
|
|
119
|
-
|
|
144
|
+
To start your journey with **Comments plugin** you must first setup it using the dedicated Settings page (`v2.0.3` and newer) or for any version, put your configuration in `config/plugins.js`. Anyway we're recommending the click-through option where your configuration is going to be properly validated.
|
|
145
|
+
|
|
146
|
+
### In `v2.0.3` and newer
|
|
120
147
|
|
|
121
148
|
Version `2.0.3` introduce the intuitive **Settings** page which you can easly access via `Strapi Settings -> Section: Comments Plugin -> Configuration`. On dedicated page you will be able to setup all crucial properties which drives the plugin and customize each individual collection for which **Comments plugin** should be enabled.
|
|
122
149
|
|
|
150
|
+
On the dedicated page, you will be able to set up all crucial properties which drive the plugin and customize each individual collection for which **Comments plugin** should be enabled.
|
|
151
|
+
|
|
152
|
+
<div style="margin: 20px 0" align="center">
|
|
153
|
+
<img style="width: 100%; height: auto;" src="public/assets/configuration.png" alt="Plugin configuration" />
|
|
154
|
+
</div>
|
|
155
|
+
|
|
123
156
|
> _Note_
|
|
124
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.
|
|
125
158
|
|
|
126
|
-
### In `v2.0.2` and older + default configuration state for `v2.0.3` and
|
|
159
|
+
### In `v2.0.2` and older + default configuration state for `v2.0.3` and newer
|
|
127
160
|
|
|
128
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.
|
|
129
162
|
|
|
@@ -154,6 +187,7 @@ module.exports = ({ env }) => ({
|
|
|
154
187
|
|
|
155
188
|
### Properties
|
|
156
189
|
|
|
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.
|
|
157
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`.
|
|
158
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.
|
|
159
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.
|
|
@@ -276,6 +310,7 @@ Return a hierarchical tree structure of comments for specified instance of Conte
|
|
|
276
310
|
|
|
277
311
|
#### Strapi REST API properties support:
|
|
278
312
|
|
|
313
|
+
- [field selection](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#field-selection)
|
|
279
314
|
- [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
|
|
280
315
|
|
|
281
316
|
### Get Comments (flat structure)
|
|
@@ -317,6 +352,7 @@ Return a flat structure of comments for specified instance of Content Type like
|
|
|
317
352
|
#### Strapi REST API properties support:
|
|
318
353
|
|
|
319
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)
|
|
320
356
|
- [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
|
|
321
357
|
- [pagination](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#pagination)
|
|
322
358
|
|
|
@@ -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;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Entity Details
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
|
|
9
|
+
import React from "react";
|
|
10
|
+
import PropTypes from "prop-types";
|
|
11
|
+
import { Button } from "@strapi/design-system/Button";
|
|
12
|
+
import { Dialog, DialogBody, DialogFooter } from "@strapi/design-system/Dialog";
|
|
13
|
+
import { Flex } from "@strapi/design-system/Flex";
|
|
14
|
+
import { Stack } from "@strapi/design-system/Stack";
|
|
15
|
+
import { Typography } from "@strapi/design-system/Typography";
|
|
16
|
+
import { ExclamationMarkCircle, Check } from "@strapi/icons";
|
|
17
|
+
import { getMessage } from "../../utils";
|
|
18
|
+
|
|
19
|
+
const ConfirmationDialog = ({
|
|
20
|
+
isVisible = false,
|
|
21
|
+
isActionAsync = false,
|
|
22
|
+
children,
|
|
23
|
+
onConfirm,
|
|
24
|
+
onCancel,
|
|
25
|
+
header,
|
|
26
|
+
labelCancel,
|
|
27
|
+
labelConfirm,
|
|
28
|
+
iconConfirm,
|
|
29
|
+
}) => (
|
|
30
|
+
<Dialog
|
|
31
|
+
onClose={onCancel}
|
|
32
|
+
title={
|
|
33
|
+
header ||
|
|
34
|
+
getMessage("compontents.confirmation.dialog.header", "Confirmation")
|
|
35
|
+
}
|
|
36
|
+
isOpen={isVisible}
|
|
37
|
+
>
|
|
38
|
+
<DialogBody icon={<ExclamationMarkCircle />}>
|
|
39
|
+
<Stack size={2}>
|
|
40
|
+
<Flex justifyContent="center">
|
|
41
|
+
<Typography id="dialog-confirm-description">
|
|
42
|
+
{children ||
|
|
43
|
+
getMessage("compontents.confirmation.dialog.description")}
|
|
44
|
+
</Typography>
|
|
45
|
+
</Flex>
|
|
46
|
+
</Stack>
|
|
47
|
+
</DialogBody>
|
|
48
|
+
<DialogFooter
|
|
49
|
+
startAction={
|
|
50
|
+
<Button onClick={onCancel} variant="tertiary" disabled={isActionAsync}>
|
|
51
|
+
{labelCancel ||
|
|
52
|
+
getMessage(
|
|
53
|
+
"compontents.confirmation.dialog.button.cancel",
|
|
54
|
+
"Cancel"
|
|
55
|
+
)}
|
|
56
|
+
</Button>
|
|
57
|
+
}
|
|
58
|
+
endAction={
|
|
59
|
+
<Button
|
|
60
|
+
onClick={onConfirm}
|
|
61
|
+
variant="danger-light"
|
|
62
|
+
startIcon={iconConfirm || <Check />}
|
|
63
|
+
disabled={isActionAsync}
|
|
64
|
+
>
|
|
65
|
+
{labelConfirm ||
|
|
66
|
+
getMessage(
|
|
67
|
+
"compontents.confirmation.dialog.button.confirm",
|
|
68
|
+
"Confirm"
|
|
69
|
+
)}
|
|
70
|
+
</Button>
|
|
71
|
+
}
|
|
72
|
+
/>
|
|
73
|
+
</Dialog>
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
ConfirmationDialog.propTypes = {
|
|
77
|
+
isVisible: PropTypes.bool,
|
|
78
|
+
isActionAsync: PropTypes.bool,
|
|
79
|
+
children: PropTypes.array.isRequired,
|
|
80
|
+
header: PropTypes.string,
|
|
81
|
+
labelCancel: PropTypes.string,
|
|
82
|
+
labelConfirm: PropTypes.string,
|
|
83
|
+
iconConfirm: PropTypes.object,
|
|
84
|
+
onConfirm: PropTypes.func.isRequired,
|
|
85
|
+
onCancel: PropTypes.func.isRequired,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export default ConfirmationDialog;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Entity Details
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
|
|
9
|
+
import React from "react";
|
|
10
|
+
import PropTypes from "prop-types";
|
|
11
|
+
import { isNil } from "lodash";
|
|
12
|
+
import { Box } from "@strapi/design-system/Box";
|
|
13
|
+
import { Status } from "@strapi/design-system/Status";
|
|
14
|
+
import { Typography } from "@strapi/design-system/Typography";
|
|
15
|
+
import { getMessage } from "../../utils";
|
|
16
|
+
|
|
17
|
+
const DiscussionStatus = ({ blocked, blockedThread }) => {
|
|
18
|
+
let variant = "success";
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<Box styles={{ marginBottom: 10 }}>
|
|
22
|
+
<Status variant={variant}>
|
|
23
|
+
<Typography>
|
|
24
|
+
{getMessage("page.details.panel.status", "Discussion is")}{" "}
|
|
25
|
+
<Typography fontWeight="bold">
|
|
26
|
+
{getMessage("page.details.panel.open", "OPEN")}{" "}
|
|
27
|
+
</Typography>
|
|
28
|
+
</Typography>
|
|
29
|
+
</Status>
|
|
30
|
+
</Box>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
DiscussionStatus.propTypes = {};
|
|
35
|
+
|
|
36
|
+
export default DiscussionStatus;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Entity Details
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
|
|
9
|
+
import React from "react";
|
|
10
|
+
import PropTypes from "prop-types";
|
|
11
|
+
import { isNil } from "lodash";
|
|
12
|
+
import { Box } from "@strapi/design-system/Box";
|
|
13
|
+
import { Flex } from "@strapi/design-system/Flex";
|
|
14
|
+
import { Link } from "@strapi/design-system/Link";
|
|
15
|
+
import { Typography } from "@strapi/design-system/Typography";
|
|
16
|
+
import { ArrowUp } from "@strapi/icons";
|
|
17
|
+
import DiscussionThreadItem from "../DiscussionThreadItem";
|
|
18
|
+
import { getMessage, getUrl } from "../../utils";
|
|
19
|
+
import LoadingIndicatorOverlay from "../LoadingIndicatorOverlay";
|
|
20
|
+
import { LoadingIndicatorContainer } from "../LoadingIndicatorOverlay/styles";
|
|
21
|
+
|
|
22
|
+
const DiscussionThread = ({
|
|
23
|
+
level = [],
|
|
24
|
+
selected = {},
|
|
25
|
+
allowedActions,
|
|
26
|
+
isReloading,
|
|
27
|
+
}) => {
|
|
28
|
+
const rootThread = selected?.threadOf;
|
|
29
|
+
return (
|
|
30
|
+
<LoadingIndicatorContainer as={Box} padding={4}>
|
|
31
|
+
{isReloading && <LoadingIndicatorOverlay />}
|
|
32
|
+
<Flex
|
|
33
|
+
as={Box}
|
|
34
|
+
direction="row"
|
|
35
|
+
justifyContent="space-between"
|
|
36
|
+
marginBottom={2}
|
|
37
|
+
>
|
|
38
|
+
<Typography
|
|
39
|
+
variant="delta"
|
|
40
|
+
textColor="neutral800"
|
|
41
|
+
id="discussion-thread"
|
|
42
|
+
>
|
|
43
|
+
{getMessage("page.details.panel.discussion", "Discussion")}
|
|
44
|
+
</Typography>
|
|
45
|
+
{rootThread && (
|
|
46
|
+
<Link
|
|
47
|
+
to={getUrl(`discover/${rootThread.id}`)}
|
|
48
|
+
startIcon={<ArrowUp />}
|
|
49
|
+
>
|
|
50
|
+
{getMessage("page.details.panel.discussion.nav.back")}
|
|
51
|
+
</Link>
|
|
52
|
+
)}
|
|
53
|
+
</Flex>
|
|
54
|
+
<Flex as="ul" direction="column" alignItems="flex-start">
|
|
55
|
+
{rootThread && (
|
|
56
|
+
<DiscussionThreadItem
|
|
57
|
+
{...rootThread}
|
|
58
|
+
allowedActions={allowedActions}
|
|
59
|
+
isThreadAuthor
|
|
60
|
+
root
|
|
61
|
+
pinned
|
|
62
|
+
/>
|
|
63
|
+
)}
|
|
64
|
+
{level.map((item) => {
|
|
65
|
+
const isSelected = selected.id === item.id;
|
|
66
|
+
const isThreadAuthor =
|
|
67
|
+
!isNil(selected?.threadOf?.author?.id) &&
|
|
68
|
+
selected?.threadOf?.author?.id === item?.author?.id;
|
|
69
|
+
return (
|
|
70
|
+
<DiscussionThreadItem
|
|
71
|
+
key={`comment-${item.id}`}
|
|
72
|
+
{...item}
|
|
73
|
+
allowedActions={allowedActions}
|
|
74
|
+
root={isNil(rootThread)}
|
|
75
|
+
blockedThread={rootThread?.blockedThread || item.blockedThread}
|
|
76
|
+
isSelected={isSelected}
|
|
77
|
+
isThreadAuthor={isThreadAuthor}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
80
|
+
})}
|
|
81
|
+
</Flex>
|
|
82
|
+
</LoadingIndicatorContainer>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
DiscussionThread.propTypes = {
|
|
87
|
+
level: PropTypes.array.isRequired,
|
|
88
|
+
selected: PropTypes.object.isRequired,
|
|
89
|
+
allowedActions: PropTypes.shape({
|
|
90
|
+
canModerate: PropTypes.bool,
|
|
91
|
+
canAccessReports: PropTypes.bool,
|
|
92
|
+
canReviewReports: PropTypes.bool,
|
|
93
|
+
}),
|
|
94
|
+
isReloading: PropTypes.bool,
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
export default DiscussionThread;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Discussion thread - Item
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
|
|
9
|
+
import React from "react";
|
|
10
|
+
import PropTypes from "prop-types";
|
|
11
|
+
import { Box } from "@strapi/design-system/Box";
|
|
12
|
+
import { Flex } from "@strapi/design-system/Flex";
|
|
13
|
+
import { Typography } from "@strapi/design-system/Typography";
|
|
14
|
+
import DiscussionThreadItemFooter from "../DiscussionThreadItemFooter";
|
|
15
|
+
import DiscussionThreadItemActions from "../DiscussionThreadItemActions";
|
|
16
|
+
import {
|
|
17
|
+
DiscussionThreadItemContainer,
|
|
18
|
+
DiscussionThreadFullsize,
|
|
19
|
+
DiscussionThreadItemContent,
|
|
20
|
+
} from "./styles";
|
|
21
|
+
|
|
22
|
+
const DiscussionThreadItem = (props) => {
|
|
23
|
+
const { as = "li", isSelected, content, root, preview, pinned } = props;
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<DiscussionThreadFullsize as={as} marginBottom={preview ? 4 : 0}>
|
|
27
|
+
<DiscussionThreadItemContainer
|
|
28
|
+
as={Flex}
|
|
29
|
+
direction="column"
|
|
30
|
+
alignItems="flex-start"
|
|
31
|
+
hasRadius
|
|
32
|
+
background={isSelected ? "neutral100" : null}
|
|
33
|
+
paddingLeft={2}
|
|
34
|
+
paddingRight={2}
|
|
35
|
+
paddingTop={4}
|
|
36
|
+
paddingBottom={4}
|
|
37
|
+
>
|
|
38
|
+
<DiscussionThreadItemContent
|
|
39
|
+
as={Flex}
|
|
40
|
+
paddingBottom={2}
|
|
41
|
+
direction="row"
|
|
42
|
+
>
|
|
43
|
+
<Box as={Flex} grow={1} alignItems="center" marginTop="6px">
|
|
44
|
+
<Typography variant="omega" textColor="neutral800">
|
|
45
|
+
{content}
|
|
46
|
+
</Typography>
|
|
47
|
+
</Box>
|
|
48
|
+
{!preview && (
|
|
49
|
+
<DiscussionThreadItemActions
|
|
50
|
+
{...props}
|
|
51
|
+
root={root || pinned}
|
|
52
|
+
preview={preview}
|
|
53
|
+
/>
|
|
54
|
+
)}
|
|
55
|
+
</DiscussionThreadItemContent>
|
|
56
|
+
<DiscussionThreadItemFooter {...props} />
|
|
57
|
+
</DiscussionThreadItemContainer>
|
|
58
|
+
</DiscussionThreadFullsize>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
DiscussionThreadItem.propTypes = {
|
|
63
|
+
content: PropTypes.string.isRequired,
|
|
64
|
+
allowedActions: PropTypes.shape({
|
|
65
|
+
canModerate: PropTypes.bool,
|
|
66
|
+
canAccessReports: PropTypes.bool,
|
|
67
|
+
canReviewReports: PropTypes.bool,
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export default DiscussionThreadItem;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { Box } from "@strapi/design-system/Box";
|
|
5
|
+
|
|
6
|
+
export const DiscussionThreadFullsize = styled(Box)`
|
|
7
|
+
width: 100%;
|
|
8
|
+
`;
|
|
9
|
+
export const DiscussionThreadItemContent = styled(DiscussionThreadFullsize)`
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
export const DiscussionThreadItemContainer = styled(DiscussionThreadFullsize)`
|
|
14
|
+
align-items: flex-start;
|
|
15
|
+
`;
|