1bf6e62f2S猫头猫import React, {useEffect, useState} from 'react'; 2bf6e62f2S猫头猫import {StyleSheet, Text, View} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 419dc08ecS猫头猫import Loading from '@/components/base/loading'; 5bf6e62f2S猫头猫import {Chip, useTheme} 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 { 10*a4ae8da5S猫头猫 initSearchResults, 11bf6e62f2S猫头猫 PageStatus, 12bf6e62f2S猫头猫 pageStatusAtom, 13bf6e62f2S猫头猫 queryAtom, 14bf6e62f2S猫头猫 searchResultsAtom, 15bf6e62f2S猫头猫} from '../store/atoms'; 1619dc08ecS猫头猫import ThemeText from '@/components/base/themeText'; 17bf6e62f2S猫头猫 18bf6e62f2S猫头猫interface IProps {} 19bf6e62f2S猫头猫export default function (props: IProps) { 20bf6e62f2S猫头猫 const [history, setHistory] = useState<string[] | null>(null); 21bf6e62f2S猫头猫 const search = useSearch(); 22bf6e62f2S猫头猫 23bf6e62f2S猫头猫 const setQuery = useSetAtom(queryAtom); 24bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 25bf6e62f2S猫头猫 const setSearchResultsState = useSetAtom(searchResultsAtom); 26bf6e62f2S猫头猫 27bf6e62f2S猫头猫 useEffect(() => { 2819c8eb6fS猫头猫 getHistory().then(setHistory); 29bf6e62f2S猫头猫 }, []); 30bf6e62f2S猫头猫 31bf6e62f2S猫头猫 return ( 32bf6e62f2S猫头猫 <View style={style.wrapper}> 33bf6e62f2S猫头猫 {history === null ? ( 34bf6e62f2S猫头猫 <Loading></Loading> 35bf6e62f2S猫头猫 ) : ( 36bf6e62f2S猫头猫 <> 37ec26b768S猫头猫 <ThemeText fontSize='title' fontWeight='semibold' style={style.title}>历史记录</ThemeText> 38bf6e62f2S猫头猫 {history.map(_ => ( 39bf6e62f2S猫头猫 <Chip 40bf6e62f2S猫头猫 key={`search-history-${_}`} 41bf6e62f2S猫头猫 style={style.chip} 42bf6e62f2S猫头猫 onClose={async () => { 43bf6e62f2S猫头猫 await removeHistory(_); 44bf6e62f2S猫头猫 getHistory().then(setHistory); 45bf6e62f2S猫头猫 }} 46bf6e62f2S猫头猫 onPress={() => { 47*a4ae8da5S猫头猫 setSearchResultsState(initSearchResults); 480b940038S猫头猫 search(_, 1); 49bf6e62f2S猫头猫 addHistory(_); 50bf6e62f2S猫头猫 setPageStatus(PageStatus.SEARCHING); 51bf6e62f2S猫头猫 setQuery(_); 52bf6e62f2S猫头猫 }}> 53bf6e62f2S猫头猫 {_} 54bf6e62f2S猫头猫 </Chip> 55bf6e62f2S猫头猫 ))} 56bf6e62f2S猫头猫 </> 57bf6e62f2S猫头猫 )} 58bf6e62f2S猫头猫 </View> 59bf6e62f2S猫头猫 ); 60bf6e62f2S猫头猫} 61bf6e62f2S猫头猫 62bf6e62f2S猫头猫const style = StyleSheet.create({ 63bf6e62f2S猫头猫 wrapper: { 64bf6e62f2S猫头猫 width: rpx(750), 65bf6e62f2S猫头猫 maxWidth: rpx(750), 66bf6e62f2S猫头猫 flexDirection: 'row', 67bf6e62f2S猫头猫 flexWrap: 'wrap', 68bf6e62f2S猫头猫 padding: rpx(24), 69bf6e62f2S猫头猫 }, 70bf6e62f2S猫头猫 title: { 71bf6e62f2S猫头猫 width: '100%', 72ec26b768S猫头猫 marginVertical: rpx(28), 73bf6e62f2S猫头猫 }, 74bf6e62f2S猫头猫 chip: { 75bf6e62f2S猫头猫 flexGrow: 0, 76bf6e62f2S猫头猫 marginRight: rpx(24), 77bf6e62f2S猫头猫 marginBottom: rpx(24), 78bf6e62f2S猫头猫 }, 79bf6e62f2S猫头猫}); 80