{"version":3,"file":"js/chunk.58860f57a6cea2f6.js","mappings":"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","sources":["webpack:///./src/components/UserAvatarPopover/index.tsx","webpack:///./src/components/homepage/HomepageRecommendFollow/index.tsx"],"sourcesContent":["import AvatarFoundingMemberIcon from '@/static/imgs/AvatarFoundingMemberIcon.svg';\nimport AvatarSuperMemberIcon from '@/static/imgs/AvatarSuperMemberIcon.svg';\nimport { Button, Popover } from 'antd';\nimport { useEffect, useState } from 'react';\nimport HomepageFollowButton from '../homepage/HomepageFollowButton';\nimport { MEMBER_TYPE } from '../UserTrayAvatar';\n\ntype UserAvatarPopoverProps = {\n  user: API.User.UserOverviewForGet;\n  toggleFollowStatus: (user: API.User.UserOverviewForGet) => void;\n  loggedUid?: string;\n  children?: JSX.Element;\n};\n\nconst UserAvatarPopover: React.FC<UserAvatarPopoverProps> = (props) => {\n  const [memberType, setMemberType] = useState<any>(0);\n\n  useEffect(() => {\n    if (props.user.is_founding_vip) {\n      setMemberType(MEMBER_TYPE.FOUNDING_VIP);\n    } else if (props.user.super_vip_status) {\n      switch (props.user.super_vip_status) {\n        case '未开通':\n          setMemberType(MEMBER_TYPE.SUPER_VIP_NONACTIVATED);\n          break;\n        case '生效中':\n          setMemberType(MEMBER_TYPE.SUPER_VIP_ACTIVATED);\n          break;\n        case '已过期':\n          setMemberType(MEMBER_TYPE.SUPER_VIP_EXPRIED);\n          break;\n      }\n    } else if (props.user.is_base_vip) {\n      setMemberType(MEMBER_TYPE.BASE_VIP);\n    } else {\n      setMemberType(MEMBER_TYPE.NOT_CERTIFICATED);\n    }\n  }, [props.user]);\n  const handleJumpToMemberPay = () => {\n    // 跳转会员支付页面\n    window.location.href = '/community/user/vip/categories/';\n  };\n  return (\n    <Popover\n      placement=\"bottomLeft\"\n      title={\n        <>\n          <div className=\"flex items-center text-16px\">\n            <img\n              src={props.user.avatar_url}\n              className=\"h-20px w-20px rounded-full mr-5px\"\n              alt=\"头像\"\n              style={{ objectFit: 'cover' }}\n            />\n            <span className=\"font-500 text-hex-1a263d\">{props.user.name}</span>\n            {memberType === MEMBER_TYPE.SUPER_VIP_ACTIVATED ? (\n              <img\n                className=\"w-20px h-20px ml-10px\"\n                src={AvatarSuperMemberIcon}\n                onClick={handleJumpToMemberPay}\n                title=\"超级会员\"\n              />\n            ) : memberType === MEMBER_TYPE.FOUNDING_VIP ? (\n              <img\n                className=\"w-20px h-20px ml-10px\"\n                src={AvatarFoundingMemberIcon}\n                onClick={handleJumpToMemberPay}\n                title=\"创始会员\"\n              />\n            ) : null}\n          </div>\n        </>\n      }\n      content={\n        <>\n          <div className=\"flex justify-between\">\n            <div className=\"flex flex-col\">\n              <span className=\"text-16px font-500\">\n                {props.user.follow_count || 0}\n              </span>\n              <span className=\"text-hex-86909C text-12px\">关注</span>\n            </div>\n            <div className=\"flex flex-col\">\n              <span className=\"text-16px font-500\">\n                {props.user.follower_count || 0}\n              </span>\n              <span className=\"text-hex-86909C text-12px\">粉丝</span>\n            </div>\n            <div className=\"flex flex-col\">\n              <span className=\"text-16px font-500\">\n                {props.user.create_post_count || 0}\n              </span>\n              <span className=\"text-hex-86909C text-12px\">发帖</span>\n            </div>\n          </div>\n\n          <div className=\"flex justify-between mt-15px\">\n            <HomepageFollowButton\n              user={props.user}\n              toggleFollowStatus={props.toggleFollowStatus}\n              loggedUid={props.loggedUid}\n            />\n            <Button\n              onClick={() => {\n                window.location.href = `/community/user/people/${props.user.uid}`;\n              }}\n            >\n              个人主页\n            </Button>\n          </div>\n        </>\n      }\n      overlayStyle={{ width: 270, paddingTop: 0 }}\n      showArrow={false}\n    >\n      {props.children}\n    </Popover>\n  );\n};\n\nexport default UserAvatarPopover;\n","import * as api from '@/api/user';\nimport HomepageFollowButton from '@/components/homepage/HomepageFollowButton';\nimport UserAvatarPopover from '@/components/UserAvatarPopover';\nimport { useMemoizedFn, useRequest } from 'ahooks';\nimport { message } from 'antd';\n\ntype HomepageFollowItemProps = {\n  user: API.User.RecommendUserForList;\n};\n\nconst HomepageFollowItem: React.FC<HomepageFollowItemProps> = ({ user }) => {\n  const { data: userOverview, mutate: mutateUserOverview } = useRequest(\n    async () =>\n      api.getUserOverview(user.uid, {\n        with_f:\n          'follow_count,follower_count,create_post_count,user_follow_status',\n      }),\n    { refreshDeps: [] },\n  );\n\n  const toggleFollowStatus = useMemoizedFn(async (user) => {\n    if (user.user_follow_status) {\n      await api.unfollow(user.uid);\n      message.success('取消关注成功');\n      mutateUserOverview({\n        ...user,\n        user_follow_status: false,\n        follower_count: user.follower_count - 1,\n      });\n    } else {\n      await api.follow(user.uid);\n      message.success('关注成功');\n      mutateUserOverview({\n        ...user,\n        user_follow_status: true,\n        follower_count: user.follower_count + 1,\n      });\n    }\n  });\n\n  return (\n    <div className=\"flex justify-between items-center\">\n      {userOverview && (\n        <>\n          <UserAvatarPopover\n            user={userOverview}\n            toggleFollowStatus={toggleFollowStatus}\n          >\n            <div className=\"space-x-10px flex items-center\">\n              <img\n                src={user.avatar_url}\n                className=\"w-40px h-40px rounded-20px\"\n                id=\"user-hover\"\n                style={{ objectFit: 'cover' }}\n              />\n              <div className=\"space-y-4px\">\n                <div className=\"text-hex-1D2129\">{user.name}</div>\n              </div>\n            </div>\n          </UserAvatarPopover>\n\n          <HomepageFollowButton\n            user={userOverview}\n            toggleFollowStatus={toggleFollowStatus}\n          />\n        </>\n      )}\n    </div>\n  );\n};\n\nconst HomepageFollow: React.FC = () => {\n  const { data: followList } = useRequest(api.RecommendList);\n\n  return (\n    <div className=\"space-y-16px\">\n      {followList?.map((item) => {\n        return <HomepageFollowItem key={item.uid} user={item} />;\n      })}\n    </div>\n  );\n};\n\nexport default HomepageFollow;\n"],"names":["props","useState","memberType","setMemberType","useEffect","user","is_founding_vip","MEMBER_TYPE","super_vip_status","is_base_vip","handleJumpToMemberPay","window","location","href","placement","title","className","src","avatar_url","alt","style","objectFit","name","AvatarSuperMemberIcon","onClick","AvatarFoundingMemberIcon","content","follow_count","follower_count","create_post_count","toggleFollowStatus","loggedUid","uid","overlayStyle","width","paddingTop","showArrow","children","HomepageFollowItem","useRequest","api","with_f","refreshDeps","userOverview","data","mutateUserOverview","mutate","useMemoizedFn","user_follow_status","message","id","followList","map","item"],"sourceRoot":""}