1bf6e62f2S猫头猫import React, {useEffect, useState} from 'react'; 24060c00aS猫头猫import {ScrollView, StyleSheet, View} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 419dc08ecS猫头猫import Loading from '@/components/base/loading'; 5fe32deaaS猫头猫import Chip from '@/components/base/chip'; 6bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 74f168b1fS猫头猫import { 84f168b1fS猫头猫 addHistory, 94f168b1fS猫头猫 getHistory, 104f168b1fS猫头猫 removeAllHistory, 114f168b1fS猫头猫 removeHistory, 124f168b1fS猫头猫} from '../common/historySearch'; 13bf6e62f2S猫头猫import {useSetAtom} from 'jotai'; 14bf6e62f2S猫头猫import { 15a4ae8da5S猫头猫 initSearchResults, 16bf6e62f2S猫头猫 PageStatus, 17bf6e62f2S猫头猫 pageStatusAtom, 18bf6e62f2S猫头猫 queryAtom, 19bf6e62f2S猫头猫 searchResultsAtom, 20bf6e62f2S猫头猫} from '../store/atoms'; 2119dc08ecS猫头猫import ThemeText from '@/components/base/themeText'; 22*756bc302S猫头猫import Button from '@/components/base/textButton.tsx'; 23b4a87dd6S猫头猫import Empty from '@/components/base/empty'; 24bf6e62f2S猫头猫 254060c00aS猫头猫export default function () { 26bf6e62f2S猫头猫 const [history, setHistory] = useState<string[] | null>(null); 27bf6e62f2S猫头猫 const search = useSearch(); 28bf6e62f2S猫头猫 29bf6e62f2S猫头猫 const setQuery = useSetAtom(queryAtom); 30bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 31bf6e62f2S猫头猫 const setSearchResultsState = useSetAtom(searchResultsAtom); 32bf6e62f2S猫头猫 33bf6e62f2S猫头猫 useEffect(() => { 3419c8eb6fS猫头猫 getHistory().then(setHistory); 35bf6e62f2S猫头猫 }, []); 36bf6e62f2S猫头猫 37bf6e62f2S猫头猫 return ( 38bf6e62f2S猫头猫 <View style={style.wrapper}> 39bf6e62f2S猫头猫 {history === null ? ( 404060c00aS猫头猫 <Loading /> 41bf6e62f2S猫头猫 ) : ( 42bf6e62f2S猫头猫 <> 434f168b1fS猫头猫 <View style={style.header}> 444f168b1fS猫头猫 <ThemeText fontSize="title" fontWeight="semibold"> 452fac4245S猫头猫 历史记录 462fac4245S猫头猫 </ThemeText> 474f168b1fS猫头猫 <Button 48277c5280S猫头猫 fontColor="textSecondary" 494f168b1fS猫头猫 onPress={async () => { 504f168b1fS猫头猫 await removeAllHistory(); 514f168b1fS猫头猫 getHistory().then(setHistory); 524f168b1fS猫头猫 }}> 534f168b1fS猫头猫 清空 544f168b1fS猫头猫 </Button> 554f168b1fS猫头猫 </View> 562fac4245S猫头猫 <ScrollView 572fac4245S猫头猫 style={style.historyContent} 582fac4245S猫头猫 contentContainerStyle={style.historyContentConainer}> 59b4a87dd6S猫头猫 {history.length ? ( 60b4a87dd6S猫头猫 history.map(_ => ( 61bf6e62f2S猫头猫 <Chip 62bf6e62f2S猫头猫 key={`search-history-${_}`} 63fe32deaaS猫头猫 containerStyle={style.chip} 64bf6e62f2S猫头猫 onClose={async () => { 65bf6e62f2S猫头猫 await removeHistory(_); 66bf6e62f2S猫头猫 getHistory().then(setHistory); 67bf6e62f2S猫头猫 }} 68bf6e62f2S猫头猫 onPress={() => { 69b4a87dd6S猫头猫 setSearchResultsState( 70b4a87dd6S猫头猫 initSearchResults, 71b4a87dd6S猫头猫 ); 72c30d30e1S猫头猫 setPageStatus(PageStatus.SEARCHING); 730b940038S猫头猫 search(_, 1); 74bf6e62f2S猫头猫 addHistory(_); 75bf6e62f2S猫头猫 setQuery(_); 76bf6e62f2S猫头猫 }}> 77bf6e62f2S猫头猫 {_} 78bf6e62f2S猫头猫 </Chip> 79b4a87dd6S猫头猫 )) 80b4a87dd6S猫头猫 ) : ( 81b4a87dd6S猫头猫 <Empty /> 82b4a87dd6S猫头猫 )} 832fac4245S猫头猫 </ScrollView> 84bf6e62f2S猫头猫 </> 85bf6e62f2S猫头猫 )} 86bf6e62f2S猫头猫 </View> 87bf6e62f2S猫头猫 ); 88bf6e62f2S猫头猫} 89bf6e62f2S猫头猫 90bf6e62f2S猫头猫const style = StyleSheet.create({ 91bf6e62f2S猫头猫 wrapper: { 92c446f2b8S猫头猫 width: '100%', 93c446f2b8S猫头猫 maxWidth: '100%', 942fac4245S猫头猫 flexDirection: 'column', 95bf6e62f2S猫头猫 padding: rpx(24), 962fac4245S猫头猫 flex: 1, 97bf6e62f2S猫头猫 }, 984f168b1fS猫头猫 header: { 99bf6e62f2S猫头猫 width: '100%', 1004f168b1fS猫头猫 flexDirection: 'row', 1014f168b1fS猫头猫 paddingVertical: rpx(28), 1024f168b1fS猫头猫 justifyContent: 'space-between', 1034f168b1fS猫头猫 alignItems: 'center', 104bf6e62f2S猫头猫 }, 1052fac4245S猫头猫 historyContent: { 106c446f2b8S猫头猫 width: '100%', 1072fac4245S猫头猫 flex: 1, 1082fac4245S猫头猫 }, 1092fac4245S猫头猫 historyContentConainer: { 1102fac4245S猫头猫 flexDirection: 'row', 1112fac4245S猫头猫 flexWrap: 'wrap', 1122fac4245S猫头猫 }, 113bf6e62f2S猫头猫 chip: { 114bf6e62f2S猫头猫 flexGrow: 0, 115bf6e62f2S猫头猫 marginRight: rpx(24), 116bf6e62f2S猫头猫 marginBottom: rpx(24), 117bf6e62f2S猫头猫 }, 118bf6e62f2S猫头猫}); 119