xref: /MusicFree/src/pages/searchMusicList/index.tsx (revision 03f1f70c590b8e2956c23bfa7bd5f64ca87e9e83)
1*03f1f70cS猫头猫import React, {useState} from 'react';
2*03f1f70cS猫头猫import {StyleSheet, Text, View} from 'react-native';
3*03f1f70cS猫头猫import rpx from '@/utils/rpx';
4*03f1f70cS猫头猫import {useNavigation, useRoute} from '@react-navigation/native';
5*03f1f70cS猫头猫import MusicBar from '@/components/musicBar';
6*03f1f70cS猫头猫import SearchResult from './searchResult';
7*03f1f70cS猫头猫import StatusBar from '@/components/base/statusBar';
8*03f1f70cS猫头猫import {Appbar, Searchbar} from 'react-native-paper';
9*03f1f70cS猫头猫import useColors from '@/hooks/useColors';
10*03f1f70cS猫头猫import {SafeAreaView} from 'react-native-safe-area-context';
11*03f1f70cS猫头猫import {fontSizeConst} from '@/constants/uiConst';
12*03f1f70cS猫头猫
13*03f1f70cS猫头猫interface ISearchMusicListProps {}
14*03f1f70cS猫头猫
15*03f1f70cS猫头猫function filterMusic(query: string, musicList: IMusic.IMusicItem[]) {
16*03f1f70cS猫头猫  if (query?.length === 0) {
17*03f1f70cS猫头猫    return [];
18*03f1f70cS猫头猫  }
19*03f1f70cS猫头猫  return musicList.filter(_ =>
20*03f1f70cS猫头猫    `${_.title} ${_.artist} ${_.album} ${_.platform}`.includes(query.trim()),
21*03f1f70cS猫头猫  );
22*03f1f70cS猫头猫}
23*03f1f70cS猫头猫
24*03f1f70cS猫头猫export default function SearchMusicList(props: ISearchMusicListProps) {
25*03f1f70cS猫头猫  const route = useRoute<any>();
26*03f1f70cS猫头猫  const navigation = useNavigation();
27*03f1f70cS猫头猫  const musicList: IMusic.IMusicItem[] = route.params?.musicList ?? [];
28*03f1f70cS猫头猫  const [result, setResult] = useState<IMusic.IMusicItem[]>([]);
29*03f1f70cS猫头猫  const [query, setQuery] = useState('');
30*03f1f70cS猫头猫
31*03f1f70cS猫头猫  console.log(musicList);
32*03f1f70cS猫头猫
33*03f1f70cS猫头猫  const colors = useColors();
34*03f1f70cS猫头猫
35*03f1f70cS猫头猫  const onChangeSearch = (_: string) => {
36*03f1f70cS猫头猫    _ = _.trim();
37*03f1f70cS猫头猫    setQuery(_);
38*03f1f70cS猫头猫    setResult(filterMusic(_, musicList));
39*03f1f70cS猫头猫  };
40*03f1f70cS猫头猫
41*03f1f70cS猫头猫  return (
42*03f1f70cS猫头猫    <SafeAreaView style={style.wrapper}>
43*03f1f70cS猫头猫      <StatusBar></StatusBar>
44*03f1f70cS猫头猫      <Appbar.Header style={[style.appbar, {backgroundColor: colors.primary}]}>
45*03f1f70cS猫头猫        <Appbar.BackAction
46*03f1f70cS猫头猫          onPress={() => {
47*03f1f70cS猫头猫            navigation.goBack();
48*03f1f70cS猫头猫          }}
49*03f1f70cS猫头猫        />
50*03f1f70cS猫头猫        <Searchbar
51*03f1f70cS猫头猫          style={style.searchBar}
52*03f1f70cS猫头猫          inputStyle={style.input}
53*03f1f70cS猫头猫          placeholder="在列表中搜索歌曲"
54*03f1f70cS猫头猫          value={query}
55*03f1f70cS猫头猫          onChangeText={onChangeSearch}></Searchbar>
56*03f1f70cS猫头猫      </Appbar.Header>
57*03f1f70cS猫头猫      <SearchResult result={result}></SearchResult>
58*03f1f70cS猫头猫      <MusicBar></MusicBar>
59*03f1f70cS猫头猫    </SafeAreaView>
60*03f1f70cS猫头猫  );
61*03f1f70cS猫头猫}
62*03f1f70cS猫头猫
63*03f1f70cS猫头猫const style = StyleSheet.create({
64*03f1f70cS猫头猫  wrapper: {
65*03f1f70cS猫头猫    width: rpx(750),
66*03f1f70cS猫头猫    flex: 1,
67*03f1f70cS猫头猫  },
68*03f1f70cS猫头猫  appbar: {
69*03f1f70cS猫头猫    shadowColor: 'transparent',
70*03f1f70cS猫头猫    backgroundColor: '#2b333eaa',
71*03f1f70cS猫头猫  },
72*03f1f70cS猫头猫  searchBar: {
73*03f1f70cS猫头猫    minWidth: rpx(375),
74*03f1f70cS猫头猫    flex: 1,
75*03f1f70cS猫头猫    borderRadius: rpx(64),
76*03f1f70cS猫头猫    height: rpx(64),
77*03f1f70cS猫头猫    color: '#666666',
78*03f1f70cS猫头猫  },
79*03f1f70cS猫头猫  input: {
80*03f1f70cS猫头猫    padding: 0,
81*03f1f70cS猫头猫    color: '#666666',
82*03f1f70cS猫头猫    height: rpx(64),
83*03f1f70cS猫头猫    fontSize: fontSizeConst.subTitle,
84*03f1f70cS猫头猫    textAlignVertical: 'center',
85*03f1f70cS猫头猫    includeFontPadding: false,
86*03f1f70cS猫头猫  },
87*03f1f70cS猫头猫});
88