import React, { memo, useCallback, useMemo } from 'react' import { View, StyleSheet, ViewStyle } from 'react-native' import { LinearGradient } from 'expo-linear-gradient' import { LikeButton, LikeButtonProps } from './LikeButton' import { FavoriteButton, FavoriteButtonProps } from './FavoriteButton' export interface SocialActionBarProps { templateId: string liked?: boolean favorited?: boolean likeCount?: number favoriteCount?: number loading?: boolean onLike?: () => void onUnlike?: () => void onFavorite?: () => void onUnfavorite?: () => void testID?: string } const SocialActionBarComponent: React.FC = ({ templateId, liked = false, favorited = false, likeCount, favoriteCount, loading = false, onLike, onUnlike, onFavorite, onUnfavorite, testID, }) => { // 处理点赞按钮点击 const handleLikePress = useCallback(() => { if (!loading) { if (liked) { onUnlike?.() } else { onLike?.() } } }, [loading, liked, onLike, onUnlike]) // 处理收藏按钮点击 const handleFavoritePress = useCallback(() => { if (!loading) { if (favorited) { onUnfavorite?.() } else { onFavorite?.() } } }, [loading, favorited, onFavorite, onUnfavorite]) // LikeButton 的 props const likeButtonProps: LikeButtonProps = useMemo( () => ({ liked, loading, count: likeCount, onPress: handleLikePress, testID: testID ? `${testID}-like-button` : undefined, }), [liked, loading, likeCount, handleLikePress, testID] ) // FavoriteButton 的 props const favoriteButtonProps: FavoriteButtonProps = useMemo( () => ({ favorited, loading, count: favoriteCount, onPress: handleFavoritePress, testID: testID ? `${testID}-favorite-button` : undefined, }), [favorited, loading, favoriteCount, handleFavoritePress, testID] ) return ( ) } export const SocialActionBar = memo(SocialActionBarComponent) const styles = StyleSheet.create({ container: { width: '100%', paddingVertical: 12, paddingHorizontal: 16, } as ViewStyle, content: { flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', gap: 24, }, })