{"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":""}