-
github-automation-metabase authored
backported "fix(sdk): migrate to custom redux context to allow using the sdk on host apps that use redux" (#51414) * step1: add MetabaseReduxProvider and make our hooks + connect fn use it step1: add MetabaseReduxProvider and make our hooks + connect fn use it * step 2: codemod * step 3: manual fixes * step 4: e2e test for sdk --------- Co-authored-by:Nicolò Pretto <info@npretto.com>
github-automation-metabase authored backported "fix(sdk): migrate to custom redux context to allow using the sdk on host apps that use redux" (#51414) * step1: add MetabaseReduxProvider and make our hooks + connect fn use it step1: add MetabaseReduxProvider and make our hooks + connect fn use it * step 2: codemod * step 3: manual fixes * step 4: e2e test for sdk --------- Co-authored-by:Nicolò Pretto <info@npretto.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
QuestionModerationSection.jsx 1.68 KiB
import PropTypes from "prop-types";
import { Fragment } from "react";
import { useEditItemVerificationMutation } from "metabase/api";
import { connect } from "metabase/lib/redux";
import { getIsModerator } from "metabase-enterprise/moderation/selectors";
import { getLatestModerationReview } from "metabase-enterprise/moderation/service";
import { ModerationReviewBanner } from "../ModerationReviewBanner/ModerationReviewBanner";
import { VerifyButton as DefaultVerifyButton } from "./QuestionModerationSection.styled";
const mapStateToProps = (state, props) => ({
isModerator: getIsModerator(state, props),
});
export default connect(mapStateToProps)(QuestionModerationSection);
QuestionModerationSection.VerifyButton = DefaultVerifyButton;
QuestionModerationSection.propTypes = {
question: PropTypes.object.isRequired,
isModerator: PropTypes.bool.isRequired,
reviewBannerClassName: PropTypes.string,
VerifyButton: PropTypes.func,
};
function QuestionModerationSection({
question,
isModerator,
reviewBannerClassName,
}) {
const [editItemVerification] = useEditItemVerificationMutation();
const latestModerationReview = getLatestModerationReview(
question.getModerationReviews(),
);
const onRemoveModerationReview = () => {
const id = question.id();
editItemVerification({
status: null,
moderated_item_id: id,
moderated_item_type: "card",
});
};
return (
<Fragment>
{latestModerationReview && (
<ModerationReviewBanner
className={reviewBannerClassName}
moderationReview={latestModerationReview}
onRemove={isModerator ? onRemoveModerationReview : undefined}
/>
)}
</Fragment>
);
}