{"version":3,"file":"js/chunk.f8ab33dbb9dd9be3.js","mappings":"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","sources":["webpack:///./src/components/FeedAvatarHeader/index.tsx","webpack:///./src/components/UserAvatarPopover/index.tsx"],"sourcesContent":["import * as api from '@/api/user';\nimport UserAvatarPopover from '@/components/UserAvatarPopover';\nimport { MEMBER_TYPE } from '@/components/UserTrayAvatar';\nimport AvatarFoundingMemberIcon from '@/static/imgs/AvatarFoundingMemberIcon.svg';\nimport AvatarSuperMemberIcon from '@/static/imgs/AvatarSuperMemberIcon.svg';\nimport { useMemoizedFn, useRequest } from 'ahooks';\nimport { Avatar, Image, message } from 'antd';\nimport { useEffect, useState } from 'react';\n\ntype AnswerHeaderProps = {\n  uid: string;\n  avatarUrl: string;\n  name: string;\n  user: any;\n  loginUserUid?: string;\n};\n\nconst AvatarHeader: React.FC<AnswerHeaderProps> = (props) => {\n  const { data: userOverview, mutate: mutateUserOverview } = useRequest(\n    async () =>\n      api.getUserOverview(props.uid, {\n        with_f:\n          'follow_count,follower_count,create_post_count,user_follow_status',\n      }),\n    { refreshDeps: [] },\n  );\n\n  const [memberType, setMemberType] = useState<any>();\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          if (props.user.is_base_vip) {\n            setMemberType(MEMBER_TYPE.BASE_VIP);\n          } else {\n            setMemberType(MEMBER_TYPE.NOT_CERTIFICATED);\n          }\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    }\n  }, [props.user]);\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  const handleJumpToMemberPay = () => {\n    // 跳转会员支付页面\n    window.location.href = '/community/user/vip/categories/';\n  };\n\n  return (\n    <div data-flex=\"main:justify cross:center\">\n      <div data-flex>\n        {userOverview && (\n          <UserAvatarPopover\n            user={userOverview}\n            toggleFollowStatus={toggleFollowStatus}\n            loggedUid={props.loginUserUid}\n          >\n            <Avatar\n              size={28}\n              src={\n                props.avatarUrl ? (\n                  <Image\n                    width={28}\n                    height={28}\n                    src={props.avatarUrl}\n                    preview={false}\n                    style={{ objectFit: 'cover' }}\n                  />\n                ) : undefined\n              }\n            ></Avatar>\n          </UserAvatarPopover>\n        )}\n\n        <div className=\"ml-10px text-hex-86909c text-13px flex items-center\">\n          {props.name}\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      </div>\n    </div>\n  );\n};\n\nexport default AvatarHeader;\n","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"],"names":["props","useRequest","api","uid","with_f","refreshDeps","userOverview","data","mutateUserOverview","mutate","useState","memberType","setMemberType","useEffect","user","is_founding_vip","MEMBER_TYPE","super_vip_status","is_base_vip","toggleFollowStatus","useMemoizedFn","user_follow_status","message","follower_count","handleJumpToMemberPay","window","location","href","loggedUid","loginUserUid","size","src","avatarUrl","width","height","preview","style","objectFit","undefined","className","name","AvatarSuperMemberIcon","onClick","title","AvatarFoundingMemberIcon","placement","avatar_url","alt","content","follow_count","create_post_count","overlayStyle","paddingTop","showArrow","children"],"sourceRoot":""}