check
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,9 @@ const {
|
||||
} = require('../../../utils/blockVisibility')
|
||||
|
||||
const NEARBY_RADIUS_METERS = 5000
|
||||
const MIN_RADIUS_METERS = 5000
|
||||
const MAX_RADIUS_METERS = 50000
|
||||
const RADIUS_STEP_METERS = 5000
|
||||
|
||||
function haversineMeters(lat1, lon1, lat2, lon2) {
|
||||
const toRad = (deg) => (deg * Math.PI) / 180
|
||||
@@ -22,6 +25,13 @@ function parseCoord(value) {
|
||||
return Number.isFinite(n) ? n : null
|
||||
}
|
||||
|
||||
function parseRadiusMeters(value) {
|
||||
const n = parseFloat(value)
|
||||
if (!Number.isFinite(n)) return NEARBY_RADIUS_METERS
|
||||
const clamped = Math.min(Math.max(n, MIN_RADIUS_METERS), MAX_RADIUS_METERS)
|
||||
return Math.round(clamped / RADIUS_STEP_METERS) * RADIUS_STEP_METERS
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /users/nearby?lat=&lng=
|
||||
* Requires auth + show_location + valid coords.
|
||||
@@ -32,6 +42,7 @@ const getNearbyUsers = async (req, res, next) => {
|
||||
const userId = String(req.user._id)
|
||||
const lat = parseCoord(req.query.lat)
|
||||
const lng = parseCoord(req.query.lng)
|
||||
const radiusMeters = parseRadiusMeters(req.query.radius)
|
||||
|
||||
if (lat == null || lng == null) {
|
||||
return res.status(422).json({
|
||||
@@ -98,7 +109,7 @@ const getNearbyUsers = async (req, res, next) => {
|
||||
if (peerLat == null || peerLng == null) continue
|
||||
|
||||
const distanceMeters = haversineMeters(lat, lng, peerLat, peerLng)
|
||||
if (distanceMeters > NEARBY_RADIUS_METERS) continue
|
||||
if (distanceMeters > radiusMeters) continue
|
||||
|
||||
nearby.push({
|
||||
_id: uid,
|
||||
@@ -116,7 +127,7 @@ const getNearbyUsers = async (req, res, next) => {
|
||||
nearby.sort((a, b) => a.distanceMeters - b.distanceMeters)
|
||||
|
||||
res.json({
|
||||
radiusMeters: NEARBY_RADIUS_METERS,
|
||||
radiusMeters,
|
||||
users: nearby
|
||||
})
|
||||
} catch (error) {
|
||||
@@ -126,5 +137,8 @@ const getNearbyUsers = async (req, res, next) => {
|
||||
|
||||
module.exports = {
|
||||
getNearbyUsers,
|
||||
NEARBY_RADIUS_METERS
|
||||
NEARBY_RADIUS_METERS,
|
||||
MIN_RADIUS_METERS,
|
||||
MAX_RADIUS_METERS,
|
||||
RADIUS_STEP_METERS
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user