通用评论

AvatarHoverCard.js 3.6KB

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