xref: /MusicFree/src/pages/home/components/homeBodyHorizontal/operations.tsx (revision 72a4e1f47e4d24ea9b41c4f7a257f740ccbc331d)
1*72a4e1f4Smaotoumaoimport React from 'react';
2*72a4e1f4Smaotoumaoimport {StyleSheet} from 'react-native';
3*72a4e1f4Smaotoumaoimport rpx from '@/utils/rpx';
4*72a4e1f4Smaotoumaoimport ActionButton from '../ActionButton';
5*72a4e1f4Smaotoumaoimport {ROUTE_PATH, useNavigate} from '@/entry/router';
6*72a4e1f4Smaotoumaoimport {ScrollView} from 'react-native-gesture-handler';
7*72a4e1f4Smaotoumao
8*72a4e1f4Smaotoumaoexport default function Operations() {
9*72a4e1f4Smaotoumao    const navigate = useNavigate();
10*72a4e1f4Smaotoumao
11*72a4e1f4Smaotoumao    const actionButtons = [
12*72a4e1f4Smaotoumao        {
13*72a4e1f4Smaotoumao            iconName: 'fire',
14*72a4e1f4Smaotoumao            title: '推荐歌单',
15*72a4e1f4Smaotoumao            action() {
16*72a4e1f4Smaotoumao                navigate(ROUTE_PATH.RECOMMEND_SHEETS);
17*72a4e1f4Smaotoumao            },
18*72a4e1f4Smaotoumao        },
19*72a4e1f4Smaotoumao        {
20*72a4e1f4Smaotoumao            iconName: 'trophy',
21*72a4e1f4Smaotoumao            title: '榜单',
22*72a4e1f4Smaotoumao            action() {
23*72a4e1f4Smaotoumao                navigate(ROUTE_PATH.TOP_LIST);
24*72a4e1f4Smaotoumao            },
25*72a4e1f4Smaotoumao        },
26*72a4e1f4Smaotoumao        {
27*72a4e1f4Smaotoumao            iconName: 'clock-outline',
28*72a4e1f4Smaotoumao            title: '播放记录',
29*72a4e1f4Smaotoumao            action() {
30*72a4e1f4Smaotoumao                navigate(ROUTE_PATH.HISTORY);
31*72a4e1f4Smaotoumao            },
32*72a4e1f4Smaotoumao        },
33*72a4e1f4Smaotoumao        {
34*72a4e1f4Smaotoumao            iconName: 'folder-music-outline',
35*72a4e1f4Smaotoumao            title: '本地音乐',
36*72a4e1f4Smaotoumao            action() {
37*72a4e1f4Smaotoumao                navigate(ROUTE_PATH.LOCAL);
38*72a4e1f4Smaotoumao            },
39*72a4e1f4Smaotoumao        },
40*72a4e1f4Smaotoumao    ] as const;
41*72a4e1f4Smaotoumao
42*72a4e1f4Smaotoumao    return (
43*72a4e1f4Smaotoumao        <ScrollView style={styles.container}>
44*72a4e1f4Smaotoumao            {actionButtons.map((action, index) => (
45*72a4e1f4Smaotoumao                <ActionButton
46*72a4e1f4Smaotoumao                    style={[
47*72a4e1f4Smaotoumao                        styles.actionButtonStyle,
48*72a4e1f4Smaotoumao                        index % 4 ? styles.actionMarginLeft : null,
49*72a4e1f4Smaotoumao                    ]}
50*72a4e1f4Smaotoumao                    key={action.title}
51*72a4e1f4Smaotoumao                    {...action}
52*72a4e1f4Smaotoumao                />
53*72a4e1f4Smaotoumao            ))}
54*72a4e1f4Smaotoumao        </ScrollView>
55*72a4e1f4Smaotoumao    );
56*72a4e1f4Smaotoumao}
57*72a4e1f4Smaotoumao
58*72a4e1f4Smaotoumaoconst styles = StyleSheet.create({
59*72a4e1f4Smaotoumao    container: {
60*72a4e1f4Smaotoumao        width: rpx(200),
61*72a4e1f4Smaotoumao        flexGrow: 0,
62*72a4e1f4Smaotoumao        flexShrink: 0,
63*72a4e1f4Smaotoumao        paddingHorizontal: rpx(24),
64*72a4e1f4Smaotoumao        marginVertical: rpx(32),
65*72a4e1f4Smaotoumao        flexDirection: 'row',
66*72a4e1f4Smaotoumao        flexWrap: 'wrap',
67*72a4e1f4Smaotoumao    },
68*72a4e1f4Smaotoumao    actionButtonStyle: {
69*72a4e1f4Smaotoumao        width: rpx(157.5),
70*72a4e1f4Smaotoumao        height: rpx(160),
71*72a4e1f4Smaotoumao        borderRadius: rpx(18),
72*72a4e1f4Smaotoumao    },
73*72a4e1f4Smaotoumao    actionMarginLeft: {
74*72a4e1f4Smaotoumao        marginTop: rpx(24),
75*72a4e1f4Smaotoumao    },
76*72a4e1f4Smaotoumao});
77