Add frontend POI management and travel time display

POIManager component in FilterPanel for creating/deleting POIs and
triggering distance calculations. PropertyCard shows travel time badges
(walk/cycle/transit) per POI. Map renders POI locations as red markers.
API client extended with POST body support for POI endpoints.
This commit is contained in:
Viktor Barzin 2026-02-08 13:16:32 +00:00
parent bb489c2032
commit 8509a0326f
No known key found for this signature in database
GPG key ID: 0EB088298288D958
9 changed files with 414 additions and 10 deletions

View file

@ -6,6 +6,7 @@ import { ApiError } from '@/types';
export interface RequestOptions {
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
params?: Record<string, string | number | boolean | Date | undefined>;
body?: unknown;
}
/**
@ -35,7 +36,7 @@ export async function apiRequest<T>(
endpoint: string,
options: RequestOptions = {}
): Promise<T> {
const { method = 'GET', params } = options;
const { method = 'GET', params, body } = options;
let url = endpoint;
if (params) {
@ -45,13 +46,19 @@ export async function apiRequest<T>(
}
}
const response = await fetch(url, {
const fetchOptions: RequestInit = {
method,
headers: {
Authorization: `Bearer ${user.accessToken}`,
'Content-Type': 'application/json',
},
});
};
if (body !== undefined) {
fetchOptions.body = JSON.stringify(body);
}
const response = await fetch(url, fetchOptions);
if (!response.ok) {
throw new ApiError(`Error: ${response.status}`, response.status);