xref: /MusicFree/src/pages/home/components/homeBodyHorizontal/operations.tsx (revision b4c389f44ac4dad056e7314478fadd2eca82a4b1)
172a4e1f4Smaotoumaoimport React from 'react';
272a4e1f4Smaotoumaoimport {StyleSheet} from 'react-native';
372a4e1f4Smaotoumaoimport rpx from '@/utils/rpx';
472a4e1f4Smaotoumaoimport ActionButton from '../ActionButton';
5*b4c389f4Smaotoumaoimport {ROUTE_PATH, useNavigate} from '@/core/router';
672a4e1f4Smaotoumaoimport {ScrollView} from 'react-native-gesture-handler';
772a4e1f4Smaotoumao
872a4e1f4Smaotoumaoexport default function Operations() {
972a4e1f4Smaotoumao    const navigate = useNavigate();
1072a4e1f4Smaotoumao
1172a4e1f4Smaotoumao    const actionButtons = [
1272a4e1f4Smaotoumao        {
1372a4e1f4Smaotoumao            iconName: 'fire',
1472a4e1f4Smaotoumao            title: '推荐歌单',
1572a4e1f4Smaotoumao            action() {
1672a4e1f4Smaotoumao                navigate(ROUTE_PATH.RECOMMEND_SHEETS);
1772a4e1f4Smaotoumao            },
1872a4e1f4Smaotoumao        },
1972a4e1f4Smaotoumao        {
2072a4e1f4Smaotoumao            iconName: 'trophy',
2172a4e1f4Smaotoumao            title: '榜单',
2272a4e1f4Smaotoumao            action() {
2372a4e1f4Smaotoumao                navigate(ROUTE_PATH.TOP_LIST);
2472a4e1f4Smaotoumao            },
2572a4e1f4Smaotoumao        },
2672a4e1f4Smaotoumao        {
2772a4e1f4Smaotoumao            iconName: 'clock-outline',
2872a4e1f4Smaotoumao            title: '播放记录',
2972a4e1f4Smaotoumao            action() {
3072a4e1f4Smaotoumao                navigate(ROUTE_PATH.HISTORY);
3172a4e1f4Smaotoumao            },
3272a4e1f4Smaotoumao        },
3372a4e1f4Smaotoumao        {
3472a4e1f4Smaotoumao            iconName: 'folder-music-outline',
3572a4e1f4Smaotoumao            title: '本地音乐',
3672a4e1f4Smaotoumao            action() {
3772a4e1f4Smaotoumao                navigate(ROUTE_PATH.LOCAL);
3872a4e1f4Smaotoumao            },
3972a4e1f4Smaotoumao        },
4072a4e1f4Smaotoumao    ] as const;
4172a4e1f4Smaotoumao
4272a4e1f4Smaotoumao    return (
4372a4e1f4Smaotoumao        <ScrollView style={styles.container}>
4472a4e1f4Smaotoumao            {actionButtons.map((action, index) => (
4572a4e1f4Smaotoumao                <ActionButton
4672a4e1f4Smaotoumao                    style={[
4772a4e1f4Smaotoumao                        styles.actionButtonStyle,
4872a4e1f4Smaotoumao                        index % 4 ? styles.actionMarginLeft : null,
4972a4e1f4Smaotoumao                    ]}
5072a4e1f4Smaotoumao                    key={action.title}
5172a4e1f4Smaotoumao                    {...action}
5272a4e1f4Smaotoumao                />
5372a4e1f4Smaotoumao            ))}
5472a4e1f4Smaotoumao        </ScrollView>
5572a4e1f4Smaotoumao    );
5672a4e1f4Smaotoumao}
5772a4e1f4Smaotoumao
5872a4e1f4Smaotoumaoconst styles = StyleSheet.create({
5972a4e1f4Smaotoumao    container: {
6072a4e1f4Smaotoumao        width: rpx(200),
6172a4e1f4Smaotoumao        flexGrow: 0,
6272a4e1f4Smaotoumao        flexShrink: 0,
6372a4e1f4Smaotoumao        paddingHorizontal: rpx(24),
6472a4e1f4Smaotoumao        marginVertical: rpx(32),
6572a4e1f4Smaotoumao        flexDirection: 'row',
6672a4e1f4Smaotoumao        flexWrap: 'wrap',
6772a4e1f4Smaotoumao    },
6872a4e1f4Smaotoumao    actionButtonStyle: {
6972a4e1f4Smaotoumao        width: rpx(157.5),
7072a4e1f4Smaotoumao        height: rpx(160),
7172a4e1f4Smaotoumao        borderRadius: rpx(18),
7272a4e1f4Smaotoumao    },
7372a4e1f4Smaotoumao    actionMarginLeft: {
7472a4e1f4Smaotoumao        marginTop: rpx(24),
7572a4e1f4Smaotoumao    },
7672a4e1f4Smaotoumao});
77