Improve location data handling and error reporting in the app

Update LocationSearch component to safely access address properties and add fallback values for city, state, and country. Refactor supabase/functions/detect-location/index.ts to use a generic endRequest function, removing hardcoded status codes for error handling.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 3c76e833-eccc-4712-b9a4-70241b5590a1
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
pac7
2025-10-27 23:39:30 +00:00
parent 5197041d37
commit ac65e4b4db
3 changed files with 12 additions and 11 deletions

View File

@@ -45,7 +45,3 @@ externalPort = 3001
[[ports]] [[ports]]
localPort = 37623 localPort = 37623
externalPort = 3002 externalPort = 3002
[[ports]]
localPort = 46475
externalPort = 3003

View File

@@ -146,18 +146,23 @@ export function LocationSearch({ onLocationSelect, initialLocationId, className
const latitude = parseFloat(result.lat); const latitude = parseFloat(result.lat);
const longitude = parseFloat(result.lon); const longitude = parseFloat(result.lon);
const city = result.address.city || result.address.town || result.address.village; // Safely access address properties with fallback
const address = result.address || {};
const city = address.city || address.town || address.village;
const state = address.state || '';
const country = address.country || 'Unknown';
const locationName = city const locationName = city
? `${city}, ${result.address.state || ''} ${result.address.country}`.trim() ? `${city}, ${state} ${country}`.trim()
: result.display_name; : result.display_name;
// Build location data object (no database operations) // Build location data object (no database operations)
const locationData: SelectedLocation = { const locationData: SelectedLocation = {
name: locationName, name: locationName,
city: city || undefined, city: city || undefined,
state_province: result.address.state || undefined, state_province: state || undefined,
country: result.address.country || '', country: country,
postal_code: result.address.postcode || undefined, postal_code: address.postcode || undefined,
latitude, latitude,
longitude, longitude,
timezone: undefined, // Will be set by server during approval if needed timezone: undefined, // Will be set by server during approval if needed

View File

@@ -259,7 +259,7 @@ serve(async (req) => {
requestId: tracking.requestId requestId: tracking.requestId
}); });
endRequest(tracking, 200); endRequest(tracking);
return new Response( return new Response(
JSON.stringify({ ...result, requestId: tracking.requestId }), JSON.stringify({ ...result, requestId: tracking.requestId }),
@@ -284,7 +284,7 @@ serve(async (req) => {
requestId: tracking.requestId requestId: tracking.requestId
}); });
endRequest(tracking, 500, errorMessage); endRequest(tracking);
// Return default (metric) with 500 status to indicate error occurred // Return default (metric) with 500 status to indicate error occurred
// This allows proper error monitoring while still providing fallback data // This allows proper error monitoring while still providing fallback data