Good changes

This commit is contained in:
Andras Schmelczer 2026-03-11 20:44:34 +00:00
parent 80a5a2a774
commit 791bc6976b
24 changed files with 890 additions and 312 deletions

View file

@ -1,34 +1,19 @@
import { useMemo, useState, useEffect } from 'react';
import { useMemo } from 'react';
import type { FeatureFilters } from '../../types';
import {
buildPropertySearchUrls,
H3_RADIUS_MILES,
type HexagonLocation,
} from '../../lib/external-search';
import { apiUrl, logNonAbortError } from '../../lib/api';
import outcodeIds from '../../lib/rightmove-outcodes.json';
function useRightmoveLocationId(postcode: string | undefined): string | undefined {
const [locationId, setLocationId] = useState<string | undefined>();
const rightmoveOutcodes = outcodeIds as Record<string, string>;
useEffect(() => {
if (!postcode) {
setLocationId(undefined);
return;
}
setLocationId(undefined);
const controller = new AbortController();
fetch(apiUrl('rightmove-location', new URLSearchParams({ postcode })), {
signal: controller.signal,
})
.then((res) => (res.ok ? res.json() : null))
.then((data) => {
if (data?.location_identifier) setLocationId(data.location_identifier);
})
.catch((err) => logNonAbortError('rightmove-location', err));
return () => controller.abort();
}, [postcode]);
return locationId;
function getRightmoveLocationId(postcode: string | undefined): string | undefined {
if (!postcode) return undefined;
const outcode = postcode.trim().split(/\s+/)[0].toUpperCase();
const id = rightmoveOutcodes[outcode];
return id ? `OUTCODE^${id}` : undefined;
}
export default function ExternalSearchLinks({
@ -38,7 +23,7 @@ export default function ExternalSearchLinks({
location: HexagonLocation;
filters: FeatureFilters;
}) {
const rightmoveLocationId = useRightmoveLocationId(location.postcode);
const rightmoveLocationId = getRightmoveLocationId(location.postcode);
const urls = useMemo(
() => buildPropertySearchUrls({ location, filters, rightmoveLocationId }),
[location, filters, rightmoveLocationId]
@ -69,7 +54,7 @@ export default function ExternalSearchLinks({
Rightmove
</a>
) : (
<span className={disabledClass} title="Loading...">
<span className={disabledClass} title="Outcode not recognised">
Rightmove
</span>
)}