通用评论

1
  1. {"version":3,"sources":["../src/App.js"],"names":["App","props","state","loading","oss","list","page","total","isNoMoreComment","initDone","locale","editModalVisible","action","replyId","commentId","userId","content","replyPage","emojiList","handleChangeLoading","bind","sCreateComment","sUpdateComment","sDeleteComment","sCommentFavor","sCreateReply","sDeleteReply","errorHandler","sGetComment","sReplyFavor","sGetReply","sUpdateReply","sOssSts","handleEdit","handleClose","axios","defaults","withCredentials","token","headers","common","loadLocales","loadEmoji","currentLocale","locales","cookieLang","Cookies","get","intl","determineLocale","urlLocaleKey","SUPPORT_LOCALES","find","item","value","version","require","hash","languageURL","LANGUAGE_LINK","fetch","then","response","status","Error","json","init","data","setState","emojiAPI","emojiMap","forEach","name","url","window","sessionStorage","setItem","JSON","stringify","catch","replies","reply","msg","info","showError","error","onError","localResponse","LOCALES_RESPONSE","ERROR_DEFAULT","key","pageType","API","type","businessId","limit","newList","oldList","filter","o","isTemporary","concat","scrollTo","onCountChange","finally","map","id","reply_count","reply_page","isNoMoreReply","cb","businessUserId","method","business_id","business_user_id","showAlertComment","success","unshift","onCommentFail","res","deletedItem","onDelete","COMMENT_TYPE","COMMENT","it","onUpdateComment","showAlertReply","comment_id","push","REPLY","i","favored","showAlertFavor","favor_count","r","showEditor","children","showList","marginTop","user_id","preRenderValue","Component","propTypes","PropTypes","number","isRequired","string","bool","func","onPageChange","onGetMoreBtnClick","defaultProps","LOGINLINK","process","env","RUN_MOD","showEdit","LIMIT","onBeforeUpdateComment","v","Editor","RenderText"],"mappings":"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","file":"App.js","sourcesContent":["import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { message } from \"antd\";\nimport axios from \"axios\";\nimport Cookies from \"js-cookie\";\nimport intl from \"react-intl-universal\";\nimport { ERROR_DEFAULT, LIMIT, COMMENT_TYPE, LANGUAGE_LINK } from \"./constant\";\nimport { CommentContext } from \"./Comment\";\nimport { isFunction } from \"./helper\";\nimport CommentInput from \"./components/CommentInput\";\nimport CommentList from \"./components/CommentList\";\nimport Editor from \"./components/Editor\";\nimport RenderText from \"./components/RenderText\";\nimport EditComment from \"./components/EditComment/EditComment\";\nimport { SUPPORT_LOCALES, LOCALES_RESPONSE } from \"./lang\";\nimport \"./App.css\";\n\nclass App extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: {},\n // oss 配置\n oss: {},\n // 评论数据\n list: [],\n page: 1,\n total: 0,\n // 是否没有更多评论了\n isNoMoreComment: false,\n initDone: false,\n locale: \"zh-CN\",\n editModalVisible: false,\n action: \"\",\n replyId: \"\",\n commentId: \"\",\n userId: \"\",\n content: \"\",\n replyPage: 1,\n emojiList: []\n };\n this.handleChangeLoading = this.handleChangeLoading.bind(this);\n this.sCreateComment = this.sCreateComment.bind(this);\n this.sUpdateComment = this.sUpdateComment.bind(this);\n this.sDeleteComment = this.sDeleteComment.bind(this);\n this.sCommentFavor = this.sCommentFavor.bind(this);\n this.sCreateReply = this.sCreateReply.bind(this);\n this.sDeleteReply = this.sDeleteReply.bind(this);\n this.errorHandler = this.errorHandler.bind(this);\n this.sGetComment = this.sGetComment.bind(this);\n this.sReplyFavor = this.sReplyFavor.bind(this);\n this.sGetReply = this.sGetReply.bind(this);\n this.sUpdateReply = this.sUpdateReply.bind(this);\n this.sOssSts = this.sOssSts.bind(this);\n this.handleEdit = this.handleEdit.bind(this);\n this.handleClose = this.handleClose.bind(this);\n }\n\n componentWillMount() {\n this.axios = axios;\n this.axios.defaults.withCredentials = true;\n if (this.props.token) {\n this.axios.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${this.props.token}`;\n }\n }\n\n componentDidMount() {\n this.loadLocales();\n this.loadEmoji();\n }\n\n /**\n * 加载语言包\n * 只能根据url或者传入的props来确定加载哪个语言包\n * 优先级:传入的props > url\n */\n loadLocales() {\n let { locales: currentLocale } = this.props;\n const cookieLang = Cookies.get(\"lnk_lang\");\n if (!currentLocale) {\n currentLocale =\n cookieLang ||\n intl.determineLocale({\n urlLocaleKey: \"lang\"\n });\n }\n currentLocale = SUPPORT_LOCALES.find(item => item.value === currentLocale)\n ? currentLocale\n : \"zh-CN\";\n const version = require(\"./version.json\").hash;\n // 使用绝对路径\n const languageURL = `${LANGUAGE_LINK}/${currentLocale}.json?v=${version}`;\n return fetch(languageURL)\n .then(response => {\n if (response.status >= 400) {\n throw new Error(\"Bad response from server\");\n }\n return response.json();\n })\n .then(data => {\n // console.log('data: ', data);\n intl\n .init({\n currentLocale,\n locales: {\n [currentLocale]: data\n }\n })\n .then(() => {\n this.setState({ initDone: true, locale: currentLocale });\n });\n });\n }\n\n /**\n * 加载表情包\n */\n loadEmoji() {\n this.axios\n .get(`${this.props.emojiAPI}/emoticons`)\n .then(response => {\n const emojiMap = {};\n response.data.list.forEach(item => {\n emojiMap[item.name] = item.url;\n });\n window.sessionStorage.setItem(\"emojiMap\", JSON.stringify(emojiMap));\n this.setState({ emojiList: response.data.list });\n })\n .catch(this.errorHandler);\n }\n\n handleEdit({ replyId, commentId, userId, content, replyPage }) {\n this.setState({\n editModalVisible: true,\n action: content.replies\n ? \"comment\"\n : content.reply\n ? \"replyToReply\"\n : \"reply\",\n replyId,\n commentId,\n userId,\n content,\n replyPage\n });\n }\n\n handleClose() {\n this.setState({\n editModalVisible: false\n });\n }\n\n error(msg, info = {}) {\n if (this.props.showError) {\n message.error(msg);\n }\n if (this.props.onError) {\n this.props.onError(msg, info);\n }\n }\n\n errorHandler(error) {\n const { locale } = this.state;\n const localResponse = LOCALES_RESPONSE[locale];\n if (error.response && error.response.data && error.response.data.msg) {\n this.error(localResponse[error.response.data.msg] || ERROR_DEFAULT, {\n response: error.response\n });\n return;\n }\n this.error(localResponse[error.response.data.msg] || ERROR_DEFAULT, {\n response: error.response\n });\n }\n\n /**\n * 改变 loading 状态\n * @param {string} key key\n * @param {string} value value\n */\n handleChangeLoading(key, value) {\n const { loading } = this.state;\n loading[key] = value;\n this.setState({ loading });\n }\n\n /**\n * 获取评论列表\n */\n sGetComment({ page = 1 } = {}) {\n const { pageType } = this.props;\n this.handleChangeLoading(\"sGetComment\", true);\n const { API, type, businessId, limit } = this.props;\n this.axios\n .get(\n `${API}/comments?type=${type}&business_id=${businessId}&page=${page}&limit=${limit}`\n )\n .then(response => {\n const { list, page, total } = response.data;\n if (list) {\n let newList = list;\n let { list: oldList } = this.state;\n if (pageType === \"more\") {\n if (page > 1) {\n // 删除临时数据\n oldList = oldList.filter(o => !o.isTemporary);\n newList = oldList.concat(newList);\n }\n } else if (pageType === \"pagination\") {\n // TODO 滚动到顶部\n window.scrollTo(0, 0);\n }\n\n this.setState({\n list: newList,\n page,\n total\n });\n this.props.onCountChange(total);\n } else {\n message.info(intl.get(\"message.noMoreComment\"));\n this.setState({\n isNoMoreComment: true\n });\n }\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sGetComment\", false);\n });\n }\n\n /**\n * 获取更多回复\n */\n sGetReply({ commentId, page = 1 } = {}) {\n this.handleChangeLoading(\"sGetReply\", true);\n const { API, limit } = this.props;\n this.axios\n .get(`${API}/replies?comment_id=${commentId}&page=${page}&limit=${limit}`)\n .then(response => {\n if (!response.data.list) {\n message.info(intl.get(\"message.noMoreData\"));\n }\n const list = this.state.list.map(item => {\n if (item.id === commentId) {\n if (!item.replies) item.replies = [];\n if (response.data.list) {\n if (page === 1) {\n // 如果当前页数为第一页,则清空当前所有的 replies\n // 并将获取到的 replies 存放在 state\n item.replies = response.data.list;\n } else {\n item.replies = item.replies\n .filter(o => !o.isTemporary)\n .concat(response.data.list);\n // 如果当前页数非第一页,则合并 replies\n }\n item.reply_count = response.data.total;\n item.reply_page = response.data.page;\n } else {\n item.isNoMoreReply = true;\n }\n }\n return item;\n });\n this.setState({ list });\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sGetReply\", false);\n });\n }\n\n /**\n * 添加评论\n * @param {object} {content} comment content\n */\n sCreateComment({ content } = {}, cb) {\n if (!content) return this.error(intl.get(\"message.notNull\"));\n this.handleChangeLoading(\"sCreateComment\", true);\n const { API, type, businessId, businessUserId } = this.props;\n this.axios(`${API}/comments`, {\n method: \"post\",\n data: {\n type,\n business_id: businessId,\n business_user_id: businessUserId,\n content\n },\n withCredentials: true\n })\n .then(response => {\n if (this.props.showAlertComment) {\n message.success(intl.get(\"message.success\"));\n }\n if (isFunction(cb)) cb(response.data);\n // 将数据写入到 list 中\n // 临时插入\n // 等到获取数据之后,删除临时数据\n const { list, total } = this.state;\n list.unshift({\n ...response.data,\n replies: [],\n isTemporary: true // 临时的数据\n });\n this.setState({ list, total: total + 1 });\n this.props.onCountChange(total + 1);\n })\n .catch(error => {\n this.props.onCommentFail(error.response.status);\n this.errorHandler(error);\n })\n .finally(() => {\n this.handleChangeLoading(\"sCreateComment\", false);\n });\n }\n\n /**\n * 删除评论\n */\n sDeleteComment(commentId) {\n this.handleChangeLoading(\"sDeleteComment\", true);\n const { API } = this.props;\n this.axios(`${API}/comments/${commentId}`, {\n method: \"delete\",\n withCredentials: true\n })\n .then(() => {\n const { list, total } = this.state;\n const res = list.filter(item => item.id !== commentId);\n const deletedItem = list.find(item => item.id === commentId);\n this.setState({ list: res, total: total - 1 });\n this.props.onDelete(COMMENT_TYPE.COMMENT, deletedItem);\n this.props.onCountChange(total - 1);\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sDeleteComment\", false);\n });\n }\n /**\n * 更新评论\n * @param {object} {content} comment content\n */\n sUpdateComment({ commentId, content }) {\n this.handleChangeLoading(\"sUpdateComment\", true);\n const { API } = this.props;\n this.axios(`${API}/comments/${commentId}`, {\n method: \"post\",\n data: {\n content\n },\n withCredentials: true\n })\n .then(() => {\n let { list } = this.state;\n list = list.map(it => {\n if (it.id === commentId) {\n return {\n ...it,\n content\n };\n }\n return it;\n });\n this.props.onUpdateComment(\"comment\");\n this.setState({ list });\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sUpdateComment\", false);\n });\n }\n /**\n * 添加回复\n * 回复评论/回复回复\n * @param {object} data { comment_id, content, [reply_id] }\n */\n sCreateReply(data, cb) {\n if (!data.content) return this.error(intl.get(\"message.replyNoNull\"));\n this.handleChangeLoading(\"sCreateReply\", true);\n const { API } = this.props;\n this.axios(`${API}/replies`, {\n method: \"post\",\n data,\n withCredentials: true\n })\n .then(response => {\n if (this.props.showAlertReply) {\n message.success(intl.get(\"message.replySuccess\"));\n }\n if (isFunction(cb)) cb(response.data);\n // 将数据写入到 list 中\n // 临时插入\n // 等到获取数据之后,删除临时数据\n const list = this.state.list.map(item => {\n if (item.id === data.comment_id) {\n if (!item.replies) item.replies = [];\n item.replies.push({\n ...response.data,\n isTemporary: true // 临时的数据\n });\n item.reply_count += 1;\n }\n return item;\n });\n this.setState({ list });\n })\n .catch(error => {\n this.props.onCommentFail(error.response.status);\n this.errorHandler(error);\n })\n .finally(() => {\n this.handleChangeLoading(\"sCreateReply\", false);\n });\n }\n\n /**\n * 删除回复\n * @param {*} replyId\n * @param {*} commentId\n */\n sDeleteReply(replyId, commentId) {\n this.handleChangeLoading(\"sDeleteReply\", true);\n const { API } = this.props;\n this.axios(`${API}/replies/${replyId}?CommentID=${commentId}`, {\n method: \"delete\",\n withCredentials: true\n })\n .then(() => {\n let deletedItem = null;\n const list = this.state.list.map(item => {\n if (item.id === commentId) {\n const replies = item.replies.filter(item => item.id !== replyId);\n deletedItem = item.replies.find(item => item.id === replyId);\n item.replies = replies;\n item.reply_count -= 1;\n }\n return item;\n });\n this.setState({ list });\n this.props.onDelete(COMMENT_TYPE.REPLY, deletedItem);\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sDeleteReply\", false);\n });\n }\n /**\n * 更新回复\n * 回复评论/回复回复\n * @param {object} data { comment_id, content, reply_id }\n */\n sUpdateReply({ commentId, content, replyId, replyPage }) {\n this.handleChangeLoading(\"sUpdateReply\", true);\n const { API } = this.props;\n this.axios(`${API}/replies/${replyId}`, {\n method: \"post\",\n data: {\n comment_id: commentId,\n content\n },\n withCredentials: true\n })\n .then(() => {\n for (let i = 1; i <= replyPage; i++) {\n this.sGetReply({ commentId, page: i });\n }\n this.props.onUpdateComment(\"reply\");\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sUpdateReply\", false);\n });\n }\n /**\n * 评论 点赞/取消点赞\n * @param {string} commentId { commentId }\n * @param {boolean} favored 是否已经点过赞\n */\n sCommentFavor(commentId, favored) {\n this.handleChangeLoading(\"sCommentFavor\", true);\n const { API } = this.props;\n this.axios(`${API}/comments/${commentId}/favor`, {\n method: favored ? \"delete\" : \"put\",\n withCredentials: true\n })\n .then(response => {\n if (this.props.showAlertFavor) {\n message.success(\n favored\n ? intl.get(\"message.cancelLickSuccess\")\n : intl.get(\"message.likeSuccess\")\n );\n }\n // 更新 list 中的该项数据的 favored\n const list = this.state.list.map(item => {\n if (item.id === commentId) {\n item.favored = !favored;\n item.favor_count += favored ? -1 : 1;\n }\n return item;\n });\n this.setState({ list });\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sCommentFavor\", false);\n });\n }\n\n /**\n * 回复 点赞/取消点赞\n * @param {string} replyId replyId\n * @param {string} commentId commentId\n * @param {boolean} favored 是否已经点过赞\n */\n sReplyFavor(replyId, commentId, favored) {\n this.handleChangeLoading(\"sReplyFavor\", true);\n const { API } = this.props;\n this.axios(`${API}/replies/${replyId}/favor`, {\n method: favored ? \"delete\" : \"put\",\n data: {\n comment_id: commentId\n },\n withCredentials: true\n })\n .then(response => {\n message.success(\n favored\n ? intl.get(\"message.cancelLickSuccess\")\n : intl.get(\"message.likeSuccess\")\n );\n // 更新 list 中的该项数据的 favored\n const list = this.state.list.map(item => {\n if (item.id === commentId) {\n item.replies = item.replies.map(r => {\n if (r.id === replyId) {\n r.favored = !favored;\n // r.favor_count = response.data.favor_count;\n // 点赞数 +1,而不是使用后端返回的点赞数\n // 不然如果返回的不是增加 1,用户可能以为程序错误\n r.favor_count += favored ? -1 : 1;\n }\n return r;\n });\n }\n return item;\n });\n this.setState({ list });\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sReplyFavor\", false);\n });\n }\n\n /**\n * 获取 OSS 上传的参数\n */\n sOssSts() {\n this.handleChangeLoading(\"sOssSts\", true);\n const { API } = this.props;\n this.axios\n .get(`${API}/oss/sts`)\n .then(response => {\n this.setState({ oss: { ...response.data } });\n })\n .catch(this.errorHandler)\n .finally(() => {\n this.handleChangeLoading(\"sOssSts\", false);\n });\n }\n\n render() {\n // 添加到 Context 的数据\n const value = {\n ...this.state,\n ...this.props,\n sCreateComment: this.sCreateComment,\n sGetComment: this.sGetComment,\n sCommentFavor: this.sCommentFavor,\n sReplyFavor: this.sReplyFavor,\n sCreateReply: this.sCreateReply,\n sGetReply: this.sGetReply,\n sOssSts: this.sOssSts,\n sDeleteComment: this.sDeleteComment,\n sDeleteReply: this.sDeleteReply,\n sUpdateReply: this.sUpdateReply,\n sUpdateComment: this.sUpdateComment,\n handleEdit: this.handleEdit\n };\n\n return (\n this.state.initDone && (\n <CommentContext.Provider value={value}>\n <div className=\"comment\">\n {this.props.showEditor && (\n <CommentInput content={this.props.children} />\n )}\n {this.props.showList && (\n <div style={{ marginTop: 20 }}>\n <CommentList />\n </div>\n )}\n </div>\n {this.state.editModalVisible && (\n <EditComment\n visible={this.state.editModalVisible}\n action={this.state.action}\n replyId={this.state.replyId}\n replyPage={this.state.replyPage}\n commentId={this.state.commentId}\n userId={this.state.content.user_id}\n content={this.state.content}\n handleClose={this.handleClose}\n preRenderValue={this.props.preRenderValue}\n />\n )}\n </CommentContext.Provider>\n )\n );\n }\n}\n\nApp.propTypes = {\n type: PropTypes.number.isRequired, // 评论的 type\n businessId: PropTypes.string.isRequired, // 评论的 business_id\n businessUserId: PropTypes.number,\n API: PropTypes.string, // 评论的 API 前缀\n showList: PropTypes.bool, // 是否显示评论列表\n showEditor: PropTypes.bool, // 是否显示评论输入框\n showAlertComment: PropTypes.bool, // 评论成功之后,是否通过 Antd 的 Message 组件进行提示\n showAlertReply: PropTypes.bool, // 回复成功之后,是否通过 Antd 的 Message 组件进行提示\n showAlertFavor: PropTypes.bool, // 点赞/取消点赞成功之后,是否通过 Antd 的 Message 组件进行提示\n showError: PropTypes.bool, // 是否使用Antd的Message组件提示错误信息\n onError: PropTypes.func, // 错误回调, 出错了会被调用\n userId: PropTypes.number, // 用户id, comment内部不维护用户id, 调用组件时传递过来, 目前用于判断是否显示删除按钮\n pageType: PropTypes.string, // 分页类型\n page: PropTypes.number, // 页码\n limit: PropTypes.number, // 一次加载评论数量\n onPageChange: PropTypes.func, // 页码变化回调\n onGetMoreBtnClick: PropTypes.func, // 点击查看更多按钮回调\n onDelete: PropTypes.func,\n onUpdateComment: PropTypes.func,\n locales: PropTypes.string, // 传入的语言环境, en-US/zh-CN\n onCountChange: PropTypes.func, // 评论数量变更时的回调\n onCommentFail: PropTypes.func, // 评论失败时的回调\n preRenderValue: PropTypes.func // 编辑器渲染前对值需要做的工作\n};\n\nApp.defaultProps = {\n businessUserId: 0,\n API: \"//api.links123.net/comment/v1\",\n emojiAPI: \"//api.links123.net/link/v1\",\n LOGINLINK:\n process.env.RUN_MOD === \"production\"\n ? \"https://passport.links123.com/login\"\n : \"http://test.links123.net:5050/login\",\n showList: true,\n showEditor: true,\n showAlertComment: false,\n showAlertReply: false,\n showAlertFavor: false,\n showError: true,\n showEdit: false,\n pageType: \"more\",\n limit: LIMIT,\n onGetMoreBtnClick: () => {},\n onPageChange: page => {},\n onDelete: () => {},\n onUpdateComment: () => {},\n onBeforeUpdateComment: () => {},\n onCountChange: () => {},\n onCommentFail: () => {},\n preRenderValue: v => v\n};\n\nexport { Editor, RenderText };\n\nexport default App;\n"]}