xref: /MusicFree/src/pages/recommendSheets/components/body/sheetBody.tsx (revision 5589cdf32b2bb0f641e5ac7bf1f6152cd6b9b70e)
1ceb900cdS猫头猫import React, {memo, useState} from 'react';
2ceb900cdS猫头猫import {StyleSheet, View} from 'react-native';
3ceb900cdS猫头猫import rpx from '@/utils/rpx';
4ceb900cdS猫头猫import globalStyle from '@/constants/globalStyle';
5ceb900cdS猫头猫import {ScrollView} from 'react-native-gesture-handler';
6ceb900cdS猫头猫import TypeTag from '../../../../components/base/typeTag';
7c15039e2S猫头猫
8ceb900cdS猫头猫import useRecommendList from '../../hooks/useRecommendListTags';
9ceb900cdS猫头猫import SheetList from './sheetList';
10*5589cdf3S猫头猫import {hidePanel, showPanel} from '@/components/panels/usePanel';
11ceb900cdS猫头猫
12ceb900cdS猫头猫interface IProps {
13ceb900cdS猫头猫    hash: string;
14ceb900cdS猫头猫}
15ceb900cdS猫头猫
16ceb900cdS猫头猫const defaultTag: ICommon.IUnique = {
17ceb900cdS猫头猫    title: '默认',
18ceb900cdS猫头猫    id: '',
19ceb900cdS猫头猫};
20ceb900cdS猫头猫function SheetBody(props: IProps) {
21ceb900cdS猫头猫    const {hash} = props;
22ceb900cdS猫头猫
23ceb900cdS猫头猫    // 选中的tag
24ceb900cdS猫头猫    const [selectedTag, setSelectedTag] = useState<ICommon.IUnique>(defaultTag);
25ceb900cdS猫头猫
26ceb900cdS猫头猫    // 第一个tag
27ceb900cdS猫头猫    const [firstTag, setFirstTag] = useState<ICommon.IUnique>(defaultTag);
28ceb900cdS猫头猫
29ceb900cdS猫头猫    // 所有tag
30ceb900cdS猫头猫    const tags = useRecommendList(hash);
31ceb900cdS猫头猫
32ceb900cdS猫头猫    return (
33ceb900cdS猫头猫        <View style={globalStyle.fwflex1}>
34ceb900cdS猫头猫            <ScrollView
35ceb900cdS猫头猫                style={style.headerWrapper}
36ceb900cdS猫头猫                contentContainerStyle={style.header}
376cfecf1cS猫头猫                showsHorizontalScrollIndicator={false}
38ceb900cdS猫头猫                horizontal>
39ceb900cdS猫头猫                <TypeTag
40ceb900cdS猫头猫                    title={firstTag.title}
41ceb900cdS猫头猫                    selected={selectedTag.id === firstTag.id}
42ceb900cdS猫头猫                    onPress={() => {
43ceb900cdS猫头猫                        // 拉起浮层
44ceb900cdS猫头猫                        showPanel('SheetTags', {
45ceb900cdS猫头猫                            tags: tags?.data ?? [],
46ceb900cdS猫头猫                            onTagPressed(tag) {
47ceb900cdS猫头猫                                setSelectedTag(tag);
48ceb900cdS猫头猫                                setFirstTag(tag);
49ceb900cdS猫头猫                                hidePanel();
50ceb900cdS猫头猫                            },
51ceb900cdS猫头猫                        });
52ceb900cdS猫头猫                    }}
53ceb900cdS猫头猫                />
54ceb900cdS猫头猫                {(tags?.pinned ?? []).map(_ => (
55ceb900cdS猫头猫                    <TypeTag
56ceb900cdS猫头猫                        key={`pinned-${_.id}`}
57956ee1b7S猫头猫                        title={_?.title ?? ''}
58ceb900cdS猫头猫                        selected={selectedTag.id === _.id}
59ceb900cdS猫头猫                        onPress={() => {
60ceb900cdS猫头猫                            setSelectedTag(_);
61ceb900cdS猫头猫                        }}
62ceb900cdS猫头猫                    />
63ceb900cdS猫头猫                ))}
64ceb900cdS猫头猫            </ScrollView>
65ceb900cdS猫头猫            <SheetList tag={selectedTag} pluginHash={hash} />
66ceb900cdS猫头猫        </View>
67ceb900cdS猫头猫    );
68ceb900cdS猫头猫}
69ceb900cdS猫头猫
70ceb900cdS猫头猫export default memo(SheetBody, (prev, curr) => prev.hash === curr.hash);
71ceb900cdS猫头猫
72ceb900cdS猫头猫const style = StyleSheet.create({
73ceb900cdS猫头猫    headerWrapper: {
74ceb900cdS猫头猫        height: rpx(100),
75ceb900cdS猫头猫        flexGrow: 0,
76ceb900cdS猫头猫    },
77ceb900cdS猫头猫    header: {
78ceb900cdS猫头猫        height: rpx(100),
79ceb900cdS猫头猫        alignItems: 'center',
80ceb900cdS猫头猫    },
81ceb900cdS猫头猫});
82