1bf6e62f2S猫头猫import React, {useEffect, useState} from 'react'; 2*4060c00aS猫头猫import {ScrollView, StyleSheet, View} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 419dc08ecS猫头猫import Loading from '@/components/base/loading'; 5*4060c00aS猫头猫import {Chip} from 'react-native-paper'; 6bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 7bf6e62f2S猫头猫import {addHistory, getHistory, removeHistory} from '../common/historySearch'; 8bf6e62f2S猫头猫import {useSetAtom} from 'jotai'; 9bf6e62f2S猫头猫import { 10a4ae8da5S猫头猫 initSearchResults, 11bf6e62f2S猫头猫 PageStatus, 12bf6e62f2S猫头猫 pageStatusAtom, 13bf6e62f2S猫头猫 queryAtom, 14bf6e62f2S猫头猫 searchResultsAtom, 15bf6e62f2S猫头猫} from '../store/atoms'; 1619dc08ecS猫头猫import ThemeText from '@/components/base/themeText'; 17bf6e62f2S猫头猫 18*4060c00aS猫头猫export default function () { 19bf6e62f2S猫头猫 const [history, setHistory] = useState<string[] | null>(null); 20bf6e62f2S猫头猫 const search = useSearch(); 21bf6e62f2S猫头猫 22bf6e62f2S猫头猫 const setQuery = useSetAtom(queryAtom); 23bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 24bf6e62f2S猫头猫 const setSearchResultsState = useSetAtom(searchResultsAtom); 25bf6e62f2S猫头猫 26bf6e62f2S猫头猫 useEffect(() => { 2719c8eb6fS猫头猫 getHistory().then(setHistory); 28bf6e62f2S猫头猫 }, []); 29bf6e62f2S猫头猫 30bf6e62f2S猫头猫 return ( 31bf6e62f2S猫头猫 <View style={style.wrapper}> 32bf6e62f2S猫头猫 {history === null ? ( 33*4060c00aS猫头猫 <Loading /> 34bf6e62f2S猫头猫 ) : ( 35bf6e62f2S猫头猫 <> 36*4060c00aS猫头猫 <ThemeText 37*4060c00aS猫头猫 fontSize="title" 38*4060c00aS猫头猫 fontWeight="semibold" 39*4060c00aS猫头猫 style={style.title}> 402fac4245S猫头猫 历史记录 412fac4245S猫头猫 </ThemeText> 422fac4245S猫头猫 <ScrollView 432fac4245S猫头猫 style={style.historyContent} 442fac4245S猫头猫 contentContainerStyle={style.historyContentConainer}> 45bf6e62f2S猫头猫 {history.map(_ => ( 46bf6e62f2S猫头猫 <Chip 47bf6e62f2S猫头猫 key={`search-history-${_}`} 48bf6e62f2S猫头猫 style={style.chip} 49bf6e62f2S猫头猫 onClose={async () => { 50bf6e62f2S猫头猫 await removeHistory(_); 51bf6e62f2S猫头猫 getHistory().then(setHistory); 52bf6e62f2S猫头猫 }} 53bf6e62f2S猫头猫 onPress={() => { 54a4ae8da5S猫头猫 setSearchResultsState(initSearchResults); 550b940038S猫头猫 search(_, 1); 56bf6e62f2S猫头猫 addHistory(_); 57bf6e62f2S猫头猫 setPageStatus(PageStatus.SEARCHING); 58bf6e62f2S猫头猫 setQuery(_); 59bf6e62f2S猫头猫 }}> 60bf6e62f2S猫头猫 {_} 61bf6e62f2S猫头猫 </Chip> 62bf6e62f2S猫头猫 ))} 632fac4245S猫头猫 </ScrollView> 64bf6e62f2S猫头猫 </> 65bf6e62f2S猫头猫 )} 66bf6e62f2S猫头猫 </View> 67bf6e62f2S猫头猫 ); 68bf6e62f2S猫头猫} 69bf6e62f2S猫头猫 70bf6e62f2S猫头猫const style = StyleSheet.create({ 71bf6e62f2S猫头猫 wrapper: { 72bf6e62f2S猫头猫 width: rpx(750), 73bf6e62f2S猫头猫 maxWidth: rpx(750), 742fac4245S猫头猫 flexDirection: 'column', 75bf6e62f2S猫头猫 padding: rpx(24), 762fac4245S猫头猫 flex: 1, 77bf6e62f2S猫头猫 }, 78bf6e62f2S猫头猫 title: { 79bf6e62f2S猫头猫 width: '100%', 80ec26b768S猫头猫 marginVertical: rpx(28), 81bf6e62f2S猫头猫 }, 822fac4245S猫头猫 historyContent: { 832fac4245S猫头猫 width: rpx(750), 842fac4245S猫头猫 flex: 1, 852fac4245S猫头猫 }, 862fac4245S猫头猫 historyContentConainer: { 872fac4245S猫头猫 flexDirection: 'row', 882fac4245S猫头猫 flexWrap: 'wrap', 892fac4245S猫头猫 }, 90bf6e62f2S猫头猫 chip: { 91bf6e62f2S猫头猫 flexGrow: 0, 92bf6e62f2S猫头猫 marginRight: rpx(24), 93bf6e62f2S猫头猫 marginBottom: rpx(24), 94bf6e62f2S猫头猫 }, 95bf6e62f2S猫头猫}); 96