seems fine

This commit is contained in:
Andras Schmelczer 2026-05-05 22:29:28 +01:00
parent 48983e3b4b
commit 7a1696541f
37 changed files with 4999 additions and 1242 deletions

View file

@ -178,7 +178,7 @@ export function useHexagonSelection({
);
const fetchPostcodeProperties = useCallback(
async (postcode: string, offset = 0) => {
async (postcode: string, offset = 0, focusAddress?: string) => {
setLoadingProperties(true);
try {
const params = new URLSearchParams({
@ -186,6 +186,9 @@ export function useHexagonSelection({
limit: '100',
offset: offset.toString(),
});
if (focusAddress && offset === 0) {
params.set('focus_address', focusAddress);
}
const filterStr = buildFilterString(filters, features);
if (filterStr) params.append('filters', filterStr);
@ -464,13 +467,20 @@ export function useHexagonSelection({
]);
const handleLocationSearch = useCallback(
(postcode: string, geometry: PostcodeGeometry, lat?: number, lng?: number) => {
trackEvent('Postcode Search');
(
postcode: string,
geometry: PostcodeGeometry,
lat?: number,
lng?: number,
openProperties = false,
focusAddress?: string
) => {
trackEvent(openProperties ? 'Address Search' : 'Postcode Search');
setProperties([]);
setPropertiesTotal(0);
setPropertiesOffset(0);
setUnfilteredAreaCount(null);
setRightPaneTab('area');
setRightPaneTab(openProperties ? 'properties' : 'area');
setLoadingAreaStats(true);
// First try the postcode; if it has no properties, fall back to hexagons
@ -482,6 +492,9 @@ export function useHexagonSelection({
setSelectedPostcodeGeometry(geometry);
setAreaStats(stats);
refreshUnfilteredAreaCount(selection, stats.count);
if (openProperties) {
fetchPostcodeProperties(postcode, 0, focusAddress);
}
return;
}
@ -493,6 +506,7 @@ export function useHexagonSelection({
setSelectedPostcodeGeometry(geometry);
setAreaStats(stats);
refreshUnfilteredAreaCount(selection, stats.count);
setRightPaneTab('area');
return;
}
@ -507,6 +521,7 @@ export function useHexagonSelection({
setSelectedPostcodeGeometry(null);
setAreaStats(hexStats);
refreshUnfilteredAreaCount(selection, hexStats.count);
setRightPaneTab('area');
return;
}
}
@ -519,11 +534,18 @@ export function useHexagonSelection({
setSelectedPostcodeGeometry(null);
setAreaStats(fallbackStats);
refreshUnfilteredAreaCount(selection, fallbackStats.count);
setRightPaneTab('area');
})
.catch((error) => logNonAbortError('Failed to fetch postcode stats', error))
.finally(() => setLoadingAreaStats(false));
},
[resolution, fetchPostcodeStats, fetchHexagonStats, refreshUnfilteredAreaCount]
[
resolution,
fetchPostcodeStats,
fetchHexagonStats,
fetchPostcodeProperties,
refreshUnfilteredAreaCount,
]
);
const handleCurrentLocationSearch = useCallback(