@@ -7,17 +7,49 @@ import { Navbar } from "~~/components/address-vision/";
77import { SmallAddressComp } from "~~/components/scaffold-eth" ;
88
99const Home : NextPage = ( ) => {
10- const [ previousAddresses , setPreviousAddresses ] = useState < Address [ ] > ( [ ] ) ;
10+ interface AddressEntry {
11+ address : Address ;
12+ timestamp : number ;
13+ }
14+
15+ const [ previousAddresses , setPreviousAddresses ] = useState < AddressEntry [ ] > ( [ ] ) ;
1116
1217 useEffect ( ( ) => {
1318 const savedAddresses = localStorage . getItem ( "searchedAddresses" ) ;
1419 if ( savedAddresses ) {
15- setPreviousAddresses ( JSON . parse ( savedAddresses ) ) ;
20+ try {
21+ const parsed = JSON . parse ( savedAddresses ) ;
22+
23+ // Handle both old format (array of strings) and new format (array of AddressEntry)
24+ const addresses : AddressEntry [ ] = Array . isArray ( parsed )
25+ ? parsed . map ( item => {
26+ if ( typeof item === "string" ) {
27+ // Convert old format to new format
28+ return {
29+ address : item as Address ,
30+ timestamp : Date . now ( ) ,
31+ } ;
32+ }
33+ return item ;
34+ } )
35+ : [ ] ;
36+
37+ const sortedAddresses = addresses . sort ( ( a , b ) => b . timestamp - a . timestamp ) ;
38+ setPreviousAddresses ( sortedAddresses ) ;
39+
40+ // Save in new format
41+ localStorage . setItem ( "searchedAddresses" , JSON . stringify ( sortedAddresses ) ) ;
42+ } catch ( error ) {
43+ console . error ( "Error parsing saved addresses:" , error ) ;
44+ localStorage . removeItem ( "searchedAddresses" ) ; // Clear invalid data
45+ }
1646 }
1747 } , [ ] ) ;
1848
1949 const removeAddress = ( addressToRemove : string ) => {
20- const updatedAddresses = previousAddresses . filter ( address => address !== addressToRemove ) ;
50+ const updatedAddresses = previousAddresses . filter (
51+ entry => entry . address . toLowerCase ( ) !== addressToRemove . toLowerCase ( ) ,
52+ ) ;
2153 setPreviousAddresses ( updatedAddresses ) ;
2254 localStorage . setItem ( "searchedAddresses" , JSON . stringify ( updatedAddresses ) ) ;
2355 } ;
@@ -27,11 +59,15 @@ const Home: NextPage = () => {
2759 < MetaHeader />
2860 < Navbar />
2961 { previousAddresses . length > 0 && (
30- < div className = "w-full flex flex-grow flex-col items-center md:mt-10 h-52 md:h-8 " >
62+ < div className = "w-full flex flex-grow flex-col items-center md:mt-10 h-52" >
3163 < h2 className = "text-2xl mb-4" > Previous Searches</ h2 >
3264 < div className = "w-full md:w-1/2 flex flex-wrap justify-center items-center gap-4 overflow-y-auto" >
33- { previousAddresses . map ( address => (
34- < SmallAddressComp key = { address } address = { address } removeAddress = { ( ) => removeAddress ( address ) } />
65+ { previousAddresses . map ( entry => (
66+ < SmallAddressComp
67+ key = { entry . address }
68+ address = { entry . address as Address }
69+ removeAddress = { ( ) => removeAddress ( entry . address ) }
70+ />
3571 ) ) }
3672 </ div >
3773 </ div >
0 commit comments