通用评论

AvatarHoverCard.js 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import React, { Component } from "react";
  2. import { Row, Col } from "antd";
  3. import intl from "react-intl-universal";
  4. import "./AvatarHoverCard.less";
  5. class AvatarHoverCard extends Component {
  6. constructor(props) {
  7. super(props);
  8. this.state = {
  9. showModal: false
  10. };
  11. }
  12. componentDidMount() {
  13. const isLogin = this.props.currentUser.user_id > 0;
  14. this.props.getUserInfo({
  15. id: this.props.user_id,
  16. noCheckFollowed: !isLogin
  17. });
  18. }
  19. render() {
  20. const { image, user_id, currentUser, userAvaHoverData } = this.props;
  21. const followed =
  22. userAvaHoverData[user_id] && userAvaHoverData[user_id].isFollowed;
  23. return (
  24. <div className="AvatarHoverCard" onClick={e => e.stopPropagation()}>
  25. {/* <Link to={`/bilingual/user/${user_id}`}> */}
  26. <div onClick={() => this.props.userAvaClick(user_id)}>
  27. <Row type="flex" className="rowUser">
  28. <div
  29. className="avatar"
  30. style={{
  31. backgroundImage: `url(${image})`
  32. }}
  33. />
  34. <div className="nickname">
  35. {userAvaHoverData[user_id] && userAvaHoverData[user_id].nickname}
  36. </div>
  37. </Row>
  38. </div>
  39. {/* </Link> */}
  40. <div className="divider" />
  41. <Row type="flex" className="rowNum">
  42. <Col className="colFans">
  43. <div className="count">
  44. {userAvaHoverData[user_id] && userAvaHoverData[user_id].fans}
  45. </div>
  46. <div className="text">
  47. {intl.get("bilingually.fan", {
  48. ext:
  49. userAvaHoverData[user_id] &&
  50. userAvaHoverData[user_id].fans > 1
  51. ? "s"
  52. : ""
  53. })}
  54. </div>
  55. </Col>
  56. <Col className="hdivider" />
  57. <Col className="colFollow">
  58. <div className="count">
  59. {userAvaHoverData[user_id] && userAvaHoverData[user_id].followers}
  60. </div>
  61. <div className="text">
  62. {intl.get("bilingually.follow", {
  63. ext:
  64. userAvaHoverData[user_id] &&
  65. userAvaHoverData[user_id].followers > 1
  66. ? "s"
  67. : ""
  68. })}
  69. </div>
  70. </Col>
  71. </Row>
  72. {currentUser.user_id > 0 && currentUser.user_id !== user_id && (
  73. <Row type="flex" className="rowBtn">
  74. {followed ? (
  75. <div
  76. className="unFollowBtn"
  77. onClick={e => {
  78. e.stopPropagation();
  79. this.props
  80. .unFocus({
  81. id: user_id
  82. })
  83. .then(() => {
  84. this.props.getUserInfo({
  85. id: user_id
  86. });
  87. });
  88. }}
  89. >
  90. {intl.get("bilingually.cancel_follow")}
  91. </div>
  92. ) : (
  93. <div
  94. className="followBtn"
  95. onClick={e => {
  96. e.stopPropagation();
  97. this.props.focus({ id: user_id }).then(() => {
  98. this.props.getUserInfo({
  99. id: user_id
  100. });
  101. });
  102. }}
  103. >
  104. {intl.get("bilingually.follow", { ext: "" })}
  105. </div>
  106. )}
  107. {/* 发私信按钮,暂时隐藏 */}
  108. <div
  109. className={`privateMessageBtn ${
  110. this.props.locale === "en-US" ? "enUs" : ""
  111. }`}
  112. onClick={() => this.props.sendMessage({ id: user_id })}
  113. >
  114. {intl.get("bilingually.im.send_msg")}
  115. </div>
  116. </Row>
  117. )}
  118. </div>
  119. );
  120. }
  121. }
  122. export default AvatarHoverCard;