UNPKG

@botonic/react

Version:

Build Chatbots using React

52 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageFeedback = void 0; const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const thumbs_down_svg_1 = tslib_1.__importDefault(require("../../assets/thumbs-down.svg")); const thumbs_up_svg_1 = tslib_1.__importDefault(require("../../assets/thumbs-up.svg")); const util_1 = require("../../util"); const context_1 = require("../../webchat/context"); const tracking_1 = require("../../webchat/tracking"); const styles_1 = require("./styles"); const MessageFeedback = ({ botInteractionId, inferenceId, messageId, }) => { const { webchatState, updateMessage } = (0, react_1.useContext)(context_1.WebchatContext); const { trackKnowledgebaseFeedback } = (0, tracking_1.useTracking)(); const [className, setClassName] = (0, react_1.useState)(''); const [disabled, setDisabled] = (0, react_1.useState)({ positive: false, negative: false, }); const updateMsgWithFeedback = (feedbackEnabled) => { const message = webchatState.messagesJSON.find(message => message.id === messageId); const updatedMsg = Object.assign(Object.assign({}, message), { feedbackEnabled }); updateMessage(updatedMsg); }; (0, react_1.useEffect)(() => { updateMsgWithFeedback(true); }, []); (0, react_1.useEffect)(() => { if (disabled.positive || disabled.negative) { setClassName('clicked'); updateMsgWithFeedback(false); } }, [disabled]); const handleClick = (isUseful) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { if (isUseful) { setDisabled({ positive: false, negative: true }); } else { setDisabled({ positive: true, negative: false }); } yield trackKnowledgebaseFeedback({ messageId, isUseful, botInteractionId, inferenceId, }); }); return ((0, jsx_runtime_1.jsxs)(styles_1.FeedbackMessageContainer, { children: [(0, jsx_runtime_1.jsx)(styles_1.FeedbackButton, Object.assign({ className: className, disabled: disabled.positive, onClick: () => handleClick(true) }, { children: (0, jsx_runtime_1.jsx)("img", { src: (0, util_1.resolveImage)(thumbs_up_svg_1.default) }) })), (0, jsx_runtime_1.jsx)(styles_1.FeedbackButton, Object.assign({ className: className, disabled: disabled.negative, onClick: () => handleClick(false) }, { children: (0, jsx_runtime_1.jsx)("img", { src: (0, util_1.resolveImage)(thumbs_down_svg_1.default) }) }))] })); }; exports.MessageFeedback = MessageFeedback; //# sourceMappingURL=message-feedback.js.map