diff --git a/web/src/App.tsx b/web/src/App.tsx index bf951a3..e28dae3 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -23,17 +23,34 @@ function useAddressInfo(address: string | undefined) { }); } +// Translate the SearchQuery into the single `address` string that the +// Govmap deals API needs. For block+plot, we lean on the fact that +// Govmap's autocomplete recognises the literal string "גוש N חלקה M" +// and returns parcel coordinates — so the rest of the pipeline (coords +// → polygon → deals) keeps working unchanged. +function dealsSearchAddress(query: SearchQuery | null): string | null { + if (!query) return null; + if (query.mode === "address" && query.address) return query.address; + if (query.mode === "block_plot" && query.block) { + return query.plot + ? `גוש ${query.block} חלקה ${query.plot}` + : `גוש ${query.block}`; + } + return null; +} + function useDeals(query: SearchQuery | null) { + const address = dealsSearchAddress(query); return useQuery({ - queryKey: ["deals", query], + queryKey: ["deals", address], queryFn: () => api.searchDeals({ - address: query!.address!, + address: address!, years_back: 3, radius_meters: 100, max_deals: 50, }), - enabled: !!query && query.mode === "address" && !!query.address, + enabled: !!address, }); } @@ -191,7 +208,7 @@ export default function App() { )} {!deals.isFetching && !deals.error && !deals.data && (