14060c00aS猫头猫import React, {useEffect} from 'react'; 24060c00aS猫头猫import {StyleSheet, View} from 'react-native'; 3be474dd8S猫头猫import rpx from '@/utils/rpx'; 420e2869eS猫头猫import Animated, { 520e2869eS猫头猫 useAnimatedStyle, 620e2869eS猫头猫 useSharedValue, 720e2869eS猫头猫 withTiming, 820e2869eS猫头猫} from 'react-native-reanimated'; 920e2869eS猫头猫import {useAtomValue} from 'jotai'; 1020e2869eS猫头猫import {scrollToTopAtom} from '../store/atoms'; 1120e2869eS猫头猫import ThemeText from '@/components/base/themeText'; 1220e2869eS猫头猫import Tag from '@/components/base/tag'; 13*b4c389f4Smaotoumaoimport {useParams} from '@/core/router'; 14e650bfb3S猫头猫import Image from '@/components/base/image'; 15e650bfb3S猫头猫import {ImgAsset} from '@/constants/assetsConst'; 16be474dd8S猫头猫 1720e2869eS猫头猫const headerHeight = rpx(350); 187cee35b5S猫头猫 197cee35b5S猫头猫interface IHeaderProps { 207cee35b5S猫头猫 neverFold?: boolean; 217cee35b5S猫头猫} 227cee35b5S猫头猫 237cee35b5S猫头猫export default function Header(props: IHeaderProps) { 247cee35b5S猫头猫 const {neverFold} = props; 257cee35b5S猫头猫 26e7fa3837S猫头猫 const {artistItem} = useParams<'artist-detail'>(); 2720e2869eS猫头猫 2820e2869eS猫头猫 const heightValue = useSharedValue(headerHeight); 2920e2869eS猫头猫 const opacityValue = useSharedValue(1); 3020e2869eS猫头猫 const scrollToTopState = useAtomValue(scrollToTopAtom); 3120e2869eS猫头猫 3220e2869eS猫头猫 const heightStyle = useAnimatedStyle(() => { 3320e2869eS猫头猫 return { 3420e2869eS猫头猫 height: heightValue.value, 3520e2869eS猫头猫 opacity: opacityValue.value, 3620e2869eS猫头猫 }; 3720e2869eS猫头猫 }); 3820e2869eS猫头猫 3920e2869eS猫头猫 const avatar = artistItem.avatar?.startsWith('//') 4020e2869eS猫头猫 ? `https:${artistItem.avatar}` 4120e2869eS猫头猫 : artistItem.avatar; 4220e2869eS猫头猫 4320e2869eS猫头猫 /** 折叠 */ 4420e2869eS猫头猫 useEffect(() => { 457cee35b5S猫头猫 if (neverFold) { 467cee35b5S猫头猫 heightValue.value = withTiming(headerHeight); 477cee35b5S猫头猫 opacityValue.value = withTiming(1); 487cee35b5S猫头猫 return; 497cee35b5S猫头猫 } 5020e2869eS猫头猫 if (scrollToTopState) { 5120e2869eS猫头猫 heightValue.value = withTiming(headerHeight); 5220e2869eS猫头猫 opacityValue.value = withTiming(1); 5320e2869eS猫头猫 } else { 5420e2869eS猫头猫 heightValue.value = withTiming(0); 5520e2869eS猫头猫 opacityValue.value = withTiming(0); 5620e2869eS猫头猫 } 577cee35b5S猫头猫 }, [scrollToTopState, neverFold]); 5820e2869eS猫头猫 5920e2869eS猫头猫 return ( 60e650bfb3S猫头猫 <Animated.View style={[styles.wrapper, heightStyle]}> 61e650bfb3S猫头猫 <View style={styles.headerWrapper}> 62e650bfb3S猫头猫 <Image 63e650bfb3S猫头猫 emptySrc={ImgAsset.albumDefault} 64e650bfb3S猫头猫 uri={avatar} 65e650bfb3S猫头猫 style={styles.artist} 66e650bfb3S猫头猫 /> 67e650bfb3S猫头猫 <View style={styles.info}> 68e650bfb3S猫头猫 <View style={styles.title}> 6920e2869eS猫头猫 <ThemeText 7020e2869eS猫头猫 fontSize="title" 71e650bfb3S猫头猫 style={styles.titleText} 7220e2869eS猫头猫 numberOfLines={1} 7320e2869eS猫头猫 ellipsizeMode="tail"> 74c9fce3b5S猫头猫 {artistItem?.name ?? ''} 7520e2869eS猫头猫 </ThemeText> 76c9fce3b5S猫头猫 {artistItem.platform ? ( 774060c00aS猫头猫 <Tag tagName={artistItem.platform} /> 781fbef60aS猫头猫 ) : null} 7920e2869eS猫头猫 </View> 8020e2869eS猫头猫 81c9fce3b5S猫头猫 {artistItem.fans ? ( 82277c5280S猫头猫 <ThemeText 83277c5280S猫头猫 fontSize="subTitle" 84277c5280S猫头猫 fontColor="textSecondary"> 8520e2869eS猫头猫 粉丝数: {artistItem.fans} 8620e2869eS猫头猫 </ThemeText> 871fbef60aS猫头猫 ) : null} 8820e2869eS猫头猫 </View> 8920e2869eS猫头猫 </View> 9020e2869eS猫头猫 9120e2869eS猫头猫 <ThemeText 92e650bfb3S猫头猫 style={styles.description} 9320e2869eS猫头猫 numberOfLines={2} 9420e2869eS猫头猫 ellipsizeMode="tail" 95277c5280S猫头猫 fontColor="textSecondary" 9620e2869eS猫头猫 fontSize="description"> 97c9fce3b5S猫头猫 {artistItem?.description ?? ''} 9820e2869eS猫头猫 </ThemeText> 9920e2869eS猫头猫 </Animated.View> 10020e2869eS猫头猫 ); 101be474dd8S猫头猫} 102be474dd8S猫头猫 103e650bfb3S猫头猫const styles = StyleSheet.create({ 104be474dd8S猫头猫 wrapper: { 105be474dd8S猫头猫 width: rpx(750), 10620e2869eS猫头猫 height: headerHeight, 10720e2869eS猫头猫 backgroundColor: 'rgba(28, 28, 28, 0.1)', 10820e2869eS猫头猫 zIndex: 1, 10920e2869eS猫头猫 }, 110e650bfb3S猫头猫 artist: { 111e650bfb3S猫头猫 width: rpx(144), 112e650bfb3S猫头猫 height: rpx(144), 113e650bfb3S猫头猫 borderRadius: rpx(16), 114e650bfb3S猫头猫 }, 11520e2869eS猫头猫 headerWrapper: { 11620e2869eS猫头猫 width: rpx(750), 11720e2869eS猫头猫 paddingTop: rpx(24), 11820e2869eS猫头猫 paddingHorizontal: rpx(24), 11920e2869eS猫头猫 height: rpx(240), 12020e2869eS猫头猫 flexDirection: 'row', 12120e2869eS猫头猫 alignItems: 'center', 12220e2869eS猫头猫 }, 12320e2869eS猫头猫 info: { 12420e2869eS猫头猫 marginLeft: rpx(24), 12520e2869eS猫头猫 justifyContent: 'space-around', 12620e2869eS猫头猫 height: rpx(144), 12720e2869eS猫头猫 }, 12820e2869eS猫头猫 title: { 12920e2869eS猫头猫 flexDirection: 'row', 13020e2869eS猫头猫 alignItems: 'center', 13120e2869eS猫头猫 }, 13220e2869eS猫头猫 titleText: { 13320e2869eS猫头猫 marginRight: rpx(18), 13420e2869eS猫头猫 maxWidth: rpx(400), 13520e2869eS猫头猫 }, 13620e2869eS猫头猫 description: { 13720e2869eS猫头猫 marginTop: rpx(24), 13820e2869eS猫头猫 width: rpx(750), 13920e2869eS猫头猫 paddingHorizontal: rpx(24), 140be474dd8S猫头猫 }, 141be474dd8S猫头猫}); 142