';
const [response, currentPosition] = await Promise.all([
apiGet('/api/mobile/ftth/nearby').catch(() => null),
getCurrentPosition().catch(() => null),
]);
const clients = Array.isArray(response?.clients) ? response.clients : [];
const sortedClients = sortClientsByDistance(clients, currentPosition);
const visibleClients = currentPosition
? sortedClients.filter((client) => client.isNearby)
: sortedClients;
const hiddenFarCount = currentPosition
? sortedClients.filter((client) => client.distanceMeters !== null && !client.isNearby).length
: 0;
if (currentPosition) {
statusBox.className = 'mobile-route-status tone-success';
statusBox.textContent = hiddenFarCount > 0
? `Position détectée: ${formatDistance(currentPosition.accuracy || 0)} de précision environ. ${visibleClients.length} client(s) dans un rayon de ${formatDistance(PROXIMITY_RADIUS_METERS)}. ${hiddenFarCount} client(s) trop éloigné(s) masqué(s).`
: `Position détectée: ${formatDistance(currentPosition.accuracy || 0)} de précision environ. ${visibleClients.length} client(s) dans un rayon de ${formatDistance(PROXIMITY_RADIUS_METERS)}.`;
} else {
statusBox.className = 'mobile-route-status tone-warning';
statusBox.textContent = `Position indisponible ou précision GPS insuffisante. Une précision de ${formatDistance(REQUIRED_GPS_ACCURACY_METERS)} est requise.`;
}
if (!visibleClients.length) {
listBox.innerHTML = `
Aucun client proche exploitable.
${currentPosition
? `Aucun client n’a été trouvé dans un rayon de ${formatDistance(PROXIMITY_RADIUS_METERS)} autour de votre position actuelle.`
: `Les clients apparaîtront ici dès qu’une position avec une précision de ${formatDistance(REQUIRED_GPS_ACCURACY_METERS)} ou mieux sera disponible.`}