xref: /MusicFree/src/pages/searchMusicList/index.tsx (revision 0224b88128448f4103c1d3e38e4da46f1b5945ee)
103f1f70cS猫头猫import React, {useState} from 'react';
24060c00aS猫头猫import {StyleSheet} from 'react-native';
303f1f70cS猫头猫import rpx from '@/utils/rpx';
403f1f70cS猫头猫import {useNavigation, useRoute} from '@react-navigation/native';
503f1f70cS猫头猫import MusicBar from '@/components/musicBar';
603f1f70cS猫头猫import SearchResult from './searchResult';
703f1f70cS猫头猫import StatusBar from '@/components/base/statusBar';
803f1f70cS猫头猫import {Appbar, Searchbar} from 'react-native-paper';
903f1f70cS猫头猫import useColors from '@/hooks/useColors';
1003f1f70cS猫头猫import {SafeAreaView} from 'react-native-safe-area-context';
1103f1f70cS猫头猫import {fontSizeConst} from '@/constants/uiConst';
1203f1f70cS猫头猫
1303f1f70cS猫头猫function filterMusic(query: string, musicList: IMusic.IMusicItem[]) {
1403f1f70cS猫头猫    if (query?.length === 0) {
15*0224b881S猫头猫        return musicList;
1603f1f70cS猫头猫    }
1703f1f70cS猫头猫    return musicList.filter(_ =>
184060c00aS猫头猫        `${_.title} ${_.artist} ${_.album} ${_.platform}`.includes(
194060c00aS猫头猫            query.trim(),
204060c00aS猫头猫        ),
2103f1f70cS猫头猫    );
2203f1f70cS猫头猫}
2303f1f70cS猫头猫
244060c00aS猫头猫export default function SearchMusicList() {
2503f1f70cS猫头猫    const route = useRoute<any>();
2603f1f70cS猫头猫    const navigation = useNavigation();
2703f1f70cS猫头猫    const musicList: IMusic.IMusicItem[] = route.params?.musicList ?? [];
28*0224b881S猫头猫    const [result, setResult] = useState<IMusic.IMusicItem[]>(musicList);
2903f1f70cS猫头猫    const [query, setQuery] = useState('');
3003f1f70cS猫头猫
3103f1f70cS猫头猫    console.log(musicList);
3203f1f70cS猫头猫
3303f1f70cS猫头猫    const colors = useColors();
3403f1f70cS猫头猫
3503f1f70cS猫头猫    const onChangeSearch = (_: string) => {
3603f1f70cS猫头猫        _ = _.trim();
3703f1f70cS猫头猫        setQuery(_);
3803f1f70cS猫头猫        setResult(filterMusic(_, musicList));
3903f1f70cS猫头猫    };
4003f1f70cS猫头猫
4103f1f70cS猫头猫    return (
4203f1f70cS猫头猫        <SafeAreaView style={style.wrapper}>
434060c00aS猫头猫            <StatusBar />
444060c00aS猫头猫            <Appbar.Header
454060c00aS猫头猫                style={[style.appbar, {backgroundColor: colors.primary}]}>
4603f1f70cS猫头猫                <Appbar.BackAction
4703f1f70cS猫头猫                    onPress={() => {
4803f1f70cS猫头猫                        navigation.goBack();
4903f1f70cS猫头猫                    }}
5003f1f70cS猫头猫                />
5103f1f70cS猫头猫                <Searchbar
5203f1f70cS猫头猫                    style={style.searchBar}
5303f1f70cS猫头猫                    inputStyle={style.input}
5403f1f70cS猫头猫                    placeholder="在列表中搜索歌曲"
5503f1f70cS猫头猫                    value={query}
564060c00aS猫头猫                    onChangeText={onChangeSearch}
574060c00aS猫头猫                />
5803f1f70cS猫头猫            </Appbar.Header>
594060c00aS猫头猫            <SearchResult result={result} />
604060c00aS猫头猫            <MusicBar />
6103f1f70cS猫头猫        </SafeAreaView>
6203f1f70cS猫头猫    );
6303f1f70cS猫头猫}
6403f1f70cS猫头猫
6503f1f70cS猫头猫const style = StyleSheet.create({
6603f1f70cS猫头猫    wrapper: {
6703f1f70cS猫头猫        width: rpx(750),
6803f1f70cS猫头猫        flex: 1,
6903f1f70cS猫头猫    },
7003f1f70cS猫头猫    appbar: {
7103f1f70cS猫头猫        shadowColor: 'transparent',
7203f1f70cS猫头猫        backgroundColor: '#2b333eaa',
7303f1f70cS猫头猫    },
7403f1f70cS猫头猫    searchBar: {
7503f1f70cS猫头猫        minWidth: rpx(375),
7603f1f70cS猫头猫        flex: 1,
7703f1f70cS猫头猫        borderRadius: rpx(64),
7803f1f70cS猫头猫        height: rpx(64),
7903f1f70cS猫头猫        color: '#666666',
8003f1f70cS猫头猫    },
8103f1f70cS猫头猫    input: {
8203f1f70cS猫头猫        padding: 0,
8303f1f70cS猫头猫        color: '#666666',
8403f1f70cS猫头猫        height: rpx(64),
8503f1f70cS猫头猫        fontSize: fontSizeConst.subTitle,
8603f1f70cS猫头猫        textAlignVertical: 'center',
8703f1f70cS猫头猫        includeFontPadding: false,
8803f1f70cS猫头猫    },
8903f1f70cS猫头猫});
90