11import { Button , Progress } from "@radix-ui/themes" ;
2- import { useState } from "react" ;
2+ import { useEffect , useState } from "react" ;
33import { VscRunAbove } from "react-icons/vsc" ;
44import {
55 getHouses ,
@@ -25,30 +25,36 @@ export function Root() {
2525 const [ progress , setProgress ] = useState < number > ( 0 ) ;
2626
2727 const lastSavedHouses = useAsync ( ( ) => ofetch < House [ ] > ( new URL ( './tehran.json' , window . location . origin + window . location . pathname ) . href ) ) ;
28- const [ houses , startSearch ] = useAsyncFn ( ( ) => {
29- return getHouses ( filters , ( p ) => {
28+ const [ houses , setHouses ] = useState < House [ ] > ( [ ] ) ;
29+ useEffect ( ( ) => {
30+ setHouses ( lastSavedHouses . value ?? [ ] ) ;
31+ } , [ lastSavedHouses . value ] ) ;
32+
33+ const [ crawlHouses , startCrawl ] = useAsyncFn ( ( ) => {
34+ return getHouses ( filters , ( p , currentHouses ) => {
3035 setProgress ( p ) ;
3136 console . log ( p ) ;
37+ setHouses ( currentHouses ) ;
3238 } ) ;
3339 } , [ filters ] ) ;
3440
3541
3642 return (
3743 < div className = "w-svw h-svh relative" >
3844 < HousesMap
39- houses = { houses . value ?? lastSavedHouses . value ?? [ ] }
45+ houses = { houses ?? [ ] }
4046 mapStyle = { mapStyle ! }
4147 />
4248 < div className = "absolute top-0 left-0 w-full p-2 flex items-center justify-center gap-2 backdrop-contrast-50 backdrop-blur-sm" >
4349 < Progress size = "2" max = { 1 } value = { progress } color = "green" />
4450 < Button
4551 onClick = { ( ) => {
46- startSearch ( ) ;
52+ startCrawl ( ) ;
4753 } }
4854 color = "green"
4955 size = "2"
5056 variant = "classic"
51- loading = { houses . loading }
57+ loading = { crawlHouses . loading }
5258 >
5359 < VscRunAbove />
5460 Start Crawl Divar
0 commit comments