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